基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
数据库级字符集和字符序
更新时间:2026-07-15 20:56:55
每个数据库都有默认的字符集和字符序。
指定数据库的字符集和字符序
使用 CREATE DATABASE 语句创建数据库或使用 ALTER DATABASE 语句修改数据库时,可以指定数据库的字符集和字符序。以下是语法示例:
CREATE DATABASE database_name
[DEFAULT] CHARACTER SET [=] charset_name
[[DEFAULT] COLLATE [=] collation_name]
ALTER DATABASE database_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
在同一 OBServer 上,可以通过 CHARACTER SET 和 COLLATE 子句创建具有不同字符集和字符序的数据库。
以下是创建和修改数据库字符集的示例:
/* 直接创建 latin1 数据库 */
CREATE DATABASE latin1_db CHARSET latin1;
/* 将一个已经存在的 utf8 数据库修改成 latin1 数据库*/
CREATE DATABASE db CHARSET=utf8mb4;
ALTER DATABASE db CHARSET latin1;
选择数据库的字符集和字符序规则
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,则使用服务器的字符集和字符序。
查询数据库的字符集和字符序规则
默认数据库的字符集和字符序可以通过查询 character_set_database 和 collation_database 系统变量的值来确定。
要查询指定数据库的默认字符集和字符序,请使用以下语句:
USE database_name;
SELECT @@character_set_database, @@collation_database;
返回结果示例如下:
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4 | utf8mb4_general_ci |
+--------------------------+----------------------+
1 row in set
或者:
SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'database_name';
返回结果示例如下:
+----------------------------+------------------------+
| DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME |
+----------------------------+------------------------+
| utf8mb4 | utf8mb4_general_ci |
+----------------------------+------------------------+
1 row in set
示例
-- 设置当前数据库的字符序为 'latin1_swedish_ci'
SET collation_database = 'latin1_swedish_ci';
-- 查询当前数据库的字符集和字符序
SELECT @@character_set_database, @@collation_database;
返回结果示例如下:
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| latin1 | latin1_swedish_ci |
+--------------------------+----------------------+
1 row in set