10.3.4 table 格字符集和排序规则
每个 table 都有一个 table 字符集和一个 table 排序规则。 CREATE TABLE和ALTER TABLE语句具有用于指定 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]
Example:
CREATE TABLE t1 ( ... )
CHARACTER SET latin1 COLLATE latin1_danish_ci;
MySQL 通过以下方式选择 table 字符集和排序规则:
-
如果同时指定了
CHARACTER SET charset_name
和COLLATE collation_name
,则使用字符集*charset_name
和排序规则collation_name
*。 -
如果指定的
CHARACTER SET charset_name
不带COLLATE
,则使用字符集*charset_name
*及其默认排序规则。要查看每个字符集的默认排序规则,请使用显示字符集语句或查询INFORMATION_SCHEMA
CHARACTER_SETStable。 -
如果指定的
COLLATE collation_name
不带CHARACTER SET
,则使用与*collation_name
和归类collation_name
*关联的字符集。 -
否则(既未指定
CHARACTER SET
也未指定COLLATE
),则使用数据库字符集和排序规则。
如果未在单个列定义中指定列字符集和排序规则,则将 table 字符集和排序规则用作列定义的默认值。table 字符集和排序规则是 MySQL 的扩展;标准 SQL 中没有这样的东西。