MySQL基础(二)
2022/2/19 19:11:48
本文主要是介绍MySQL基础(二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
存储引擎
1.概念:存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制 2.查看存储引擎的方式 show engines; 3.mysql支持的存储引擎 MyISAM MySQL5.5之前默认的存储引擎 不支持事务、行级锁和外键,针对数据的操作较于InnoDB不够安全 但是数据的存取速度较于InnoDB更快 InnoDB MySQL5.5之后默认的存储引擎 支持事务、行级锁和外键,针对数据的操作更加安全 memory 基于内存存取数据 速度最快但是断电立刻丢失 blackhole 写入其中的数据都会立刻消失,类似于垃圾处理站 4.存储引擎创建表的不同点 create table t1(id int) engine=myisam; create table t2(id int) engine=innodb; cerate table t3(id int) engine=memory; create table t4(id int) engine=blackhole; ''' MyISAM会创建三个文件 .frm 表结构文件 .MYD 表数据文件 .MYI 表索引文件(索引是用来加快数据查询的) InnoDB会创建两个文件 .frm 表结构文件 .ibd 表数据和表索引文件 memory .frm 表结构文件 blackhole .frm 表结构文件 '''
MySQL基本数据类型
1.整型 tinyint smallint int bigint 不同的int类型能够存储的数字范围是不一样的 是否存在负数(正负号需要占一个比特位) # 移除正负号 create table t6(id tinyint unsigned); 2.浮点型 float double decimal float(255,30) # 总共255位 小数位占30位 double(255,30) # 总共255位 小数位占30位 decimal(65,30) # 总共65位 小数位占30位 # 三者的精确度不一样 float < double < decimal 3.字符类型 char(4) 定长类型,最多只能存四个字符,多了报错少了自动空格填充至四个 varchar(4) 变长类型,最多只能存四个字符,多了报错少了有几个则存几个 # 针对5.6版本超出范围不会报错,而是自动帮你截取并保存(此行为不合理) 方式1:修改配置文件(永久) 方式2:命令修改(暂时) show variables like '%mode%' set session # 当前窗口有效 set global # 当前服务端有效 set global sql_mode='strict_trans_tables' 修改完毕后退出客户端重新进入即可 再次执行上述命令,会直接报错 # char_length() 统计某个字段数据的长度 '''底层确实会填充,但是取出来的时候又会自动去除''' set global sql_mode='strict_trans_tables,pad_char_to_full_length'
char与varchar的对比
char 优势:整存整取 速度快 劣势:浪费存储空间 varchar 优势:节省存储空间 劣势:存取数据的速度较char慢 补充:在创建字段的时候可以加上相应的注释 create table t9(id int comment '序号',name char(4) comment '姓名');
整形中括号内数字的作用
create table t10(id int(3)); insert into t10 values(4444444); ''' 在整型中括号内的数字并不是用来限制存储的长度,而是用来控制展示的长度 在定义整型字段的时候,不需要自己添加数字,使用默认的就可以 ''' create table t11(id int(3) zerofill); # 宽度为3,不足用0补足 insert into t11 values(4); # 004 # 整型比较的特殊,是唯一一个不是用来限制存储长度的类型
枚举与集合类型
枚举enum() 多选一 create table user(id int,name varchar(32),gender enum('male','female')); insert into user values(1,'ldb','male'); 集合set() 多选多(包含了多选一) create table userinfo(id int,name char(16),hoby set('basketball','football','reading')); insert into userinfo values(1,'ldb','basketball,reading');
日期类型
date 年月日 datetime 年月日时分秒 time 时分秒 year 年份 create table client(id int,name varchar(32),reg_time date,birth datetime,study_time time,join_time year); insert into client values(1,'ldb','2000-11-11','2000-1-21 11:11:11','11:11:11',1997);
创建表的完整语法
create table 表名(字段名1 字段类型(数字) 约束条件,...); ''' 1.字段名和字段类型是必须的 2.数字和约束条件是可选的,并且约束条件可以有多个 空格隔开即可 3.最后一个语句的结尾不要加逗号 '''
约束条件
unsigned # 让数字没有正负号 zerofill # 多余的使用数字0填充 not null # 非空 ''' 新增数据的方式 方式1:按照字段顺序一一传值 insert into user values(值1,值2,...); 方式2:自定义传值顺序 insert into user(name,id) values('ldb',1); 在MySQL中不传数据,会使用关键字NULL填充意思就是空 ''' create table t3(id int,name varchar(32) not null); default # 默认值 create table t4(id int,name varchar(32) default 'ldb'); unique # 唯一值 # 单列唯一 create table t5(id int,name varchar(32) unique); # 联合唯一 create table t6(id int,host varchar(32),port int,unique(host,port)); primary key # 主键 ''' 从约束层面上来说,相当于是not null+unique(非空且唯一) 在此基础上还可以加快数据的查询 InnoDB存储引擎规定了一张表必须有且只有一个主键 因为InnoDB是通过主键的方式来构造的 如果没有设置主键 情况1:没有主键和其它约束条件 InnoDB会采用隐藏的字段作为主键,不能加快数据的查询 情况2:没有主键但是有非空且唯一的字段,自动将该字段升级为主键 create table t7(id int,age int not null unique,pwd int not null unique); create table user(id int primary key,name varchar(32)); ''' auto_increment # 自增 ''' 由于主键类似于数据的唯一标识,并且主键一般都是数字类型 在添加数据的时候不可能记住接下来的序号是多少 ''' create table user1(id int primary key auto_increment,name varchar(32));
自增的特性
自增不会因为删除操作而回退 delete from无法影响自增 如果想要重置需要使用truncate关键字 truncate 表名 # 清空表数据并且重置主键
这篇关于MySQL基础(二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20MySQL集群部署教程:入门级详解
- 2024-11-20MySQL集群教程:入门与实践指南
- 2024-11-20部署MySQL集群教程:新手入门指南
- 2024-11-20MySQL读写分离教程:轻松入门
- 2024-11-20部署MySQL集群入门:一步一步搭建你的数据库集群
- 2024-11-19部署MySQL集群学习:入门教程
- 2024-11-19如何部署MySQL集群:新手入门教程
- 2024-11-19Mysql安装教程:新手必看的详细安装指南
- 2024-11-18Mysql安装入门:新手必读指南
- 2024-11-18MySQL事务MVCC原理入门详解