10.2 MySQL 中的字符集和排序规则
MySQL Server 支持多种字符集。要显示可用的字符集,请使用INFORMATION_SCHEMA
CHARACTER_SETStable 或显示字符集语句。以下是部分 Lists。有关更多完整信息,请参见第 10.10 节“支持的字符集和排序规则”。
mysql> SHOW CHARACTER SET;
+----------+---------------------------------+---------------------+--------+
| Charset | Description | Default collation | Maxlen |
+----------+---------------------------------+---------------------+--------+
| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |
...
| latin1 | cp1252 West European | latin1_swedish_ci | 1 |
| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |
...
| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |
| ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 |
...
| utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 |
...
| binary | Binary pseudo charset | binary | 1 |
...
默认情况下,显示字符集语句显示所有可用字符集。它带有一个可选的LIKE或WHERE
子句,该子句指示要匹配的字符集名称。例如:
mysql> SHOW CHARACTER SET LIKE 'latin%';
+---------+-----------------------------+-------------------+--------+
| Charset | Description | Default collation | Maxlen |
+---------+-----------------------------+-------------------+--------+
| latin1 | cp1252 West European | latin1_swedish_ci | 1 |
| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |
| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |
| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |
+---------+-----------------------------+-------------------+--------+
给定的字符集始终至少具有一个排序规则,大多数字符集具有多个排序规则。要列出字符集的显示归类,请使用INFORMATION_SCHEMA
COLLATIONStable 或SHOW COLLATION语句。
默认情况下,SHOW COLLATION语句显示所有可用的排序规则。它带有一个可选的LIKE或WHERE
子句,该子句指示要显示的排序规则名称。例如,要查看默认字符集latin1
(cp1252 西欧)的归类,请使用以下语句:
mysql> SHOW COLLATION WHERE Charset = 'latin1';
+-------------------+---------+----+---------+----------+---------+
| Collation | Charset | Id | Default | Compiled | Sortlen |
+-------------------+---------+----+---------+----------+---------+
| latin1_german1_ci | latin1 | 5 | | Yes | 1 |
| latin1_swedish_ci | latin1 | 8 | Yes | Yes | 1 |
| latin1_danish_ci | latin1 | 15 | | Yes | 1 |
| latin1_german2_ci | latin1 | 31 | | Yes | 2 |
| latin1_bin | latin1 | 47 | | Yes | 1 |
| latin1_general_ci | latin1 | 48 | | Yes | 1 |
| latin1_general_cs | latin1 | 49 | | Yes | 1 |
| latin1_spanish_ci | latin1 | 94 | | Yes | 1 |
+-------------------+---------+----+---------+----------+---------+
latin1
归类具有以下含义。
Collation | Meaning |
---|---|
latin1_bin | 根据latin1 编码的二进制 |
latin1_danish_ci | Danish/Norwegian |
latin1_general_ci | 多语种(西欧) |
latin1_general_cs | 多语言(ISO 西欧),区分大小写 |
latin1_german1_ci | 德国 DIN-1(字典 Sequences) |
latin1_german2_ci | 德国 DIN-2(电话簿 Order) |
latin1_spanish_ci | Modern Spanish |
latin1_swedish_ci | Swedish/Finnish |
归类具有以下一般 Feature:
-
两种不同的字符集不能具有相同的排序规则。
-
每个字符集都有一个* default collation *。例如,
latin1
和utf8
的默认排序规则分别为latin1_swedish_ci
和utf8_general_ci
。INFORMATION_SCHEMA
CHARACTER_SETStable 和显示字符集语句指示每个字符集的默认排序规则。INFORMATION_SCHEMA
COLLATIONStable 和SHOW COLLATION语句具有一列,该列指示每个排序规则是否为其字符集的默认字符集(如果是Yes
,则为空)。 -
归类名称以它们所关联的字符集的名称开头,通常后跟一个或多个后缀,以 table 示其他归类 Feature。有关命名约定的其他信息,请参见第 10.3.1 节“排序规则命名约定”。
当一个字符集具有多个排序规则时,可能不清楚哪种排序规则最适合给定的应用程序。为避免选择不合适的排序规则,请对代 table 性数据值进行一些比较,以确保给定的排序规则以期望的方式对值进行排序。