MySQL 8.3 Release Notes
每个表都有一个表字符集和一个表排序规则。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_nameCOLLATE,则使用字符集collation_namecharset_name和排序规则collation_name。 -
如果仅指定了
CHARACTER SET而没有指定charset_nameCOLLATE,则使用字符集charset_name和其默认排序规则。要查看每个字符集的默认排序规则,请使用SHOW CHARACTER SET语句或查询INFORMATION_SCHEMACHARACTER_SETS表。 -
如果仅指定了
COLLATE而没有指定collation_nameCHARACTER SET,则使用与collation_name相关的字符集和排序规则collation_name。 -
否则(既没有指定
CHARACTER SET也没有指定COLLATE),则使用数据库字符集和排序规则。
表字符集和排序规则将作为列定义的默认值,如果列字符集和排序规则在单个列定义中没有指定。表字符集和排序规则是 MySQL 扩展;标准 SQL 中没有这些概念。