MySQL_02 存储引擎 、基本数据类型、约束条件
概要
1 存储引擎
2 基本数据类型
3 约束条件
4 创建表的完整语法
5 添加表数据的方式
详细
1 存储引擎
1-1 定义: 针对不同数据的而对应的存储机制
- 例如: 生活中不同的文件(txt,pdf,word,mp4),都有对应的处理机制
- MyISAM
- MySQL5.5之前默认的存储引擎
- 数据存储速度快;但是相比InnoDB不安全
- 不支持事务、行级锁和外键
- InnoDB
- 存储数据较MyISAM安全,但是速度较慢
- 支持事务、行级锁和外键
- memory
- 基于内存存储数据
- 存储数据快,但是断电容易丢失
- blackhole(黑洞)
- 写入其中的数据会立刻消失,类似垃圾回收站
- create table t1(id int) engine=myisam;
- create table t2(id int) engine=innodb;
- create table t3(id int) engine=memory;
- create table t4(id int) engine=blackhole;
- MyISAM 会创建三个文件
- .frm 表结构文件
- .MYD 表数据文件
- .MYI 表索引文件(索引是用来加快数据查询的)
- InnoDB会创建两个文件
- .frm 表结构文件
- .ibd 表数据和表索引文件
- merory会创建一个文件
- blackhole会创建一个文件
- 控制展示的长度,不是限制位数
- 实际使用: 针对整型,不需要自己往括号内添加数字,使用默认即可(默认宽度足够显示所有数据)
- 若没有超出3位,默认用0填充至3位;
- 用到约束条件: zerofill - 含义"用0填充"
- 若超出3位,那么有几位存几位(但还是要遵循最大范围)
- float(255,30) #总共255位,小数占30位
- double(255,30) #总共255位,小数占30位;
- decimal(255,30) #总共65位,小数30位;
- 一般float足够
- 若从事业务对精确度要求高,根据情况选择对应的关键字
- 其精确度很低
- 之所以能够从事人工智能和数据分析完全是有牛人开发出功能强大的模块
- char
- 定长
- char(4) 超过四个直接报错,不够四个空格补全
- 优势: 整存整取,速度相对快
- 劣势: 浪费存储空间
- varchar
- 变长
- varchar(4) 超过四个直接保报错,不够有几个存几个
- 劣势: 存取数据速度较char慢
- 1bytes+json 1bytes+tom 1bytes+jerry
- 存的时候需要先制作报头;
- 取的时候也需先读取报头,然后读取真实数据
- 劣势: 节省存储空间
- select char_length(字段名) from 表名;
- 如: select char_length(name) from t1;
- data: 年月日 1997- 3-6
- datatime: 年月日时分秒 1996-3-4 11:11:11
- time: 时分秒 11:11:11
- year: 年 1997
- 含义: 无负号,即无负数
- 见 2-1 #3
- 含义: 用零填充
- 见: 2-1 #4
- 含义: 该字段值对应的值必须有,否则报错
- 含义: 非空且唯一 (相当于 not null + unique)
- 作用: 类似于数据的唯一标识, 一般都是数字类型,可以加快数据的查询
- [MUST]
- 在创建表的时候,一定要设置主键
- 且主键字段一般都是id字段(字段名可以是 uid sid pid cid)
- 例:
- create table user(
- id int primary key,
- name varchar(32)
- );
- 情况1:没有主键和其他约束条件
- InnoDB会采用隐藏的字段作为主键 不能加快数据的查询
- 情况2:没有主键但是有非空且唯一的字段
- 自动将该字段升级为主键
- 自增不会因为删除操作而回退
- delete from无法影响自增
- 如何重置-使用truncate关键字
- truncate 表名 # 清空表数据并且重置主键值