首批通过分布式安全可靠测评,为关键业务系统打造
表级字符集和字符序
更新时间:2026-03-30 11:57:05
每张表都有默认字符集和默认字符序。
指定表的字符集和字符序
CREATE TABLE 和 ALTER TABLE 语句具有用于指定表的字符集和字符序,语法如下:
CREATE TABLE table_name (column_list)
[[DEFAULT] CHARACTER SET [=] charset_name]
[COLLATE [=] collation_name]
ALTER TABLE table_name
[DEFAULT] CHARACTER SET [=] charset_name
[COLLATE [=] collation_name]
修改表中已有数据的字符集和字符序的语法如下:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name COLLATE col_name;
示例如下:
obclient> CREATE TABLE test_collation (c1 INT, c2 VARCHAR(32), c3 VARCHAR(32), PRIMARY KEY (c1),UNIQUE KEY idx_test_collation_c2(c2));
Query OK, 0 rows affected
//修改表的字符集和字符序
obclient> ALTER TABLE test_collation CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin;
Query OK, 0 rows affected
// 修改表中已有数据的字符集和字符序,并修改对应的设置
obclient> ALTER TABLE test_collation CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
Query OK, 0 rows affected
选择表的字符集和字符序
OceanBase 数据库通过以下方式选择表的字符集和字符序:
如果同时指定了
CHARACTER SET charset_name和COLLATE collation_name,则使用字符集charset_name和字符序collation_name。如果指定了
CHARACTER SET charset_name但未指定COLLATE,则使用字符集charset_name及其默认字符序。要查看每个字符集的默认字符序,请使用SHOW CHARACTER SET语句。如果指定了
COLLATE collation_name但未指定CHARACTER SET,则使用与collation_name关联的字符集和指定的字符序。如果既不指定
CHARACTER SET也不指定COLLATE,则使用数据库的字符集和字符序。
如果在各个列定义中未指定列字符集和字符序,则表的字符集和字符序将用作列定义的默认值。