更新时间:2025-09-12 GMT+08:00
分享

库级字符集和字符序

创建库/模式并指定默认字符集和字符序。

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,字符序为该字符集的默认字符序。

  • default_charset仅支持指定为带有默认字符序的字符集,如果指定的字符集没有默认字符序则报错。
  • default_collation仅支持支持的字符序中的字符序,指定其他字符序会报错。
  • 除SQL_ASCII库外,其他字符集的数据库支持多字符集混用。

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
-- 仅设置字符集,字符序为字符集的默认字符序
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;

相关文档