存储引擎与基本数据类型
存储数据的方式不一样 # 查看所有的存储引擎 show engines; # 需要知道的四个引擎 1 myisam -mysql 5.5 及之前的版本默认的存储引擎 -存储数据的速度都非常快,但是功能较少,安全性较低 2 innodb -mysql 5.6 及之后的版本默认的存储引擎 -存取速度没有myisam快,但是功能更多,安全性更高 3 blackhole -往里面写入任何数据都会直接消失(黑洞) 4 menory -用内存存储数据,断电数据消失 # 文件个数不一致 innodb .frm --- 表结构 .ibd --- 表数据和索引 myisam .frm --- 表结构 .MYD --- 表数据 .MYI --- 索引 blackhole .frm --- 表结构 menory .frm --- 表结构
2 mysql基本数据类型
1 整型
tinyint smallint int bigint 1.1 不同的类型能够存储的数字范围不一样 # 结论:所有的整型都是自带符号 ''' (了解)如果不想让整型有符号: create table t6(id tinyint unsigned); insert into t6 values(-129),(256); '''
2 浮点型
float(255, 30) -总共255位,小数占30位 double(255, 30) -总共255位,小数占30位 decimal(65, 30) -总共65位,小数占30位 ''' 精确度不一样 float < double < decimal 在实际开发中,很多时候看似需要用数字存储的数据 其实我们可能都是使用的字符串存储 '''
3 字符类型
char(4) 最大存储四个字符 超出了直接报错 不超过空格填充至四位 varchar(4) 最大存储四个字符,超出了直接报错 不超过有几位存几位
4 日期类型
datetime --- 年月日 时分秒 time --- 时分秒 date --- 年月日 year --- 年
5 枚举与集合
枚举 --- 多选一 ---> (例如性别) create table t1( id int, name varchar(32) gender enum('male','female') ); 集合 --- 多选多(多选一) ---> (例如爱好) create table t2( id int, name varchar(32) hobby set('read','study','music') )
3 严格模式
# 查看sql_mode show variables like '%mode%'; # 修改 get global sql_mode='strict_trans_tables'; # 修改完成后退出客户端重新进入即可 # 验证char是否自动填充 set global sql_mode='strict_trans_tables,pad_char_to_full_length'
4 字符类型对比
char(4) 优点:整存整取 速度快 缺点:浪费硬盘空间 varchar(4) 优点:节省硬盘空间 缺点:速度没有char快 # 各有优缺点,具体结合实际情况 ''' 针对整型字段,括号里面的数字不是用来限制存储长度的而是用来控制显示长度的 ---> 定义整型字段无需自己写括号和数字 '''
5 创建表的完整语法
create table 表名( 字段名1 字段类型(宽度) 约束条件1 约束条件2..., 字段名2 字段类型(宽度) 约束条件, 字段名3 字段类型(宽度) 约束条件 ) ''' 易错点: 1 字段名和字段类型是必须的,宽度和约束条件是可选的 2 约束条件可以有多个 3 最后一个字段结尾不能加逗号,否则报错 '''
愿君前程似锦,归来仍是少年