📣

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

String Types

TiDB 支持所有 MySQL 的字符串类型,包括 CHARVARCHARBINARYVARBINARYBLOBTEXTENUMSET。更多信息请参见 String Types in MySQL

支持的类型

CHAR 类型

CHAR 是固定长度字符串。M 表示列的长度(以字符为单位,而非字节)。M 的取值范围为 0 到 255。与 VARCHAR 类型不同,当数据插入到 CHAR 列时,尾部空格会被截断。

[NATIONAL] CHAR[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]

VARCHAR 类型

VARCHAR 是可变长度字符串。M 表示最大列长度(以字符为单位,而非字节)。VARCHAR 的最大尺寸不能超过 65,535 字节。最大行长度和所使用的字符集共同决定 VARCHAR 的长度。

不同字符集的单个字符占用的字节数可能不同。下表显示了每个字符集中的单个字符所占的字节数,以及每个字符集中的 VARCHAR 列长度范围:

字符集每个字符的字节数最大 VARCHAR 列长度范围
ascii1(0, 65535]
latin11(0, 65535]
binary1(0, 65535]
utf83(0, 21845]
utf8mb44(0, 16383]
[NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name]

TEXT 类型

TEXT 是可变长度字符串。最大列长度为 65,535 字节。可选的 M 参数以字符为单位,用于自动选择最合适的 TEXT 类型。例如 TEXT(60) 会生成一个 TINYTEXT 类型,最多可存储 255 字节,适合存储最多 60 个字符(每个字符最多 4 字节,4×60=240)。不建议使用 M 参数。

TEXT[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]

TINYTEXT 类型

TINYTEXT 类型类似于 TEXT 类型。区别在于 TINYTEXT 的最大列长度为 255。

TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

MEDIUMTEXT 类型

MEDIUMTEXT 类型类似于 TEXT 类型。区别在于 MEDIUMTEXT 的最大列长度为 16,777,215。但由于 txn-entry-size-limit 的限制,TiDB 中单行的最大存储大小默认为 6 MiB,可以通过修改配置将其提高到 120 MiB。

MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

LONGTEXT 类型

LONGTEXT 类型类似于 TEXT 类型。区别在于 LONGTEXT 的最大列长度为 4,294,967,295。但由于 txn-entry-size-limit 的限制,TiDB 中单行的最大存储大小默认为 6 MiB,可以通过修改配置将其提高到 120 MiB。

LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

BINARY 类型

BINARY 类型类似于 CHAR 类型。区别在于 BINARY 存储二进制字节字符串。

BINARY(M)

VARBINARY 类型

VARBINARY 类型类似于 VARCHAR 类型。区别在于 VARBINARY 存储二进制字节字符串。

VARBINARY(M)

BLOB 类型

BLOB 是大型二进制文件。M 表示最大列长度(以字节为单位),范围为 0 到 65,535。

BLOB[(M)]

TINYBLOB 类型

TINYBLOB 类型类似于 BLOB 类型。区别在于 TINYBLOB 的最大列长度为 255。

TINYBLOB

MEDIUMBLOB 类型

MEDIUMBLOB 类型类似于 BLOB 类型。区别在于 MEDIUMBLOB 的最大列长度为 16,777,215。但由于 txn-entry-size-limit 的限制,TiDB 中单行的最大存储大小默认为 6 MiB,可以通过修改配置将其提高到 120 MiB。

MEDIUMBLOB

LONGBLOB 类型

LONGBLOB 类型类似于 BLOB 类型。区别在于 LONGBLOB 的最大列长度为 4,294,967,295。但由于 txn-entry-size-limit 的限制,TiDB 中单行的最大存储大小默认为 6 MiB,可以通过修改配置将其提高到 120 MiB。

LONGBLOB

ENUM 类型

ENUM 是一种字符串对象,其值从在创建表时显式列出允许值的列表中选择。语法如下:

ENUM('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name] # 例如: ENUM('apple', 'orange', 'pear')

ENUM 数据类型的值以数字存储。每个值根据定义顺序转换为数字。在前述示例中,每个字符串映射为一个数字:

数字
NULLNULL
''0
'apple'1
'orange'2
'pear'3

更多信息请参见 the ENUM type in MySQL

SET 类型

SET 是一种字符串对象,可以包含零个或多个值,每个值必须从在创建表时指定的允许值列表中选择。语法如下:

SET('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name] # 例如: SET('1', '2') NOT NULL

在示例中,以下任意值都可以是有效的:

'' '1' '2' '1,2'

在 TiDB 中,SET 类型的值会被内部转换为 Int64。每个元素的存在用二进制表示:0 或 1。对于指定为 SET('a','b','c','d') 的列,其成员对应的十进制和二进制值如下:

成员十进制值二进制值
'a'10001
'b'20010
'c'40100
'd'81000

在这种情况下,元素 ('a', 'c') 的二进制表示为 0101

更多信息请参见 the SET type in MySQL

文档内容是否有帮助?