3.Mysql基础名词认识
孙富阳, 江湖人称没人称。多年互联网运维工作经验,曾负责过孙布斯大规模集群架构自动化运维管理工作。擅长Web集群架构与自动化运维,曾负责国内某大型博客网站运维工作。
1.sql_mode
1.作用
保证数据准确 符合常识 例如零年零月是不存在的。是不会被写入数据库的 5.7版本以后启用了该模式
2.如何查看sql_mode信息
mysql> select @@sql_mode;
2.字符集
1.作用
字符的转换
2.查看数据库支持的字符集
mysql> show charset;
8.0 默认:utf8mb4
8.0之前默认:latin1
3.建议字符集
utf8 :最大存储3字节字符,一个中文字符占3个字节,因此可以存中文
utf8mb4:最大存储4字节字符,可以存储emoji(表情包字符)。
3.排序规则
1.作用
影响排序 对于不同的字符集,有不同的排序规则。例如查出来的表是A排在上面还是a排在上面
2.查询支持的排序规则
mysql> show collation;
4.数据类型
1.作用
控制存储数据的格式和规范 例如:某列必须存数字,某列必须存字母等
2.种类
a 数字
整数:
tinyint 1bytes 0~255 -128~127
int 4bytes 0~2^32-1 -2^31~2^31-1 10位数
bigint 8bytes 0~2^64-1 -2^63~2^63-1 20位数
浮点数:
decimal 和金钱有关(精度要求高)的使用decimal
普通的(精度要求不高的),放大N倍,用整数存储。
b字符串
char(10)
varchar(10)
enum(固定值’sd’,’sx’)
1 2 ###下标索引
char(10)和varchar(10)区别
共同点:都是字符串类型,最多都只能存10个字符
不同点:1.char定长(直接分配10个空间,性能好,但是浪费空间),varchar变长(按需分配,节约空间),如果存储变长字符串,如名字,建议使用varchar
2.varchar类型,额外占用1~2个字节,存储字符长度。
c时间类型
例如统计一下年度账单
timestamp时间戳4字节 有时间范围限制1970-2038
datetime 8字节 1000年1月1到9999年12月31
d 二进制(不用)
e json(应用不多,几乎看不到)
5.约束
例如注册账号,有些带星的为必填的,不填就不让注册。
PK primary key 主键 非空且唯一
NN not null 非空
UK unique key 唯一
FK
建议:
1.每张表设置主键,建议是数字自增列
2.尽量对每个列设置非空
6.其他属性
default 默认值
auto_increment 自增长(主键自增列)
unsigned 数字列,无符号(非负数)
comment 注释
未经允许不得转载:孙某某的运维之路 » 3.Mysql基础名词认识
评论已关闭