表级字符集和字符序
设置表的默认字符集和默认字符序,创建表操作请参见CREATE TABLE。
CREATE TABLE table_name (column_list) [ [DEFAULT] CHARACTER SET | CHARSET [ = ] default_charset ] [ [DEFAULT] COLLATE [ = ] default_collation ]
修改表的默认字符集和默认字符序,修改不会影响表中当前已经存在的列,修改表操作请参见ALTER TABLE。
ALTER TABLE table_name [ [DEFAULT] CHARACTER SET | CHARSET [ = ] default_charset ] [ [DEFAULT] COLLATE [ = ] default_collation ]
修改表的默认字符集和默认字符序为指定的值,同时将表中的所有字符类型的字段的字符集和字符序设置为指定的值,并将字段里的数据转换为新字符集编码。
ALTER TABLE table_name CONVERT TO CHARACTER SET | CHARSET charset [ COLLATE collation ]
参数说明
- table_name
表名称。
- default_charset
指定表的默认字符集,单独指定时会将表的默认字符序设置为指定的字符集的默认字符序。
- default_collation
指定表的默认字符序,单独指定时会将表的默认字符集设置为指定的字符序对应的字符集。
GaussDB通过以下方式选择表的字符集和字符序:
-
如果同时指定了default_charset 和default_collation,则使用字符集default_charset和字符序 default_collation,且default_charset和default_collation需要对应,不对应会产生报错。
-
如果既不指定default_charset也不指定default_collation,则使用该表所在的模式的默认字符集和默认字符序作为表的默认字符集和表的默认字符序。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
-- 仅设置字符集,字符序为字符集的默认字符序。 gaussdb=# CREATE TABLE test(c1 text) CHARSET utf8; -- 仅设置字符序,字符集为字符序关联的字符集。 gaussdb=# CREATE TABLE test(c1 text) COLLATE utf8_bin; -- 同时设置字符集与字符序,字符集和字符序需对应。 gaussdb=# CREATE TABLE test(c1 text) CHARSET utf8 COLLATE utf8_bin; -- 将表中字符类型字段的数据转化为utf8mb4编码,并设置表和字段的字符序为utf8mb4_bin。 gaussdb=# ALTER TABLE test CONVERT TO CHARSET utf8mb4 COLLATE utf8mb4_bin; -- 修改表的默认字符集为utf8mb4,默认字符序为utf8mb4_bin。 gaussdb=# ALTER TABLE test CHARSET utf8mb4 COLLATE utf8mb4_bin; |