
# 库级字符集和字符序
创建库/模式并指定默认字符集和字符序。
```
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_option] ...
create_option: [DEFAULT] {
    CHARACTER SET [=] default_charset
  | CHAR SET [=] default_charset
  | CHARSET [=] default_charset
  | COLLATE [=] default_collation
}
```
修改库/模式的默认字符集、字符序属性。
```
ALTER {DATABASE | SCHEMA} db_name
    [create_option] ...
create_option: [DEFAULT] {
    CHARACTER SET [=] default_charset
  | CHAR SET [=] default_charset
  | CHARSET [=] default_charset
  | COLLATE [=] default_collation
}
```
**语法说明：**
- **db_name**
  库/模式名称。
  取值范围：字符串，要符合标识符的命名规范。
  
- **default_charset**
  指定库/模式的默认字符集，单独指定时会将库/模式的默认字符序设置为指定的字符集的默认字符序。
  
- **default_collation**
  指定库/模式的默认字符序，单独指定时会将库/模式的默认字符集设置为指定的字符序对应的字符集。
  
GaussDB通过以下方式选择库/模式的字符集和字符序：
- 如果同时指定了default_charset和default_collation，则使用字符集default_charset和字符序default_collation，且default_charset和default_collation需要对应，不对应时报错。
  
- 如果仅指定了default_charset，则使用字符集default_charset及其默认字符序。
  
- 如果仅指定了default_collation，则使用default_collation字符序和其对应的字符集。
  
- 如果既不指定default_charset也不指定default_collation，则该库/模式字符集同server_encoding，字符序为该字符集的默认字符序。
  
![](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字符集外，暂不支持创建新库/模式的字符集与数据库的server_encoding不同。
 
**示例：**
```
-- 仅设置字符集，字符序为字符集的默认字符序
m_db=# CREATE SCHEMA test CHARSET utf8;
-- 仅设置字符序，字符集为字符序关联的字符集
m_db=# CREATE SCHEMA test COLLATE utf8_bin;
-- 同时设置字符集与字符序，字符集和字符序需对应
m_db=# CREATE SCHEMA test CHARSET utf8 COLLATE utf8_bin;
-- 将test的默认字符集修改为utf8mb4，默认字符序修改为utf8mb4_bin。
m_db=# ALTER SCHEMA test CHARSET utf8mb4 COLLATE utf8mb4_bin;
-- 删除表
m_db=# DROP SCHEMA test;
```
