写点什么

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

用户头像
xzy
关注
发布于: 2020 年 12 月 02 日
关于Mysql常用数据类型的小抄



1. 选择数据类型的优先级



  1. 数字类型 > 日期、二进制类型 > 字符类型

  2. 占用空间小的类型 > 占用空间大的类型

2. 整数类型



数字类型默认有符号数,可以通过 UNSIGNED 属性,设置为无符号数



INT(2) 还是会占用4个字节,括号内的数字无实际作用

3. 实数类型

DECIMAL(18,9) 表示可以存储不超过

4. 字符类型

VARCHAR

存储的特点:

  1. 用于存储变长字符串,只占用必要的存储空间

  2. 列的最大长度小于255时,则只占用一个额外字节用于记录字符串的长度

  3. 列的最大长度大于255时,则占用两个额外的字节用于记录字符串的长度(因此 VARCHAR 只能最大存储65535个**::字符::)

  4. 对于VARCHAR列,在插入前都会截断超过列长的尾部空格



适用的场景:列的宽度不均匀,最大的宽度比平均宽度大很多;很少被更新的列,因为VARCHAR列的宽度可变,该列如果更新频繁,可能导致页分裂,影响性能。



注意:VARCHAR(10) 与CHAR(10),括号中的10,都表示该字符串列的宽度,单位为字符,不是字节



CHAR

存储特点:

  • 占用固定的存储空间

  • 最大宽度为255,即最大存储255个字符

  • 对于CHAR列,都会默默地截断插入值中多余的尾部空格



适用场景:

  • 字符串类型,长度近似的列,例如身份证号

  • 字符串类型,长度较短的列

  • 字符串类型,更新频繁的列

5. 时间类型



DATETIME

  1. 存储范围:1000-01–1 00:00:00 到 9999-12-31 23:59:59

  2. 存储精度:

DATATIME = YYYY - MM - DD HH:MM:SS

DATATIME(6) = YYYY -MM - DD HH:MM:SS .fraction

  1. 与时区无关

  2. 占用8个字节



TIMESTAMP

  1. 存储范围:1970-01-01 ~ 2038-01-19

  2. 存储精度:YYYY-MM-DD HH:MM:SS.[fraction]

  3. 与时区相关

  4. 占用4个字节

  5. 在行的数据修改时可以自动修改 TIMESTAMP 列



DATE

  1. 存储范围1000-01-01 ~ 9999-12-31之间的日期

  2. 占用3个字节



TIME

  1. 用于存储时间数据,格式为HH:MM:SS

  2. 占用3个字节



存储日期时间类型的主意事项

  1. 不要使用字符串类型来存储日期时间数据

* 日期类型一般比字符串类型占用空间小

* 查找过滤时,使用日期类型性能好

* 方便使用 mysql 内置的时间日期函数,对时间日期进行处理



  1. 使用 INT 存储时间日期不如使用 TIMESTAMP类型



发布于: 2020 年 12 月 02 日阅读数: 57
用户头像

xzy

关注

还未添加个人签名 2017.10.17 加入

还未添加个人简介

评论

发布
暂无评论
关于Mysql常用数据类型的小抄