表字符集和校验规则
每个表都有一个表字符集和一个表校验规则。该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 latin1COLLATE latin1_danish_ci;
MySQL通过以下方式选择表字符集和校验规则:
- 如果同时和指定,字符集和校验规则使用。
CHARACTER SET charset_name
COLLATE collation_name
charset_name
collation_name
- 如果未指定,则使用字符集及其默认校验规则。要参见每个字符集的默认校验规则,请使用语句或查询表。
CHARACTER SET charset_name
COLLATE
charset_name
SHOW CHARACTER SET
INFORMATION_SCHEMA
CHARACTER_SETS
- 如果不指定,则使用与和归类相关的字符集。
COLLATE collation_name
CHARACTER SET
collation_name
collation_name
- 否则(既未指定,也
CHARACTER SET
未COLLATE
指定),将使用数据库字符集和校验规则。
如果未在单个列定义中指定列字符集和校验规则,则将表字符集和校验规则用作列定义的默认值。表字符集和校验规则是MySQL的扩展;标准SQL中没有这样的东西。