SQL DDL 是什么? 五个指令一次学会:CREATE、ALTER、TRUNCATE、DROP、RENAME

SQL 有四大分类:

  • DDL(数据定义语言)负责处理表格的「结构」。
  • DML(数据操作语言)负责处理表格的「资料」。
  • DCL(数据控制语言)负责处理「权限」。
  • TCL(事务控制语言)负责处理事务。

本文讲解其中非常重要的一类——DDL(Data Definition Language,数据定义语言)。

DDL 总共有五个指令:CREATE、ALTER、TRUNCATE、DROP、RENAME。

DDL 是什么? 跟 DML 有什么不同?

简单来说,DDL 就是用来处理表格「结构」的指令。

什么是表格的结构? 就是有几个字段、字段叫什么名字、每个字段的数据类型是什么这些事情。

我们用一个例子来说明。

假设有一张 employee 表格,长这样:

ID 名称 部门 薪资
1 爱丽丝 HR 50000
2 鲍勃 IT 60000

这张表格有两个面向:

  1. 结构面 :有 4 个字段(ID、Name、Department、Salary),每个字段有各自的数据型态。
  2. 资料面 :有 2 笔资料(Alice 和 Bob 的纪录)。

如果你要「新增一个字段」或「把整张表格删掉」,这就是在修改结构,属于 DDL

如果你要「把 Bob 的薪水从 60000 改成 70000」,这就是在操作数据,属于 DML

DDL 指令的重要特性:自动提交(Auto Commit)

在学五个指令之前,有一个很重要的观念要先知道。

什么是 COMMIT 和 ROLLBACK

在数据库的世界里,你对数据做的每一个操作,并不会马上永久储存。

这些操作会先暂时存在一个「临时事务区」里,等你确认没问题之后,再用 COMMIT(提交)指令把修改永久写进数据库。

如果你做到一半发现改错了,还可以用 ROLLBACK(回滚)指令,把所有还没提交的修改通通撤销,回到上一次 COMMIT 的状态。

你可以把它想像成在用 Git:

你在本地改了一堆代码,这些修改还只是停留在工作目录里,还没有被记录下来。

当你执行 git commit,修改就被正式提交了,这就是 COMMIT

但如果你改到一半发现改错了,可以用 git checkout 把文件还原回上一次 commit 的状态,这就是 ROLLBACK

DDL 的自动提交

但 DDL 指令比较特别,它执行后会自动提交(Auto Commit)

类型 执行后能否 ROLLBACK 需要手动 COMMIT 吗
DML 可以,还没 COMMIT 前都能复原 需要,要自己按「储存」
DDL 不行,执行就生效 不需要,系统自动帮你“储存”

也就是说,DDL 执行后会自动提交,修改立即生效并持久化,修改立刻生效并且永久储存, 无法通过 ROLLBACK 撤销

所以在执行 DDL 指令之前,一定要想清楚再动手,特别是 TRUNCATE 和 DROP 这种破坏性的操作。

CREATE——建立新表格

CREATE 是用来「从零开始建立一张表格」的指令。

假设现在库里什么都没有,我想建立一张有 4 个字段 employee 表格。

语法长这样:

CREATE TABLE employee ( ID NUMBER, Name VARCHAR2(50), Department VARCHAR2(50), Salary NUMBER );

执行之后,数据库就会多出一张叫做 employee 的表格,里面有 4 个字段。

ID 名称 部门 薪资

为什么 CREATE 是 DDL 指令? 因为它在定义表格的结构:有几个字段、字段叫什么、数据型态是什么。

这些全部都是结构层面的事情。

ALTER——修改现有表格的结构

假设你已经建好了 employee 表格,但后来发现少了一个 Gender 字段。

这时候你不需要把表格删除重建,只要用 ALTER 就可以了。

ALTER 可以做三件事:

新增字段

ALTER TABLE employee ADD (Gender VARCHAR2(10));

这样 employee 表格就会从 4 个字段变成 5 个字段。

ID 名称 部门 薪资 性别
1 爱丽丝 HR 50000
2 鲍勃 IT 60000

删除字段

ALTER TABLE employee DROP COLUMN Gender;

如果某个字段不需要了,可以用这个方式把它移除。

ID 名称 部门 薪资
1 爱丽丝 HR 50000
2 鲍勃 IT 60000

修改字段的数据类型

ALTER TABLE employee MODIFY (Name VARCHAR2(100));

例如原本 Name 栏位最多只能存 50 个字符,现在想改成 100 个字符。

不管是新增、删除还是修改字段,ALTER 都是在动表格的结构,所以它也是 DDL 指令。

TRUNCATE——清空表格里的所有数据

TRUNCATE 的作用是「把表格里的数据全部删光,但保留表格本身」。

语法很简单:

TRUNCATE TABLE student;

我们用一个例子来看。

假设有一张 student 表格:

ID 名称
1 爱丽丝
2 鲍勃
3 卡萝尔

执行 TRUNCATE TABLE student; 之后,表格会变成:

ID 名称

资料全部不见了,但表格还在。

你之后还是可以新增数据、新增字段,做任何操作,因为表格本身并没有被删除。

要特别注意的是,TRUNCATE 是 DDL 指令,所以它会自动提交, 执行后无法回滚

在按下 Enter 之前,请务必确认你真的要清空这张表格。

TRUNCATE 和 DELETE 有什么不同?

看到这里你可能会想:「等一下,DML 里面不是也有一个 DELETE 指令可以删资料吗? 那它跟 TRUNCATE 差在哪?」

确实,DELETE 也可以删除表格里的数据,但两者的运作方式完全不同。

DELETE 是一条一条删除数据,而且可以加上 WHERE 条件,只删除符合条件的特定几条。

例如只删除名字是 Alice 的那笔纪录:

DELETE FROM student WHERE Name = ‘Alice’;

而 TRUNCATE 是一口气把整张表格的数据全部清掉,没办法指定条件。

另外,因为 DELETE 是 DML 指令,执行后还可以用 ROLLBACK 来撤销。

但 TRUNCATE 是 DDL 指令,执行后就自动提交了,完全没有撤销的机会。

比较项目 TRUNCATE(DDL) 删除(DML)
删除范围 只能清空全部资料 可以用 WHERE 指定条件
执行速度 较快 较慢(逐笔处理)
能否 回滚 不能(Auto Commit) 可以(还没 COMMIT 前都能恢复)
表格结构 保留 保留

DROP——把整张表格彻底删除

DROP 和 TRUNCATE 很像,但更加彻底。

语法也很简单:

DROP TABLE student;

同样用 student 表格来举例。

执行 DROP TABLE student; 之后,不只数据没了,连表格本身、索引、所有相关的东西都会从数据库中完全消失 

SQL 中 TRUNCATE 和 DROP 的差别

这两个指令很容易搞混,用一张表格来比较:

比较项目 TRUNCATE DROP
资料 全部删除 全部删除
表格结构 保留 一并删除
执行后能否继续操作 可以,表格还在 不行,表格已经不存在了
能否复原 不能(Auto Commit) 不能(Auto Commit)

简单记:TRUNCATE 是「清空」,DROP 是「销毁」。

RENAME——重新命名表格

RENAME 是用来「把表格换一个名字」的指令。

语法就像一句英文:

RENAME student TO student_info;

执行之后,原本叫 student 的表格就会变成 student_info。

表格里面的字段和数据完全不会改变,只有名字不一样了。

为什么 RENAME 也是 DDL? 因为字段是跟着表格名称走的。

当你改了表格名称,等于改变了整个表格的结构定义,所以它也属于 DDL。

DDL 五个指令重点整理

这篇文章介绍了 DDL 的五个指令:

  1. CREATE:建立新的表格。
  2. ALTER:修改现有表格的结构(新增字段、删除字段、修改数据类型)。
  3. TRUNCATE:清空表格的所有数据,但保留表格结构。
  4. DROP:把整张表格从数据库中彻底删除。
  5. RENAME:重新命名表格。

最重要的一点是,DDL 指令都具有自动提交(Auto Commit) 的特性,一旦执行就无法复原。

原创文章,作者:余初云,如若转载,请注明出处:https://blog.jidcy.com/jsjc/2663.html

Like (1)
Previous 2026年5月13日 上午10:06
Next 2026年5月14日

相关推荐

  • 如何在 Linux 上重置 MySQL 的 Root 根密码

    服务器的 MySQL Root 密码,可用于登录数据库控制台手动创建数据库、新建用户并关联数据库、为指定数据库分配用户权限等操作。 若遗忘 MySQL Root 用户密码,可按照下…

    2026年5月26日
    0
  • 云原生是什么?到底解决什么问题?

    云计算普及的同时,”云原生”这个新的应用分类也随之出现。这个词越来越频繁地出现在开发者对话和技术文章中,却因为过度使用成了一个时髦词汇,反而让真正有价值的技…

    2026年4月11日
    0
  • Vim 自动缩进命令

    Vim 是一款模式化文本编辑器,支持多种编辑模式,不同模式下键盘按键的功能会发生变化。它自带一套功能强大、设置灵活的自动缩进机制,核心就是 indentexpr 选项。写代码时缩进…

    2026年4月29日
    0
  • 什么是CISA证书?如何获得CISA认证?

    CISA(注册信息系统审计师,Certified Information Systems Auditor),自1978年起,由国际信息系统审计协会(ISACA)开始实施注册。目前,…

    2026年5月6日
    0
  • 什么是云存储(Cloud Storage)?为您全面解析企业云存储类型!

    随着企业数字化转型的普及,企业对数据存储的需求日益增长,而传统的本地存储方式已无法满足弹性与安全性的要求,云存储(Cloud Storage)已成为现代企业的最佳选择。 然而,市面…

    2026年4月3日
    0
  • 什么是电子邮件安全?电子邮件安全的原理

    电子邮件安全是一套用于保护电子邮件通信免受未经授权访问、冒充、恶意软件及其他形式的滥用的技术和实践。 它有助于保持信息私密,验证发件人是否合法,并降低钓鱼、伪造和有害附件进入收件箱…

    2026年3月26日
    0
  • DNS 是什么? 为什么网站一定要有 DNS 服务器?

    今天余初云带你一次看懂 DNS 是什么、DNS 如何运作、DNS 服务器种类与必备 DNS 纪录,并教你为什么网站一定要正确设定 DNS,避免网站打不开、无法登入、API 中断等高…

    2026年3月30日
    0
  • WordPress报413请求实体过大错误

    413 请求实体过大错误,是一种 HTTP 响应,意思是你发送的内容比服务器能接受的要大。HTTP 400 系列错误一般是客户端的问题,但 413 错误更多是因为上传的内容本身合法…

    2026年3月28日
    0
  • 堡垒机与跳板机是什么意思?

    在规模较大的企业中担任过运维岗位的同行应该都有体会,企业内部运维管理混乱是极为普遍的状况。人员规模一旦扩大,就会产生多人共用同一个账号,或者一个人操作多个账号的情形,日积月累必然会…

    2026年5月29日
    0
  • Windows 重置 MySQL Root 根密码

    知晓服务器的 MySQL Root 密码,可用于登录数据库控制台手动创建数据库、新建用户并关联数据库、为数据库用户分配对应权限等操作。 若遗忘 MySQL Root 用户密码,可按…

    2026年5月26日
    0