
# 列级字符集和字符序
每个字符串类型（即类型为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通过以下方式选择表字段的字符集和字符序：
- 如果同时指定了charset和collation ，则使用字符集charset和字符序collation，且charset和collation需要一一对应，不对应会产生报错。
  
- 如果仅指定了charset，则使用字符集charset及其默认字符序。
  
- 如果仅指定了collation，则使用与collation关联的字符集和指定的字符序。
  
- 如果既不指定charset也不指定collation，则使用表的默认字符集和默认字符序。
  
![](https://support.huaweicloud.com/distributed-m-comp-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
- default_charset仅支持指定为带有默认字符序的字符集，如果指定的字符集没有默认字符序则报错。
- default_collation仅支持[支持的字符序](https://support.huaweicloud.com/distributed-m-comp-devg-v8-gaussdb/gaussdb-81-0032.html#ZH-CN_TOPIC_0000002558805261__zh-cn_topic_0000002526893606_zh-cn_topic_0000001736245100_section1187752712414)中的字符序，指定其他字符序时会提示报错。
- 如果列的字符序为BINARY ，则表中未指定字符序的文本类型会转换为对应的二进制类型，且字符序设置为BINARY。
- 除BINARY字符集、字符序外，暂不支持列字符集与表级的字符集、字符序不同。
- 分区表的分区键的字符集必须与数据库字符集相同。
 
**示例：**
```
-- 仅设置字符集，字符序为字符集的默认字符序
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;
```
