这是我参与8月更文挑战的第10天,活动详情查看:8月更文挑战
前言
在建表的时候每个字段都对应着自己的数据类型,那么这些数据类型又是根据什么来决定的,根据什么来设置存储空间大小,想要知道这些,我们先过一下数据库的数据类型有哪些。
数据类型的选择
在确定选择什么数据类型的的时候我们应该明确一点,字段类型的优先级是什么样的?
字段类型优先级
- 1. 数字类型
- 2. 日期类型与二进制类型
- 3. 字符串类型
整数类型
整数类型也是我们最常用的数据类型之一,在这里我们需要注意的是在具体使用场景下,如果可以确定不存在负数的情况下,可以设置为无符号的整型,这样可以扩大我们的取值范围。采用哪种整型,应当尽量做到在满足业务场景的情况下,去最小的存储空间的类型。
实数类型
这里一定要注意的是,涉及到计算的字段一定要采用DECIMAL类型,其它类型计算的时候会出现失真的情况,可能造成严重的后果。
VARCHAR类型
VARCHAR变体长度,根据实际内容保存数据
- 使用时应该最小的符合需求的长度
VARCHAR(255)
以下,使用时额外的一个字节保存长度VARCHAR(255)
以上使用额外2个字节保存长度VARCHAR(5)
和VARCHAR(200)
虽然都是使用额外的一个字节保存长度,但是他们在内存占用不同,在内存中存储是定长的,可以理解为开辟的内存空间不一样VARCHAR
变更长度时会出现锁表 使用场景
- 适合存储长度波动大的数据 博客文章,评论,留言等不确定存储长度的数据
- 字符串很少被更新的场景
- 适合保存多字节字符
CHAR
属于定长数据
- 最大长度255 2, 自动删除末尾空格
- 检索效率比
VARCHAR
高
使用场景
- 存储长度波动不大的数据 MD5摘要
- 存储短字符串
- 适合存储经常更新的字符串
DATETIME 日期类型
固定占用8个字节
- 与时区无关
- 可以存到毫秒
- 可保存时间范围大
注意:不要使用字符串存储日期类型,会导致数据库自带的一些函数无法直接使用
TIMESTAMP 时间戳
占用四个字节
- 时间范围 1970-01-01 - 2038-01-19
- 精确到秒
- 采用整形存储
- 依赖于时区
- 自动更新timestamp列的值
总结
了解了这些日常开发中常用的数据类型,以及他们的优缺点,之后有助于我们在建表时合理的设置字段的数据类型,在设计方面对数据库进行优化,提升性能。