MYSQL字段数据类型详解

Posted 敲代码的小小酥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL字段数据类型详解相关的知识,希望对你有一定的参考价值。

一、int类型

包括TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT几种类型。

数据类型存储空间(字节)取值范围
TINYINT1有符号(signed) : [-128, 127] 无符号(unsigned) :[0, 255]
SMALLINT2有符号(signed) : [-32768, 32767]无符号(unsigned) :[0, 65535]
MEDIUMINT3有符号(signed) : [-8388608, 8388607]无符号(unsigned) :[0, 16777215]
INT4有符号(signed) : [-2147483648, 2147483647]无符号(unsigned) :[0, 4294967295]
BIGINT8有符号(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字段数据类型详解的主要内容,如果未能解决你的问题,请参考以下文章

Mysql的数据类型和字段类型详解

MYSQL字段数据类型详解

MySQL 数据类型 详解

MySQL数据类型详解

mysql数据库中字段为时间类型要怎么啥类型表示

MySQL 数据类型:数值日期和时间字符串等类型详解