mysqljson字段类型_MySQL字段类型最全解析
前⾔:
要了解⼀个数据库,我们必须了解其⽀持的数据类型。MySQL ⽀持⼤量的字段类型,其中常⽤的也有很多。前⾯⽂章我们也讲过 int 及varchar 类型的⽤法,但⼀直没有全⾯讲过字段类型,本篇⽂章我们将把字段类型⼀⽹打尽,讲⼀讲常⽤字段类型的⽤法。
常⽤的字段类型⼤致可以分为数值类型、字符串类型、⽇期时间类型三⼤类,下⾯我们按照分类依次来介绍下。
1.数值类型
数值类型⼤类⼜可以分为整型、浮点型、定点型三⼩类。
整型主要⽤于存储整数值,主要有以下⼏个字段类型:
整型
整型经常被⽤到,⽐如 tinyint、int、bigint 。默认是有符号的,若只需存储⽆符号值,可增加 unsigned 属性。
int(M)中的 M 代表最⼤显⽰宽度,并不是说 int(1) 就不能存储数值10了,不管设定了显⽰宽度是多少个字符,int 都是占⽤4个字节,即int(5)和int(10)可存储的范围⼀样。
存储字节越⼩,占⽤空间越⼩。所以本着最⼩化存储的原则,我们要尽量选择合适的整型,例如:存储⼀些状态值或⼈的年龄可以⽤tinyint ;主键列,⽆负数,建议使⽤ int unsigned 或者 bigint unsigned,预估字段数字取值会超过 42 亿,使⽤ bigint 类型。
浮点型主要有 float,double 两个,浮点型在数据库中存放的是近似值,例如float(6,3),如果插⼊⼀个数123.45678,实际数据库⾥存的是123.457,但总个数还以实际为准,即6位,整数部分最⼤是3位。 float 和 double 平时⽤的不太多。
浮点型
定点型字段类型有 DECIMAL ⼀个,主要⽤于存储有精度要求的⼩数。
定点型
DECIMAL 从 MySQL 5.1 引⼊,列的声明语法是 DECIMAL(M,D) 。 NUMERIC 与 DECIMAL 同义,如果字段类型定义为 NUMERIC ,则将⾃动转成 DECIMAL 。varchar2最大长度
对于声明语法 DECIMAL(M,D) ,⾃变量的值范围如下:
M是最⼤位数(精度),范围是1到65。可不指定,默认值是10。
D是⼩数点右边的位数(⼩数位)。范围是0到30,并且不能⼤于M,可不指定,默认值是0。
例如字段 salary DECIMAL(5,2),能够存储具有五位数字和两位⼩数的任何值,因此可以存储在salary列中的值的范围是从-999.99到999.99。
2.字符串类型
字符串类型也经常⽤到,常⽤的⼏个类型如下表:
字符串类型
其中 char 和 varchar 是最常⽤到的。char 类型是定长的,MySQL 总是根据定义的字符串长度分配⾜够的空间。当保存 char 值时,在它们的右边填充空格以达到指定的长度,当检索到 char 值时,尾部的空格被删除掉。varchar 类型⽤于存储可变长字符串,存储时,如果字符没有达到定义的位数,也不会在后⾯补空格。
char(M) 与 varchar(M) 中的的 M 表⽰保存的最⼤字符数,单个字母、数字、中⽂等都是占⽤⼀个字符。char 适合存储很短的字符串,或者所有值都接近同⼀个长度。例如,char ⾮常适合存储密码的 MD5 值,因为这是⼀个定长的值。对于字符串很长或者所要存储的字符串长短不⼀的情况,varchar 更加合适。
我们在定义字段最⼤长度时应该按需分配,提前做好预估,能使⽤ varchar 类型就尽量不使⽤ text 类型。除⾮有存储长⽂本数据需求时,再考虑使⽤ text 类型。
BLOB 类型主要⽤于存储⼆进制⼤对象,例如可以存储图⽚,⾳视频等⽂件。⽇常很少⽤到,有存储⼆进制字符串时可以考虑使⽤。3.⽇期时间类型
MySQL⽀持的⽇期和时间类型有 YEAR 、TIME 、DATE 、DATETIME 、TIMESTAMP,⼏种类型⽐较如下:
⽇期时间类型
涉及到⽇期和时间字段类型选择时,根据存储需求选择合适的类型即可。
关于 DATETIME 与 TIMESTAMP 两种类型如何选⽤,可以按照存储需求来,⽐如要求存储范围更⼴,则推荐使⽤ DATETIME ,如果只是存储当前时间戳,则可以使⽤ TIMESTAMP 类型。不过值得注意的是,TIMESTAMP 字段数据会随着系统时区⽽改变但 DATETIME 字段数据不会。总体来说 DATETIME 使⽤范围更⼴。
总结:
本篇⽂章主要介绍了 MySQL 中常⽤的字段类型,平时⽤到的字段类型基本都在这⾥了,以⼀张思维导图总结如下:
总结
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论