Documentation Home

10.3.4 表字符集和排序规则

每个表都有一个表字符集和一个表排序规则。CREATE TABLEand 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_namecollation_name

  • 如果没有指定,则使用字符集 及其默认排序规则。要查看每个字符集的默认排序规则,请使用语句或查询 表。 CHARACTER SET charset_nameCOLLATEcharset_nameSHOW CHARACTER SETINFORMATION_SCHEMA CHARACTER_SETS

  • 如果没有指定,则使用关联的字符集 和排序规则 。 COLLATE collation_nameCHARACTER SETcollation_namecollation_name

  • 否则(既未指定CHARACTER SET也未 COLLATE指定),使用数据库字符集和排序规则。

如果列字符集和排序规则未在单个列定义中指定,则表字符集和排序规则用作列定义的默认值。表字符集和排序规则是MySQL的扩展;标准 SQL 中没有这样的东西。