基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
表级字符集和字符序
更新时间:2026-07-15 20:56:55
每张表都有默认的字符集和字符序。
指定表的字符集和字符序
使用 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;
以下是示例:
-- 创建表
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
-- 修改表的字符集和字符序
ALTER TABLE test_collation CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin;
Query OK, 0 rows affected
-- 修改表中已有数据的字符集和字符序,并修改对应的设置
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,则使用数据库的字符集和字符序。
如果在各个列定义中未指定列字符集和字符序,则表的字符集和字符序将用作列定义的默认值。
示例
-- 创建表时指定字符集和字符序
CREATE TABLE example_table (
id INT PRIMARY KEY,
name VARCHAR(50)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 查询表字符序
SHOW TABLE STATUS LIKE 'example_table';
在上面的示例中,我们使用 CREATE TABLE 语句创建了一个名为 example_table 的表,并在创建表时指定了字符集为 utf8mb4,字符序为 utf8mb4_general_ci。然后,使用 SHOW TABLE STATUS LIKE 'example_table'; 查询表的状态信息,其中包含了表的字符序信息。
返回结果示例如下:
+---------------+-----------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+----------------------------+----------------------------+------------+--------------------+----------+-------------------------------------------------------------------------------------------------------------------------------------------------+---------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment |
+---------------+-----------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+----------------------------+----------------------------+------------+--------------------+----------+-------------------------------------------------------------------------------------------------------------------------------------------------+---------+
| example_table | oceanbase | 0 | DYNAMIC | 0 | 0 | 0 | NULL | NULL | NULL | NULL | 2024-01-12 14:42:50.149861 | 2024-01-12 14:42:50.149861 | NULL | utf8mb4_general_ci | 0 | ROW_FORMAT = DYNAMIC COMPRESSION = 'zstd_1.3.8' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0 | |
+---------------+-----------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+----------------------------+----------------------------+------------+--------------------+----------+-------------------------------------------------------------------------------------------------------------------------------------------------+---------+
1 row in set