天天看点

MySQL之常用数据类型MySQL:常用数据类型

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官方文档