MySQL:常用数据类型
介绍
为了更高效和规范的管理数据,MySQL定义了一些数据类型。比如:数值型、字符型、日期类型、字节类型
MySQL数据类型
数值类型
整数类型
tinyint 1字节 0~255
smallint 2字节 0~2的16次方-1
mediumint 3字节 0~2的24次方-1
int 4字节 0~2的32次方-1
bigint 8字节 0~2的64次方-1
备注:整数类型比较简单,但是它的选择也比较多,开发时注意选择范围即可。
浮点型(非精确类型)
MySQL数据库支持两种浮点类型:单精度的float和双精度的double.它们都无法保证运算的正确性
float(7,3) 表示一共显示7位,保留小数点后面3位数
备注:开发中不推荐使用浮点型
高精度型(decimal和numeric)
decimal和numeric类型在MySQL中被视为相同的类型,可以用以保存精确的值,比如工资、商品单价等。
decimal(M,D)
备注:通常价格、工资等字段使用这种类型
位类型
位类型即bit数据类型,可用来保存位字段的值。
比较少用
总结:数值类型总体来说比较简单,常用的是整数和numeric类型
字符类型
char和varchar类型
chra(N) 表示定长字符 N取值0~255
varchar(N) 表示变长字符 N取值0~2的16次方-1
char和varchar是最常用的两种字符类型,varchar更为常用
有点类似字符数组
blob和text
blob是用来存储二进制大数据类型的,blob可以根据存储大小不同选择不同的类型。有tinyblob、blob、mediumblob、longblob四种。
text是用来存储文本大数据类型的,同blob一样也有四种选择。
备注:bolo和text实际开发中都比较少使用,因为数据库的资源实在太宝贵了,通常不会存储这种大资源,可以选择文件系统或Mongodb来存储。
binary和varbinary类型
binary和varbinary都是用来存储二进制的字符(字节)
有点类似字节数组
enum和set
enum和set类型都是集合类型,不同的是enum可以枚举65536个元素,set类型最多枚举64个元素
备注:这两种数据类型使用的并不多
总结:
对于有的字段是类型选择的,比如性别、订单类型之类的.
我个人是比较喜欢使用varchar类型的,不喜欢使用整数然后映射,我觉得能够简单直接就别拐弯抹角。
日期类型
DateTime 8个子节
TimeStamp 4个子节
Date 3个子节
Year 1个子节
Time 1个子节
备注:TimeStamp和DateTime显示时间格式是相同的,显示范围不同.
TimeStamp类型可以设置自动更新时间为当前时间。
这也是建表时比较常用的一个类型。
备注:实际开发中通常选择TimeStamp来作为时间类型的字段,但是也有选择使用int作为存储时间的字段的,存储unix时间戳值。
总结
备注:数据库建表阶段的数据类型选择至关重要,直接影响着以后长期的开发。
如果在开发之后再次要修改字段数据类型,那成本将会很高。为了减少编码问题,推荐将数据库的默认字符集设置为UTF-8.
其实MySQL建表常用的数据类型就是整数、numeric、日期类型和字符类型,尤其字符类型使用非常广泛。
MySQL5.7之后多了一种数据类型JSON数据类型
以我个人的经历建表必备的几个字段
主键id、插入时间、更新时间、是否删除标识...业务字段
更新时间最好是timestamp类型,可以根据每次更新自动更新。
参考
1、MySQL官方文档