字符串类型

    定长字符串。 列的长度固定为创建表时声明的长度。当保存 CHAR 值时,不足固定长度的字符串在后面填充空格,以达到指定的长度。M 表示列长度(字符的个数,不是字节的个数)。长度可以为从 0 到 255 的任何值。

    VARCHAR 类型

    变长字符串。M 表示最大列长度(字符的最大个数)。VARCHAR 的空间占用大小不得超过 65535 字节。在选择 VARCHAR 长度时,应当根据最长的行的大小和使用的字符集确定。

    对于不同的字符集,单个字符所占用的空间可能有所不同。以下表格是各个字符集下单个字符占用的字节数,以及 VARCHAR 列长度的取值范围:

    1. [NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name]

    TEXT 类型

    文本串。M 表示最大列长度(字符的最大个数),范围是 0 到 65535。在选择 TEXT 长度时,应当根据最长的行的大小和使用的字符集确定。

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

    TINYTEXT 类型

    类似于 ,区别在于最大列长度为 255。

    1. TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

    类似于 TEXT,区别在于最大列长度为 16,777,215。

    1. MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

    LONGTEXT 类型

    类似于 ,区别在于最大列长度为 4,294,967,295。

    BINARY 类型

      VARBINARY 类型

      类似于 VARCHAR,区别在于 存储的是二进制字符串。

      1. VARBINARY(M)

      二进制大文件。M 表示最大列长度,单位是字节,范围是 0 到 65535。

      1. BLOB[(M)]

      TINYBLOB 类型

      类似于 ,区别在于最大列长度为 255。

      1. TINYBLOB

      MEDIUMBLOB 类型

      类似于 BLOB,区别在于最大列长度为 16777215。

      LONGBLOB 类型

      类似于 ,区别在于最大列长度为 4,294,967,295。

      1. LONGBLOB

      枚举类型是一个字符串,它只能有一个值的字符串对象。其值必须是从一个固定集合中选取,这个固定集合在创建表的时候定义,语法是:

      1. ENUM('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name]

      例如:

      1. ENUM('apple', 'orange', 'pear')

      更多信息参考 MySQL 枚举文档

      SET 类型

      集合类型是一个包含零个或多个值的字符串,其中每个值必须是从一个固定集合中选取,这个固定集合在创建表的时候定义,语法是:

      1. SET('value1','value2',...) [CHARACTER SET charset_name] [COLLATE collation_name]

      例如:

      上面的例子中,这列的有效值可以是:

      1. ''
      2. '1'
      3. '1,2'

      集合类型的值在 TiDB 内部会转换为一个 Int64 数值,每个元素是否存在用一个二进制位的 0/1 值来表示,比如这个例子 SET('a','b','c','d'),每一个元素都被映射为一个数字,且每个数字的二进制表示只会有一位是 1:

      这样对于值为 ('a', 'c') 的元素,其二进制表示即为 0101。

      更多信息参考 。