更新时间:2024-08-20 GMT+08:00

模式级字符集和字符序

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

CREATE SCHEMA schema_name
	[ [DEFAULT] CHARACTER SET | CHARSET [ = ] default_charset ] 
	[ [DEFAULT] COLLATE [ = ] default_collation ];

修改模式的默认字符集、字符序属性。

ALTER SCHEMA schema_name 
    [ [DEFAULT] CHARACTER SET | CHARSET [ = ] default_charset ] [ [DEFAULT] COLLATE [ = ] default_collation ];

参数说明:

  • schema_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,则该模式没有默认字符集和默认字符序。

  • default_charset仅支持指定为带有默认字符序的字符集,如果指定的字符集没有默认字符序则报错。

  • default_collation仅支持指定为MYSQL模式(即sql_compatibility = 'MYSQL')下的字符序,指定其他字符序报错。

  • 暂不支持新建SCHEMA的字符集、字符序与数据库的server_encoding不同。

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
-- 仅设置字符集,字符序为字符集的默认字符序
gaussdb=# CREATE SCHEMA test CHARSET utf8;

-- 仅设置字符序,字符集为字符序关联的字符集
gaussdb=# CREATE SCHEMA test COLLATE utf8_bin

-- 同时设置字符集与字符序,字符集和字符序需对应
gaussdb=# CREATE SCHEMA test CHARSET utf8 COLLATE utf8_bin;

-- 将test的默认字符集修改为utf8mb4,默认字符序修改为utf8mb4_bin。
gaussdb=# ALTER SCHEMA test CHARSET utf8mb4 COLLATE utf8mb4_bin;