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

    有关 SQL 数据类型的详细描述,请参考《OceanBase 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