关于 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 内置的时间日期函数,对时间日期进行处理

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值