列级字符集和字符序
每个字符串类型(即类型为CHAR 、VARCHAR、 TEXT等字符串类型)的列都可以设置列的字符集和列的字符序。
CREATE TABLE table_name (
column_name data_type
[ {CHARACTER SET | CHAR SET | CHARSET} charset ]
[ COLLATE collation ]);
语法说明:
- table_name
表名称。
- data_type
字段的数据类型,字符串类型支持字符集、字符序语法。
- CHARACTER SET | CHAR SET | CHARSET charset
指定表字段的字符集,单独指定时会将字段的字符序设置为指定的字符集的默认字符序。
- COLLATE collation
COLLATE子句指定列的字符序(该列的数据类型必须支持字符序)。如果没有指定,则使用默认的排序规则。
设置方式:
M-Compatibility通过以下方式选择表字段的字符集和字符序:
- default_charset仅支持指定为带有默认字符序的字符集,如果指定的字符集没有默认字符序则报错。
- default_collation仅支持支持的字符序中的字符序,指定其他字符序时会提示报错。
- 如果列的字符序为BINARY ,则表中未指定字符序的文本类型会转换为对应的二进制类型,且字符序设置为BINARY。
- 除BINARY字符集、字符序外,暂不支持列字符集与表级的字符集、字符序不同。
- 分区表的分区键的字符集必须与数据库字符集相同。
示例:
1 2 3 4 5 6 7 8 9 10 11 |
-- 仅设置字符集,字符序为字符集的默认字符序 m_db=# CREATE TABLE test(c1 text CHARSET utf8); -- 仅设置字符序,字符集为字符序关联的字符集 m_db=# CREATE TABLE test(c1 text COLLATE utf8_bin); -- 同时设置字符集与字符序,字符集和字符序需对应 m_db=# CREATE TABLE test(c1 text CHARSET utf8 COLLATE utf8_bin); -- 删除表 m_db=# DROP TABLE test; |