---
title: "表级字符集和字符序 - OceanBase 数据库 V4.2.1 | OceanBase 文档中心"
description: "表级字符集和字符序 每张表都有默认的字符集和字符序。 指定表的字符集和字符序 使用 CREATE TABLE 语句创建表或使用 ALTER TABLE 语句修改表时，可以指定表的字符集和字符序。语法如下： CREATE TABLE table_name (column_list) [[DEFAULT] CHARACT…"
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/500.table-level-character-set-and-collation-of-mysql-mode.md)  

每张表都有默认的字符集和字符序。

## 指定表的字符集和字符序

使用 `CREATE TABLE` 语句创建表或使用 `ALTER TABLE` 语句修改表时，可以指定表的字符集和字符序。语法如下：

```sql
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]

```

要修改表中已有数据的字符集和字符序，可以使用以下语法：

```sql
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name COLLATE col_name;

```

以下是示例：

```sql
-- 创建表
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`，则使用数据库的字符集和字符序。

如果在各个列定义中未指定列字符集和字符序，则表的字符集和字符序将用作列定义的默认值。

## 示例

```sql
-- 创建表时指定字符集和字符序
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';` 查询表的状态信息，其中包含了表的字符序信息。

返回结果示例如下：

```shell
+---------------+-----------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+----------------------------+----------------------------+------------+--------------------+----------+-------------------------------------------------------------------------------------------------------------------------------------------------+---------+
| 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

```

 上一篇 下一篇 ![有帮助](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) 咨询热线
