当您创建表的时候,必须指定表记录行的每一列的数据类型,数据类型定义了该列存储数据的合法格式。比如说一个 DATE 类型的列,能存储值“2020-02-20”,但是不能存储值为 2 的数字或者字符串“hello”。

    有关 SQL 数据类型的详细描述,请参考《SQL参考(MySQL模式)》,这里介绍一些常用的数据类型。

    分类

    类型

    备注

    数值类型-整形

    bigint

    有符号:[-2^63, 2^63 - 1]

    无符号:[0, 2^64 - 1]

    int

    integer

    有符号:[-2^31, 2^31-1]

    无符号:[0, 2^32-1]

    smallint

    有符号:[-2^15, 2^15-1]

    无符号:[0, 2^16-1]

    bool

    boolean

    tinyint

    有符号:[-2^7, 2^7-1]

    无符号:[0, 2^8-1]

    数值类型-定点

    decimal(p, s)

    decimal 等同于 numeric

    数值类型-浮点

    float

    有符号:[-2^128, 2^128]

    无符号:[-2^1024, 2^1024]

    精度7位

    double

    有符号:[-2^1024, 2^1024]

    无符号:[0, 2^1024]

    精度15位

    数值类型- 整形/定点/浮点

    number

    number(p)

    number(p, s)

    p(precision) 为精度,s(scale) 表示小数点右边的数字个数,精度最大值为 38,scale 的取值范围为 -84 到 127。

    • p 和 s 都有表示定点数。

    • s 为 0 表示整形。

    • p 和 s 都不指定,表示浮点数,最大精度 38。

    字符类型-变长

    varchar(N)

    最长 256K,字符集 UTF8MB4

    varbinary

    最初 256K,字符集 BINARY

    enum

    最多 65535 个元素,每个元素最长 255 个字符,字符集 UTF8MB4

    set

    最多 64 个元素,每个元素最长255 个字符,字符集 UTF8MB4

    字符类型-定长

    char(N)

    最大 256,字符集 UTF8MB4

    binary

    最大 256,字符集 BINARY

    时间类型

    date

    YYYY-MM-DD,只包含日期

    time

    HH:MM:SS[.fraction],只包含时间。

    datetime

    YYYY-MM-DD HH:MM:SS[.fraction],包含日期时间(不考虑时区)。

    Timestamp

    日期时间(考虑时区)。

    year

    YYYY,[1901, 2155]

    大对象

    Text / blob

    最大 64K

    Longtext /longblob

    最大 48M