MYSQL字段数据类型详解
Posted 敲代码的小小酥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL字段数据类型详解相关的知识,希望对你有一定的参考价值。
一、int类型
包括TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT几种类型。
数据类型 | 存储空间(字节) | 取值范围 |
---|---|---|
TINYINT | 1 | 有符号(signed) : [-128, 127] 无符号(unsigned) :[0, 255] |
SMALLINT | 2 | 有符号(signed) : [-32768, 32767]无符号(unsigned) :[0, 65535] |
MEDIUMINT | 3 | 有符号(signed) : [-8388608, 8388607]无符号(unsigned) :[0, 16777215] |
INT | 4 | 有符号(signed) : [-2147483648, 2147483647]无符号(unsigned) :[0, 4294967295] |
BIGINT | 8 | 有符号(signed) : [-9223372036854775808, 9223372036854775807]无符号(unsigned) :[0, 18446744073709551615] |
我们在设置数字类型时,根据业务场景选择合适的类型,以便于节约空间。需要注意的是,当设置为主键自增时,推荐用bigint类型作为主键,防止数字不够用的情况。
二、浮点类型
- 单精度类型:FLOAT
存储空间:4 字节
精确性:低 - 双精度类型:DOUBLE
占用空间:8 字节
精确性:低,比FLOAT高 - 高精度类型:DECIMAL
占用空间:变长
精确性:非常高
三、字符串类型
几个存储大对象的字段,除了存储大小有区别外,其他的并无大的区别,使用时不用刻意区分。但是存储大对象,性能会下降,尽量避免存储大对象。
如果必须存储大对象,那么可以将其单独弄成一张表进行存储。
BLOB是最常用的大对象存储类型。这种类型只能指定索引前缀,而不能使用其他的普通索引。
varchar是可变长度的,就是规定了多长,如果用不了这么长,则不分配这么长的空间
char是固定长度的,分配了多长就多长。
所以大部分用varchar类型。对于长度固定的字段,可以直接申请为char类型,这样节约了mysql计算可变长度的时间,能一定程度上提升性能,虽然varchar是可变长度,但是mysql也会为其预留出来其规定的长度,所以varchar的数字也不是随便写的。
虽然varchar是可变长度的,但是长度也不能随便写,根据实际情况写各个字段的长度。
四、时间类型
其中,datetime和timestamp表示范围不同,没有特殊业务,我们选择小的timestamp进行存储即可。
五、枚举类型
对于固定的值(非数字类型的),比如性别,省份等,可以设置成枚举类型,这样比varchar或char性能更高。数字类型的不要用枚举,而是用int。因为Mysql的枚举底层用的是数字存储,存数字的话,会造成混淆。
六、JSON类型
Mysql5.7以后的版本,支持json类型,自动校验数据格式,并提供函数处理,搜索json数据中的key,value等操作。
以上是关于MYSQL字段数据类型详解的主要内容,如果未能解决你的问题,请参考以下文章