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日

相关推荐

  • DDoS攻击为何抵御难度大?

    DDoS攻击属于一种普遍的网络攻击手段,它运用分布、协同的大规模攻击模式直接或间接地借助互联网上其他被控制的计算机攻击目标系统或者网络资源,拥有极高的隐匿性和极强的摧毁力。 一、分…

    2026年6月4日
    0
  • 如何更新服务器CentOS版本?

    老版本系统一旦被官方”抛弃”,就再也收不到安全补丁了,如果继续使用这类过期系统,不法分子很容易利用系统漏洞发起攻击,轻则破坏服务器正常运行,重则窃取内部核心…

    2026年5月12日
    0
  • 什么是云端基础设施?

    云端基础设施定义 云基础设施是硬件和软件元素的组合,包括计算能力、网络、存储和虚拟化资源,这些都是支撑云计算的必要条件。 虚拟资源与实体基础设施对应,包括存储器、网络交换器、服务器…

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

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

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

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

    2026年4月25日
    0
  • cpu核数是什么意思

    CPU是什么意思?CPU是日常生活中很常见的硬件设备,台式电脑、笔记本电脑、手机、服务器中都必须要有CPU,CPU核数即一个CPU由多少个核心组成,核心数越多,代表这个CPU的运转…

    2026年5月22日
    0
  • windows云服务器如何用远程桌面连接登录?

    远程连接管理云服务器与本地操作服务器其实是一样的,Windows云服务器的远程登录比较简单。 连接云服务器需要什么信息? 连接云服务器,需要云服务器的公网(外网)IP、用户名和登录…

    2026年6月23日
    0
  • 什么是静态 IP 地址?

    静态 IP 地址保持一致且可预测,不会被路由器或互联网服务提供商(ISP)自动重新分配,因此适用于托管服务、远程访问和企业网络。 静态 IP 地址在实践中有哪些用途?很多时候,它能…

    2026年5月16日
    0
  • 高防ip是什么?

    高防 IP 属于一项付费增值服务,主要用于解决互联网服务器遭遇大流量 DDoS 攻击后服务中断的问题。用户配置该 IP 后,可把攻击流量导向高防节点,保障源服务器平稳运行。该服务无…

    2026年5月27日
    0
  • 拒绝服务攻击 DoS 与 DDoS 解析

    在网络安全领域,DoS 和 DDoS 是两类高频且危害显著的攻击方式,二者核心目的都是让目标网络或服务器无法正常提供服务,但攻击模式、破坏力和应对难度截然不同。 DoS,即拒绝服务…

    2026年5月18日
    0