📣

TiDB Cloud Serverless 现已更名为
Starter
!此页面由 AI 自动翻译,英文原文请见
此处。

数值类型

TiDB 支持所有 MySQL 数值类型,包括:

整数类型

TiDB 支持所有 MySQL 整数类型,包括 INTEGER / INTTINYINTSMALLINTMEDIUMINTBIGINT。更多信息请参见 MySQL 中的整数数据类型语法

下表总结了字段描述:

语法元素描述
M类型的显示宽度。可选。
UNSIGNEDUNSIGNED。如果省略,则为 SIGNED。
ZEROFILL如果为数字列指定 ZEROFILL,TiDB 会自动为该列添加 UNSIGNED 属性。

下表总结了 TiDB 支持的整数类型所需的存储空间和范围:

数据类型所需存储空间(字节)最小值(有符号/无符号)最大值(有符号/无符号)
TINYINT1-128 / 0127 / 255
SMALLINT2-32768 / 032767 / 65535
MEDIUMINT3-8388608 / 08388607 / 16777215
INT4-2147483648 / 02147483647 / 4294967295
BIGINT8-9223372036854775808 / 09223372036854775807 / 18446744073709551615

BIT 类型

BIT 数据类型。类型为 BIT(M) 时,可以存储 M 位值。M 的取值范围为 1 到 64,默认值为 1:

BIT[(M)]

BOOLEAN 类型

BOOLEAN 类型及其别名 BOOL 等价于 TINYINT(1)。如果值为 0,则视为 False;否则视为 True。与 MySQL 一样,True1False0

BOOLEAN

TINYINT 类型

TINYINT 数据类型存储范围为有符号的 [-128, 127] 和无符号的 [0, 255]

TINYINT[(M)] [UNSIGNED] [ZEROFILL]

SMALLINT 类型

SMALLINT 数据类型存储范围为有符号的 [-32768, 32767] 和无符号的 [0, 65535]

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]

MEDIUMINT 类型

MEDIUMINT 数据类型存储范围为有符号的 [-8388608, 8388607] 和无符号的 [0, 16777215]

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]

INTEGER 类型

INTEGER 及其别名 INT 存储范围为有符号的 [-2147483648, 2147483647] 和无符号的 [0, 4294967295]

INT[(M)] [UNSIGNED] [ZEROFILL]

也可以使用另一种形式:

INTEGER[(M)] [UNSIGNED] [ZEROFILL]

BIGINT 类型

BIGINT 数据类型存储范围为有符号的 [-9223372036854775808, 9223372036854775807] 和无符号的 [0, 18446744073709551615]

BIGINT[(M)] [UNSIGNED] [ZEROFILL]

浮点类型

TiDB 支持所有 MySQL 浮点类型,包括 FLOATDOUBLE。更多信息请参见 Floating-Point Types (Approximate Value) - FLOAT, DOUBLE in MySQL

下表总结了字段描述:

语法元素描述
M数字的总位数
D小数点后数字的位数
UNSIGNEDUNSIGNED。如果省略,则为 SIGNED。
ZEROFILL如果为数字列指定 ZEROFILL,TiDB 会自动为该列添加 UNSIGNED 属性。

下表总结了 TiDB 支持的浮点类型所需的存储空间:

数据类型所需存储空间(字节)
FLOAT4
FLOAT(p)如果 0 <= p <= 24,则为 4;如果 25 <= p <= 53,则为 8
DOUBLE8

FLOAT 类型

FLOAT 类型存储单精度浮点数。允许的值范围为 -3.402823466E+38 到 -1.175494351E-38,0,以及 1.175494351E-38 到 3.402823466E+38。这些是基于 IEEE 标准的理论极限。实际范围可能会因硬件或操作系统的不同而略小。

FLOAT(p) 可用来表示所需的精度(以位为单位)。TiDB 仅用此值来决定使用 FLOAT 还是 DOUBLE 作为结果数据类型。如果 p 在 0 到 24 之间,数据类型为没有 M 和 D 的 FLOAT;如果 p 在 25 到 53 之间,数据类型为没有 M 和 D 的 DOUBLE。结果列的范围与单精度 FLOAT 或双精度 DOUBLE 类型相同。

FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] FLOAT(p) [UNSIGNED] [ZEROFILL]

DOUBLE 类型

DOUBLE 及其别名 DOUBLE PRECISION 存储双精度浮点数。允许的值范围为 -1.7976931348623157E+308 到 -2.2250738585072014E-308,0,以及 2.2250738585072014E-308 到 1.7976931348623157E+308。这些是基于 IEEE 标准的理论极限。实际范围可能会因硬件或操作系统的不同而略小。

DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] DOUBLE PRECISION [(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)] [UNSIGNED] [ZEROFILL]

定点类型

TiDB 支持所有 MySQL 浮点类型,包括 DECIMALNUMERIC。更多信息请参见 Fixed-Point Types (Exact Value) - DECIMAL, NUMERIC in MySQL

字段含义如下:

语法元素描述
M十进制数字的总位数
D小数点后数字的位数
UNSIGNEDUNSIGNED。如果省略,则为 SIGNED。
ZEROFILL如果为数字列指定 ZEROFILL,TiDB 会自动为该列添加 UNSIGNED 属性。

DECIMAL 类型

DECIMAL 及其别名 NUMERIC 存储打包的“精确”定点数。M 表示十进制数字的总位数(精度),D 表示小数点后数字的位数(标度)。小数点和(负数时的)负号不计入 M。如果 D 为 0,则值没有小数点或小数部分。DECIMAL 支持的最大数字位数(M)为 65,最大支持的小数位数(D)为 30。如果省略 D,默认为 0;如果省略 M,默认为 10。

DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL]

文档内容是否有帮助?