10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国Ltr)- 36.4 mb
PDF (A4)- 36.4 mb
PDF (RPM)- 35.7 mb
HTML下载(TGZ)- 9.5 mb
HTML下载(Zip)- 9.5 mb
HTML下载(RPM)- 8.2 mb
手册(TGZ)- 235.5 kb
手册(Zip)- 347.0 kb
信息(Gzip)- 3.3 mb
信息(邮政编码)- 3.3 mb
本手册节选

10.2.2元数据UTF-8

元数据关于数据的数据。任何东西描述了数据库,而不是内容是元数据。因此,列名、数据库名、用户名、版本名和大部分字符串都是由显示是元数据。中的表的内容也是如此INFORMATION_SCHEMA因为根据定义,这些表包含关于数据库对象的信息。

元数据的表示必须满足以下要求:

  • 所有元数据必须在相同的字符集中。否则,显示语句也不选择中的表的语句INFORMATION_SCHEMA将正常工作,因为这些操作的结果的同一列中的不同行将在不同的字符集中。

  • 元数据必须包括所有语言中的所有字符。否则,用户将无法使用自己的语言为列和表命名。

为了满足这两个需求,MySQL将元数据存储在Unicode字符集中,即UTF-8。如果您从未使用重音字符或非拉丁字符,这不会导致任何中断。但是如果您这样做,您应该注意元数据是UTF-8格式的。

元数据要求意味着用户()CURRENT_USER ()为SESSION_USER ()SYSTEM_USER ()数据库(),(版本)函数默认使用UTF-8字符集。

服务器设置character_set_system系统变量为元数据字符集的名称:

mysql>显示变量为'character_set_system';+----------------------+-------+ | Variable_name |值  | +----------------------+-------+ | character_set_system | utf8  | +----------------------+-------+

使用Unicode存储元数据可以表示服务器返回列的标题和的结果描述的函数character_set_system默认字符集。当你使用SELECT columnn1 FROM t,这个名字column1的值确定的字符集中从服务器返回到客户机character_set_results系统变量,默认值为use utf8.如果希望服务器以不同的字符集将元数据结果传回,请使用组名称语句强制服务器执行字符集转换。组名称设置character_set_results和其他相关的系统变量。(见第10.4节“连接字符集和排序规则”)。或者,客户机程序可以在从服务器接收到结果后执行转换。由客户机执行转换效率更高,但这个选项并不总是对所有客户机都可用。

如果character_set_results设置为,则不执行转换,服务器使用其原始字符集(由character_set_system).

与元数据一样,从服务器返回到客户机的错误消息将自动转换为客户机字符集。

如果您正在使用(例如)用户()函数在单个语句中进行比较或赋值,不要担心。MySQL为您执行一些自动转换。

SELECT * FROM t1 WHERE USER() = latin1_column;

这是因为内容latin1_column在比较之前自动转换为UTF-8。

INSERT INTO t1 (latin1_column) SELECT USER()

这是因为内容用户()自动转换为latin1作业之前。

尽管SQL标准中没有自动转换,但该标准确实说每个字符集(就支持的字符而言)都是a子集Unicode。因为这是一个众所周知的原则适用于超集的东西也适用于子集,我们相信Unicode的排序规则可以应用于与非Unicode字符串的比较。有关字符串强制转换的更多信息,请参见第10.8.4节,“表达式中的排序强制力”