每个表都有表字符集和表排序规则。CREATE TABLE 和 ALTER TABLE 语句具有用于指定表字符集和排序规则的可选子句:Every table has a table character set and a table collation. The
CREATE TABLE and
ALTER TABLE statements have
optional clauses for specifying the table character set and
collation:
CREATE TABLEtbl_name(column_list) [[DEFAULT] CHARACTER SETcharset_name] [COLLATEcollation_name]] ALTER TABLEtbl_name[[DEFAULT] CHARACTER SETcharset_name] [COLLATEcollation_name]
示例:Example:
CREATE TABLE t1 ( ... ) CHARACTER SET latin1 COLLATE latin1_danish_ci;
MySQL 以以下方式选择表的字符集和排序规则:MySQL chooses the table character set and collation in the following manner:
如果同时指定了
CHARACTER SET charset_name和COLLATE collation_name,将使用字符集charset_name和校对规则collation_name。If bothCHARACTER SETandcharset_nameCOLLATEare specified, character setcollation_namecharset_nameand collationcollation_nameare used.如果指定了
CHARACTER SET charset_name而未指定COLLATE,则使用字符集charset_name及其默认排序规则。要查看每个字符集的默认排序规则,请使用SHOW CHARACTER SET语句或查询INFORMATION_SCHEMACHARACTER_SETS表。IfCHARACTER SETis specified withoutcharset_nameCOLLATE, character setcharset_nameand its default collation are used. To see the default collation for each character set, use theSHOW CHARACTER SETstatement or query theINFORMATION_SCHEMACHARACTER_SETStable.如果指定了
COLLATE collation_name而没有指定CHARACTER SET,则使用与collation_name相关联的字符集和排序规则collation_name。IfCOLLATEis specified withoutcollation_nameCHARACTER SET, the character set associated withcollation_nameand collationcollation_nameare used.否则(既未指定
CHARACTER SET,也未指定COLLATE),将使用数据库的字符集和排序规则。Otherwise (neitherCHARACTER SETnorCOLLATEis specified), the database character set and collation are used.
如果在各个列定义中没有指定列的字符集和校对规则,则表的字符集和校对规则将作为列定义的默认值。表的字符集和校对规则是 MySQL 的扩展;在标准 SQL 中不存在这样的概念。The table character set and collation are used as default values for column definitions if the column character set and collation are not specified in individual column definitions. The table character set and collation are MySQL extensions; there are no such things in standard SQL.