字符集及数据类型
字符集及数据类型
一、字符集
- 字符集是对SQL语句编码风格的一种标准规范,如果没有统一的字符集,SQL语句在使用的过程中就会混乱。
- 查询所有的字符集:show charset;
- 数据库刚建之初的字符集编码格式是latin1,现在在中国使用的数据库主流字符集是utf8或者utf8mb4,少量会使用gbk。
- utf8和utf8mb4的区别:
- utf8:一个中文占据3个字节,该字符集下不能存储emoji表情数据
- utf8mb4:一个中文占4个字节,该字符集下可以存储emoji表情数据,并且mb4包含普通的utf8
在数据库创建时建议直接选择utf8mb4。
二、校验规则/排序规则(collation)
- 查看所有的排序规则:show collation;
- utf8mb4_general_ci:大小写不敏感
- utf8mb4_bin:大小写敏感
根据不同的场景来选择对于嗯的排序规则
三、数据类型
- 数字类型:
- tinyint:极小的整数类型,范围在0~256
- smallint:较小的整数类型,范围在-215~215
- int类型:常规的整数类型,范围在-232~232-1
- 字符串
- 在生产中使用最多的数据类型
- 类别:
- char(100):定长的数据类型,100表示数据的长度,不管存储的字符串长度多长,都立即分配100个字符长度的存储空间,未占满的空间使用空格来填充
- varchar(num):不定长的数据类型,num表示数据的长度。每次存储数据之前都要先判断一下字符串的长度,按需分配磁盘空间。会单独申请一个字符串长度空间来存储字符串长度(少于255),
如果超过以上的字符串长度会占用两个存储空间。
如何选择这两个数据类型:当数据长度小于255,并且是定长的数据就选择char(100),如果数据长度大于255或者不定长的则选择varchar(num)
- enum(枚举)
- 时间
- datatime:年月日时分秒
- 范围:1000-01-01 00:00:00 到 9999-12-31 23:59:59.999999
- 开始设置的什么时区就一直固定,不会变
- timestamp:年月日时分秒
- 范围:1970-01-01 00:00:00 到 2038-01-19 03:14:07.999999
- 会自动根据所在的时区走
- datatime:年月日时分秒
- 二进制