SQL 中 DROP 和 Truncate 命令的区别

2025年2月2日 | 阅读 4 分钟

在本文中,我们将学习 DROP 和 Truncate 命令以及它们之间的区别。

什么是 DROP 命令?

DROP 是数据定义语言 (DDL) 的命令,它会从数据库表中删除或移除索引、数据、约束和触发器的定义。

在结构化查询语言 (SQL) 中,此语句会从关系数据库管理系统 (RDBMS) 中删除元素。

与 SQL 中的 TRUNCATE 命令相比,DROP 命令执行起来很快。但是,由于它有很多复杂性,其执行时间较慢。

我们也可以在 ALTER TABLE 语句中使用 DROP 关键字来从表中删除一个或多个列。

删除数据库的语法如下:

在此语法中,我们需要指定要从系统中删除的数据库名称。

注意:删除数据库时请小心,因为 DROP 命令会删除该数据库中包含的所有表、索引和视图。

删除表的语法如下:

在此语法中,我们需要指定要从数据库中删除的表名称。

一次删除多个表的语法如下:

在此语法中,我们可以使用逗号指定多个表。

删除索引的语法如下:

在此语法中,我们必须在 INDEX 关键字之后指定索引的名称。

与 SQL 中的 DELETE 命令不同,数据库用户在使用 DROP 命令后无法回滚表中的数据。

DROP 命令会从存储中释放表空间,因为它会永久从系统中删除表及其内容。

DROP 命令示例

让我们创建一个新表来执行 SQL 中的 DROP 查询。以下 CREATE TABLE 查询创建了带有五个字段的 Employee

以下查询从数据库中删除已创建的 Employee 表

什么是 TRUNCATE 命令?

TRUNCATE 也是数据定义语言 (DDL) 的另一个命令。此命令会永久删除表中的所有值。

此命令无法删除特定记录,因为它不与 WHERE 子句一起使用。

SQL 中 TRUNCATE 命令的语法

在上述语法中,我们需要指定要从中删除所有记录的表的名称。

TRUNCATE 命令示例

让我们创建一个新表来执行 SQL 中的 TRUNCATE 查询。以下 CREATE TABLE 语句创建了带有五个列的 Student_Details 表

以下 SQL 查询使用 INSERT INTO 语句插入上述表中学生的记录

让我们使用以下SELECT语句查看上述表的记录。


学生编号 (Student_ID)学生姓名Student_CourseStudent_Age学生分数
101AnujB.tech2088
102拉曼 (Raman)MCA2498
104ShyamBBA1992
107VikashB.tech2078
111MonuMBA2165
114JonesB.tech1893
121ParulBCA2097
123DivyaB.tech2189
128HemantMBA2390
130NidhiBBA2088

以下查询会从上面的 Student_Details 表中删除所有行

以下语句验证表是否已成功截断:

输出

学生编号 (Student_ID)学生姓名Student_CourseStudent_Age学生分数

下表显示了结构化查询语言中 DROP 和 TRUNCATE 命令的区别

DROPTRUNCATE
SQL 中的 DROP 命令会删除表的定义及其数据。SQL 中的 TRUNCATE 命令会从表中删除所有数据。
此查询会释放内存中的表空间。TRUNCATE 查询不会从存储中释放表空间。
在 DROP 命令中,表的视图不存在。表的视图在 Truncate 命令中存在。
完整性约束将自动从 DROP 命令中的表中删除此命令中的完整性约束不会被删除。
在 DROP 查询中,删除的空间未被使用。删除的空间已被使用,但比 DELETE 语句使用的少。
DROP 查询可以快速删除数据,但有很多复杂性。SQL 中的 TRUNCATE 查询比 DROP 查询更快。