---
title: "数据库级字符集和字符序 - OceanBase 数据库 V4.2.1 | OceanBase 文档中心"
description: "数据库级字符集和字符序 每个数据库都有默认的字符集和字符序。 指定数据库的字符集和字符序 使用 CREATE DATABASE 语句创建数据库或使用 ALTER DATABASE 语句修改数据库时，可以指定数据库的字符集和字符序。以下是语法示例： CREATE DATABASE database_name [DEFA…"
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.2.1 LTS

# 数据库级字符集和字符序

更新时间：2026-07-15 20:56:55

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.2.1/zh-CN/700.reference/500.sql-reference/100.sql-syntax/200.common-tenant-of-mysql-mode/100.basic-elements-of-mysql-mode/300.character-set-and-collation-of-mysql-mode/400.specify-character-set-and-collation-of-mysql-mode.md)  

每个数据库都有默认的字符集和字符序。

## 指定数据库的字符集和字符序

使用 `CREATE DATABASE` 语句创建数据库或使用 `ALTER DATABASE` 语句修改数据库时，可以指定数据库的字符集和字符序。以下是语法示例：

```sql
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` 子句创建具有不同字符集和字符序的数据库。

以下是创建和修改数据库字符集的示例：

```sql
/* 直接创建 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` 系统变量的值来确定。

要查询指定数据库的默认字符集和字符序，请使用以下语句：

```sql
USE database_name;
SELECT @@character_set_database, @@collation_database;

```

返回结果示例如下：

```shell
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4                  | utf8mb4_general_ci   |
+--------------------------+----------------------+
1 row in set

```

或者：

```sql
SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'database_name';

```

返回结果示例如下：

```shell
+----------------------------+------------------------+
| DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME |
+----------------------------+------------------------+
| utf8mb4                    | utf8mb4_general_ci     |
+----------------------------+------------------------+
1 row in set

```

## 示例

```sql
-- 设置当前数据库的字符序为 'latin1_swedish_ci'
SET collation_database = 'latin1_swedish_ci';

-- 查询当前数据库的字符集和字符序
SELECT @@character_set_database, @@collation_database;

```

返回结果示例如下：

```shell
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| latin1                   | latin1_swedish_ci    |
+--------------------------+----------------------+
1 row in set

```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
