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日

相关推荐

  • 什么是服务器备份?有哪些好处?

    服务器备份,简单来说,就是主动为服务器或联网计算机系统里的关键数据创建副本的过程。这些副本我们称之为“备份”,通常会和原始数据分开存储。这样一来,即便原始数据因为硬件故障、人为操作…

    2026年4月22日
    0
  • 网站打开速度越来越慢和主机有关系吗?

    网站上线运营一段时间后,页面加载越来越慢几乎是个绕不开的问题。 出现这种情况,很多站长的第一反应是去查代码、压图片、卸插件,或者觉得是最近网络不稳定。这些方向不能说没有道理,但常常…

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

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

    2026年3月30日
    0
  • 什么是SSL证书?为什么要买SSL证书?

    我们在访问一个站点的时候,如果网页地址栏提示“不安全”,你还敢继续浏览吗? 互联网已经融入生活的方方面面,但随之而来的钓鱼网站、信息窃取等问题,总是让人头疼。我们在网上购物、使用网…

    2026年4月25日
    0
  • IPv4 与 IPv6 是什么? 带你一次搞懂 IP 地址差异

    随着网络设备、云端服务与 IoT 应用快速成长,全球连接设备的数量早已远远超过当初设计网络时的预期,也让 IPv4 地址不足成为无法忽视的现实问题。 从电脑、手机、企业官网、App…

    2026年3月28日
    0
  • 什么是反向DNS?如何做DNS反向查询?

    反向 DNS,也称为 rDNS,是网络和网络安全领域中一项重要技术。它本质上与传统的前向 DNS 查找相反,后者接收域名并返回相应的 IP 地址。相比之下,反向 DNS 查询会接收…

    2026年3月25日
    0
  • SQL Server 性能调优如何做?

    SQL 服务器性能调优,本质上是寻找更高效的方式处理相同工作负载。本文将详细探讨 SQL 性能调优的定义、必要性,以及可落地的方法。 什么是 SQL Server 性能调优? SQ…

    2026年4月24日
    0
  • 数据库读写分离是什么?小白一看就懂

    网站运营步入正轨,用户规模从最初寥寥数十人,如今已然突破万人。可随之而来的问题也逐渐凸显,网页加载速度越来越慢,不少用户纷纷吐槽卡顿,网站运行压力肉眼可见攀升。 其实这是网站流量上…

    2026年5月19日
    0
  • Linux 中的删除目录:rm 和 rmdir 解析

    在 Linux 中,需要删除目录文件时靠两个命令就能完成:rm 和 rmdir。乍一看它们相似,但行为却截然不同,如使用错误的命令,可能会删除远超预期的内容。 Linux rm 和…

    2026年3月30日
    0
  • 什么是 localhost,127.0.0.1 是如何工作的?

    我们平时访问网址,本质是和互联网上某台服务器通信;而 127.0.0.1 是特殊地址 —— 发往它的请求不会离开本机,会直接原路返回,这种机制叫回环(loopback),对应的域名…

    2026年4月7日
    0