关于 Mysql 常用数据类型的小抄

1. 选择数据类型的优先级
- 数字类型 > 日期、二进制类型 > 字符类型 
- 占用空间小的类型 > 占用空间大的类型 
2. 整数类型

数字类型默认有符号数,可以通过 UNSIGNED 属性,设置为无符号数
INT(2) 还是会占用4个字节,括号内的数字无实际作用
3. 实数类型

DECIMAL(18,9) 表示可以存储不超过
4. 字符类型
VARCHAR
存储的特点:
- 用于存储变长字符串,只占用必要的存储空间 
- 列的最大长度小于255时,则只占用一个额外字节用于记录字符串的长度 
- 列的最大长度大于255时,则占用两个额外的字节用于记录字符串的长度(因此 VARCHAR 只能最大存储65535个**::字符::) 
- 对于VARCHAR列,在插入前都会截断超过列长的尾部空格 
适用的场景:列的宽度不均匀,最大的宽度比平均宽度大很多;很少被更新的列,因为VARCHAR列的宽度可变,该列如果更新频繁,可能导致页分裂,影响性能。
注意:VARCHAR(10) 与CHAR(10),括号中的10,都表示该字符串列的宽度,单位为字符,不是字节
CHAR
存储特点:
- 占用固定的存储空间 
- 最大宽度为255,即最大存储255个字符 
- 对于CHAR列,都会默默地截断插入值中多余的尾部空格 
适用场景:
- 字符串类型,长度近似的列,例如身份证号 
- 字符串类型,长度较短的列 
- 字符串类型,更新频繁的列 
5. 时间类型
DATETIME
- 存储范围:1000-01–1 00:00:00 到 9999-12-31 23:59:59 
- 存储精度: 
DATATIME = YYYY - MM - DD HH:MM:SS
DATATIME(6) = YYYY -MM - DD HH:MM:SS .fraction
- 与时区无关 
- 占用8个字节 
TIMESTAMP
- 存储范围:1970-01-01 ~ 2038-01-19 
- 存储精度:YYYY-MM-DD HH:MM:SS.[fraction] 
- 与时区相关 
- 占用4个字节 
- 在行的数据修改时可以自动修改 TIMESTAMP 列 
DATE
- 存储范围1000-01-01 ~ 9999-12-31之间的日期 
- 占用3个字节 
TIME
- 用于存储时间数据,格式为HH:MM:SS 
- 占用3个字节 
存储日期时间类型的主意事项
- 不要使用字符串类型来存储日期时间数据 
* 日期类型一般比字符串类型占用空间小
* 查找过滤时,使用日期类型性能好
* 方便使用 mysql 内置的时间日期函数,对时间日期进行处理
- 使用 INT 存储时间日期不如使用 TIMESTAMP类型 
版权声明: 本文为 InfoQ 作者【xzy】的原创文章。
原文链接:【http://xie.infoq.cn/article/53452136d5604fd594234efb3】。文章转载请联系作者。












 
    
评论