10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 42.0 mb
PDF (A4)- 42.1 mb
手册页(TGZ)- 266.5 kb
手册页(Zip)- 376.2 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

11.3.1字符串数据类型语法

字符串数据类型为字符VARCHAR二进制VARBINARY文本枚举,

在某些情况下,MySQL可能会将字符串列更改为不同于类中给出的类型创建表ALTER TABLE声明。看到第13.1.20.7节“静默列规格更改”

有关字符串列的定义(字符VARCHAR,以及文本类型),MySQL以字符单位解释长度规范。有关二进制字符串列的定义(二进制VARBINARY,以及类型),MySQL以字节单位解释长度规范。

字符串数据类型的列定义字符VARCHAR,文本类型,枚举,和任何同义词)可以指定列的字符集和排序规则:

  • 字符集指定字符集。属性指定字符集的排序规则(如果需要)核对属性,以及任何其他属性。例如:

    创建表t (c1 VARCHAR(20) CHARACTER SET utf8, c2 TEXT CHARACTER SET latin1 COLLATE latin1_general_cs);

    此表定义创建名为c1它有一个字符集use utf8使用该字符集的默认排序规则,以及名为c2它有一个字符集latin1以及区分大小写的(_cs)排序。

    指定字符集和排序规则的规则字符集核对属性中所描述的第10.3.5节“列字符集和排序规则”

    字符集是同义词吗字符集

  • 指定字符集二进制属性将导致该列创建为对应的二进制字符串数据类型:字符就变成了二进制VARCHAR就变成了VARBINARY,文本就变成了.为枚举而且数据类型,这不会发生;它们是按照声明创建的。假设你用下面的定义指定一个表:

    创建表t (c1 VARCHAR(10)字符集二进制,c2 TEXT字符集二进制,c3 ENUM('a','b','c')字符集二进制);

    结果表有这样的定义:

    CREATE TABLE t (c1 VARBINARY(10), c2 BLOB, c3 ENUM('a','b','c') CHARACTER SET binary);
  • 二进制属性是一个非标准的MySQL扩展,它是指定二进制(_bin)列字符集的排序规则(如果没有指定列字符集,则为表默认字符集)。在本例中,比较和排序基于数字字符代码值。假设你用下面的定义指定一个表:

    创建表t (c1 VARCHAR(10) CHARACTER SET latin1 BINARY, c2 TEXT BINARY) CHARACTER SET utf8mb4;

    结果表有这样的定义:

    CREATE TABLE t (c1 VARCHAR(10) CHARACTER SET latin1 COLLATE latin1_bin, c2 TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin) CHARACTER SET utf8mb4;

    在MySQL 8.0中,这种非标准的使用二进制属性是模糊的,因为utf8mb4字符集有多个_bin排序。从MySQL 8.0.17开始,二进制属性已弃用,你应该期望在MySQL的未来版本中删除对它的支持。应用程序应该调整为使用显式_bin排序。

    使用二进制来指定数据类型或字符集保持不变。

  • 美国信息交换标准代码属性是对字符集拉丁文1.旧版MySQL支持,美国信息交换标准代码在MySQL 8.0.28及以后版本中已弃用;使用字符集代替。

  • UNICODE属性是对字符集ucs2.旧版MySQL支持,UNICODE在MySQL 8.0.28及以后版本中已弃用;使用字符集代替。

字符列比较和排序基于分配给列的排序规则。为字符VARCHAR文本枚举,数据类型时,可以使用二进制(_bin)整理或二进制属性导致比较和排序使用底层字符代码值而不是词法排序。

有关在MySQL中使用字符集的更多信息,请参见第十章,字符集,排序规则,Unicode

  • (国家)CHAR (()][字符集charset_name][核对collation_name

    一种固定长度的字符串,在存储时始终用指定长度的空格右填充。表示以字符为单位的列长度。的范围0 ~ 255。如果省略时,长度为1。

    请注意

    字符值被检索,除非PAD_CHAR_TO_FULL_LENGTH启用SQL模式。

    字符是简写字符国家的字符(或其等效的简写形式,NCHAR)是定义a的标准SQL方法字符列应该使用一些预定义的字符集。MySQL使用use utf8如此预定义字符集。第10.3.7节“国家字符集”

    字符的字节类型的别名二进制数据类型。这是一个兼容性特性。

    MySQL允许您创建类型的列CHAR (0).当您必须与依赖于某个列的存在但实际上并不使用其值的旧应用程序兼容时,这非常有用。CHAR (0)当您需要一个只能取两个值的列时,也是相当不错的CHAR(0)为空只占用1位,只能取值而且(空字符串)。

  • (国家)VARCHAR ()[字符集charset_name][核对collation_name

    可变长度的字符串。表示以字符为单位的最大列长度。的范围0 ~ 65,535。的有效最大长度VARCHAR取决于最大行大小(65,535字节,在所有列之间共享)和所使用的字符集。例如,use utf8字符每个字符最多需要三个字节,因此aVARCHAR列,该列使用use utf8字符集最多可以声明为21,844个字符。看到第8.4.7节,“表列数和行大小的限制”

    MySQL存储VARCHAR值为1字节或2字节长度前缀加上数据。长度前缀表示值的字节数。一个VARCHAR如果值不超过255字节,列使用一个长度字节,如果值可能需要超过255字节,则使用两个长度字节。

    请注意

    MySQL遵循标准SQL规范,并且做到了删除尾随空格VARCHAR值。

    VARCHAR是简写性格不同国家VARCHAR标准的SQL方法是定义aVARCHAR列应该使用一些预定义的字符集。MySQL使用use utf8如此预定义字符集。第10.3.7节“国家字符集”NVARCHAR是简写国家VARCHAR

  • 二进制(()]

    二进制类型类似于字符类型,但存储二进制字节字符串而不是非二进制字符串。长度可选表示以字节为单位的列长度。如果省略了,默认值为1。

  • VARBINARY (

    VARBINARY类型类似于VARCHAR类型,但存储二进制字节字符串而不是非二进制字符串。表示以字节为单位的最大列长度。

  • TINYBLOB

    一个最大长度为255 (28−1)字节。每一个TINYBLOB值使用1字节长度的前缀存储,该前缀表示值中的字节数。

  • Tinytext[字符集charset_name][核对collation_name

    一个文本最大长度为255 (28−1)字符。如果值包含多字节字符,则有效最大长度较小。每一个非常小的文本串值使用1字节长度的前缀存储,该前缀表示值中的字节数。

  • BLOB (()]

    一个列,最大长度为65,535 (216−1)字节。每一个值使用2字节长度的前缀存储,该前缀表示值中的字节数。

    长度可选可以给出这种类型。如果这样做,MySQL将创建最小的列输入足够大的值个字节长。

  • 文本(()][字符集charset_name][核对collation_name

    一个文本列,最大长度为65,535 (216−1)字符。如果值包含多字节字符,则有效最大长度较小。每一个文本值使用2字节长度的前缀存储,该前缀表示值中的字节数。

    长度可选可以给出这种类型。如果这样做,MySQL将创建最小的列文本输入足够大的值字符长。

  • MEDIUMBLOB

    一个列的最大长度为16,777,215 (224−1)字节。每一个MEDIUMBLOB值使用3字节长度的前缀存储,该前缀表示值中的字节数。

  • Mediumtext[字符集charset_name][核对collation_name

    一个文本列的最大长度为16,777,215 (224−1)字符。如果值包含多字节字符,则有效最大长度较小。每一个简单值使用3字节长度的前缀存储,该前缀表示值中的字节数。

  • LONGBLOB

    一个列,最大长度为4,294,967,295或4GB (232−1)字节。的有效最大长度LONGBLOB列取决于客户端/服务器协议中配置的最大数据包大小和可用内存。每一个LONGBLOB值使用4字节长度的前缀存储,该前缀表示值中的字节数。

  • 长文本[字符集charset_name][核对collation_name

    一个文本列,最大长度为4,294,967,295或4GB (232−1)字符。如果值包含多字节字符,则有效最大长度较小。的有效最大长度量变列还取决于客户端/服务器协议中配置的最大数据包大小和可用内存。每一个量变值使用4字节长度的前缀存储,该前缀表示值中的字节数。

  • 枚举('value1”、“value2',…)[字符集charset_name][核对collation_name

    枚举。只能有一个值的字符串对象,从值列表中选择value1value2...或者特色菜错误值。枚举值在内部表示为整数。

    一个枚举列最多可以有65,535个不同的元素。

    一个人的最大支持长度枚举元素是<= 255 and (xw) <= 1020,其中元素是字面长度和w字符集中最大长度字符所需的字节数。

  • 设置(“value1”、“value2',…)[字符集charset_name][核对collation_name

    一组。可以有零个或多个值的字符串对象,每个值必须从值列表中选择value1value2...值在内部表示为整数。

    一个列最多可以有64个不同的成员。

    一个人的最大支持长度元素是<= 255 and (xw) <= 1020,其中元素是字面长度和w字符集中最大长度字符所需的字节数。