MySQL各数据类型的特点
MySQL各数据类型的特点
常用的整数类型
常见误区
int(n) 是设置数据最大的显示宽度,所占的存储空间不会改变。
常用的浮点类型
123456789.987654321 = decimal(18,9)占用9个字节
涉及财务等需要精确计算的数据使用decimal类型存储,但同时也会有更大的开销。
常用的时间类型
当我们想存储年份时,也可以使用
int
来存储,但smallint
占2字节比year
类型大
tiemstamp
为啥只到2038
对于timestamp,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。底层表示是时间戳。什么是时间戳?
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至某一时间点的总秒数。
例如北京时间2018-12-08 00:00:00的时间戳是1544198400,就是指从北京时间1970-01-01 08:00:00到2018-12-08 00:00:00已经过去了1544198400秒。
所有如果想要存储的时间大于2038-01-19 03:14:07 UTC 要使用datetime
存储tiemstamp
的优点是设置不同时区下,显示的数据是不一样的,原因就是它的计算原理,上面已经解释了。
常用字符串类型
- char长度固定, 即每条数据占用等长字节空间;适合用在身份证号码、手机号码等。
- varchar可变长度,可以设置最大长度;适合用在长度可变的属性。
- text不设置长度, 当不知道属性的最大长度时,适合用text。
如何为数据选择合适的数据类型
- 优先选择符合存储数据需求的最小数据类型
如:使用INET_ATON
函数将IP地址转化为整型,优化了存储空间 - 谨慎使用
enum
,text
字符串类型 - 同财务相关的数值型类型,必须使用
decimal
类型