MySQL 8.4 Release Notes
12.3.4 表字符集和排序规则
每个表都有一个表字符集和表排序规则。CREATE TABLE
和 ALTER TABLE
语句都有可选的子句,用于指定表字符集和排序规则:
CREATE TABLE tbl_name (column_list)
[[DEFAULT] CHARACTER SET charset_name]
[COLLATE collation_name]]
ALTER TABLE tbl_name
[[DEFAULT] CHARACTER SET charset_name]
[COLLATE collation_name]
示例:
CREATE TABLE t1 ( ... )
CHARACTER SET latin1 COLLATE latin1_danish_ci;
MySQL 按照以下方式选择表字符集和排序规则:
-
如果同时指定了
CHARACTER SET
和charset_name
COLLATE
,则使用字符集collation_name
charset_name
和 排序规则collation_name
。 -
如果只指定了
CHARACTER SET
,则使用字符集charset_name
charset_name
和其默认排序规则。要查看每个字符集的默认排序规则,可以使用SHOW CHARACTER SET
语句或查询INFORMATION_SCHEMA
CHARACTER_SETS
表。 -
如果指定了
COLLATE
,那么与collation_name
collation_name
相关的字符集和排序规则将被使用。 -
否则(既没有指定
CHARACTER SET
也没有指定COLLATE
),将使用数据库字符集和排序规则。
如果在列定义中未指定列字符集和排序规则,表格字符集和排序规则将被用作默认值。表格字符集和排序规则是 MySQL 扩展;标准 SQL 中没有这样的概念。