char
特点
- 最大长度255
- 自动删除末尾的空格
- 检索效率和写效率比varchar,以空间换取时间
应用场景 - 存储长度变化不大的数据
- 存储短字符串且经常更新的数据
varchar
特点
- 数据长度根据实际定义,越小越好
- varchar(n)长度定义少于255则使用额外一个字节保存长度,超过255使用额外两个字节保存长度
- varchar(255) 和 varchar(5)占用的硬盘空间都为一个字节,但是占用的内存空间大小不一致
- varchar在5.6版本之前变更长度或者长度从255变到255以上时,会导致锁表
应用场景 - 存储长度波动较大的数据,如文章
- 字符串很少更新的场景,每次更新后都会重算并使用额外存储空间保存长度
- 适合保存多字节字符串
text
blob
mysql将text和blob当作对象来处理。处理大文本数据,一般不用。
datetime
特点
- 占用8字节
- 时区无关,数据库底层时区配置对datetime无效
- 可保存到毫秒
- 可保存范围大
- 不要使用字符串存储时间类型,占用空间大,损失日期类型函数的便捷性
timestamp
- 占用四个字节
- 时间范围1970-01-01到2038-01-19
- 精确到秒
- 采用整形存储
- 依赖数据库设置的时区
- 自动更新timestamp列的值
date
- 占用三个字节
- 可以使用日期时间函数
- 保存范围为1000-01-01到9999-12-31之间的日期