---
title: "DDL | OceanBase 文档中心"
description: DDL 数据定义语言 DDL 语句用于定义、更改和删除 Schema 对象。 DDL 使您能够在不改变访问对象的应用程序的情况下更改对象的属性。例如，您可以向人力资源应用程序访问的表中添加列，而无需重写该应用程序。 当数据库用户在数据库中执行工作时，也可以使用 DDL 更改对象的结构。 更具体地说，DDL 语句使您能…
---
切换语言

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

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

# DDL

更新时间：2023-08-28 11:05:41

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V3.1.4/zh-CN/1500.oceanbase-database-overview/900.user-interfaces-and-query-languages/100.sql/200.oceanbase-database-overview-sql-statements/200.ddl.md)  

数据定义语言 DDL 语句用于定义、更改和删除 Schema 对象。

DDL 使您能够在不改变访问对象的应用程序的情况下更改对象的属性。例如，您可以向人力资源应用程序访问的表中添加列，而无需重写该应用程序。 当数据库用户在数据库中执行工作时，也可以使用 DDL 更改对象的结构。

更具体地说，DDL 语句使您能够完成如下操作：

- 创建、更改和删除 Schema 对象和其他数据库对象结构，包括数据库本身和数据库用户。大多数 DDL 语句以关键字 `CREATE`、`ALTER` 或 `DROP` 开头。
 - 删除 Schema 对象中的所有数据，而不删除这些对象的结构 (`TRUNCATE` 命令)。
 - 打开和关闭审核选项 (关键字 `AUDIT` 和 `NOAUDIT`)。
 - 为数据库对象添加注释。

数据库执行 DDL 语句之前，会进行一个隐式提交。执行完 DDL 语句后，会立即执行一个提交或回滚动作。

​以下示例使用 DDL 语句创建 `cusotmer` 表，使用 DML 语句在表中插入两行。然后，使用 DDL 语句更改表结构，使用 DCL 语句向用户授予和回收此表的读取权限，最后删除该表。

```sql
CREATE TABLE customer(cust_id INT PRIMARY KEY,common_name VARCHAR(15));

# DML 语句
INSERT INTO customer VALUES (1,'Tom');
INSERT INTO customer VALUES (2,'Mary');

# DDL 语句
ALTER TABLE customer ADD ( cust_name VARCHAR(40) );

# DCL 语句
GRANT SELECT ON customer to User2;
REVOKE SELECT ON customer from Users;

# DDL 语句
DROP TABLE customer;

```

​上述示例中，两个插入语句后跟随一个 `ALTER TABLE` 语句，因此数据库提交两个插入操作。如果 `ALTER TABLE` 语句执行成功，则数据库提交此 DDL 语句；否则，数据库将回滚此 DDL 语句。无论是哪种情况，这两种情况的插入操作已经提交。

目前 OceanBase 数据库支持大部分常用的 DDL 操作，并且对于所有支持的 DDL 操作也都是 OnLine 的，在执行 DDL 的过程中不会阻塞业务的读写操作。

| **操作** | **是否支持** | **是否 ONLINE** | **是否重写数据** |
| --- | --- | --- | --- |
| 创建/添加索引 | 是 | 是 | 是 |
| 删除索引 | 是 | 是 | 否 |
| 重命名索引 | 是 | 是 | 否 |
| 添加全文索引 | 否 | - | - |
| 添加空间索引 | 否 | - | - |
| 添加主键 | 否 | - | - |
| 删除主键 | 否 | - | - |
| 删除主键并添加新的主键 | 否 | - | - |
| 加列 | 是 | 是 | 是 |
| 删列 | 是 | 是 | 是 |
| 重命名列 | 是 | 是 | 否 |
| 修改列的排列顺序 | 是 | 是 | 否 |
| 修改列默认值 | 是 | 是 | 否 |
| 修改列类型（兼容类型向上修改） 例如： INT 修改为 BIGINT、VARCHAR 修改为 TEXT、BLOB 修改为 LONG BLOB 等 | 是 | 是 | 是 |
| 修改列类型（不兼容类型修改） 例如： INT 修改为 VARCHAR、CHAR 修改为 VARCHAR 等。 | 否 | - | - |
| 设置列约束 NULL | 是 | 是 | 否 |
| 设置列约束 NOT NULL | 否 | - | - |
| 添加外键约束 | 否 | - | - |
| 删除外键约束 | 是 | 是 | 否 |
| 修改行格式 | 是 | 是 | 是 |
| 修改 BLOCK_SIZE | 是 | 是 | 是 |
| 设置字符集 | 否 | - | - |
| 转换字符集 | 否 | - | - |

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