关于 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】。文章转载请联系作者。
评论