本文内容皆为作者原创,如需转载,请注明出处:
一:存储引擎
在日常生活中有很多中,并且针对不同的文件类型会有对应不同存储方式和处理机制(txt、pdf、word、MP4)
针对不同的数据,应该有对应的不同的处理机制来存储
存储引擎 就是 不同的处理机制
MySQL主要存储引擎:
Innodb:
MySQL5.5版本及之后 默认的存储引擎
Myisan:
MySQL5.5版本之前 默认的存储引擎
速度要比Innodb更快,但是我们更注重的是 数据的安全
memory:
内存引擎(数据全部存放在 内存中)断电数据就丢失
blackhole:
无论存什么,都立刻消失(黑洞)
命令:
# 查看所有的存储引擎
show engines;
# 不同的存储引擎 在存储表的时候 异同点:
create table t1(id int) engine=innodb;
create table t2(id int) engine=myisam;
create table t3(id int) engine=blackhole;
create table t4(id int) engine=memory;
# 文件分析(在mysql的data的数据库里)
t1.frm 表结构 innodb
t1.ibd 表数据 innodb
t2.frm 表结构 myisam
t2.MYD 表数据 myisam
t2.MYI 索引(index,类似于 书的目录,基于目录查找对应的数据 速度更快) myisam
t3.frm 表结构 blackhole
t4.frm 表结构 memory 数据存在内存
# 存数据
insert into t1 values(1);
insert into t2 values(2);
insert into t3 values(3);
insert into t4 values(4);
# 查看数据
select * from t1; 有数据
select * from t2; 有数据
select * from t3; 没数据
select * from t4; 有数据,但是重启服务或者断电后 会消失
创建表的完整语法
# 语法
create table 表名(
字段名1 类型(宽度) 约束条件1,
字段名2 类型(宽度) 约束条件2,
字段名3 类型(宽度) 约束条件3
)
# 注意
1.在同一张表中 字段名不能重复
2.宽度 和 约束条件 是可选的(可写可不写)而字段名 和 字段类型 是必须的
3.约束条件写的话 也支持写多个:
字段名 类型(宽度) 约束条件1 约束条件2 ......,
create table t1(id); # 报错
create table t1(id int);
4.最后一行 不能有逗号,不然会报错
create table t1(
id int,
name char(8),
); # 报错
补充:
# 宽度
一般情况下,是对存储数据的限制
create table t7(name char); # 默认宽度是1,1个字符
inert into t1 values('jason');
inert into t1 values(null); # 关键字null 允许为空
针对不同的版本 会出现不同的效果:
5.6版本默认没有开启严格模式 规定只能存一个字符 如果你给了多个字符 那么我会自动帮你截取
5.7或以上版本开启了严格模式 规定存几个字符 如果超过了 就会报错 Data too long for...
# 严格模式到底开不开呢?
MySQL5.7之后的版本默认都是开启严格模式的
# 使用数据库的准则:
能尽量少的让数据库干活 就尽量少 不要给数据库增加额外的压力
# 约束条件:null not null
create table t8(id int, name char not null);
insert into t8 values(1, 'jsaon');
insert into t8 values(2, null); # 会报错
insert into t8 values(3); # 也会报错
# 宽度 和 约束条件到底是什么关系?
宽度 是用来限制数据的存储
约束条件 是在宽度的基础之上 增加额外的约束
二:数据类型
整型:
浮点型:
字符类型:
日期类型:
枚举 与 集合类型:
约束条件:
三:
四: