SQL 中的 DROP 和 TRUNCATE 命令详解

SQL 中的 DROP 和 TRUNCATE 命令都可用于从表中删除数据,但它们的工作方式截然不同。理解它们之间的区别对于进行有效的数据库管理至关重要,尤其是在处理大型数据集时。

SQL DROP 命令

SQL DROP 命令用于从数据库中永久移除一个对象,例如表、数据库、索引或视图。当删除一个表时,其数据和结构都会被永久移除,除非有备份,否则该操作无法撤销。

  • 永久移除: 永久删除对象及其数据。
  • 删除依赖项: 移除相关的约束和索引。
  • 删除 Schema: 移除表结构和模式定义。
  • 无完整性检查: 跳过约束和触发器。

语法:

DROP object object_name ;
  • object: 你想要删除的对象类型(例如 TABLE, DATABASE)。
  • object_name: 要被删除的对象的名称。

DROP 命令的使用示例

为了理解 DROP 命令在 SQL 中是如何工作的,让我们通过一些实际的示例来演示它的各种应用场景。

1. DROP Table(删除表)

要删除包括数据和结构在内的整个表:

语法:

> DROP TABLE table_name;

2. DROP database(删除数据库)

要删除整个数据库及其所有关联的表:

语法:

> DROP DATABASE database_name;

SQL TRUNCATE 命令

TRUNCATE 命令是一种数据定义语言(DDL)操作,它用于移除表中的所有行,但保留表的结构以备将来使用。

尽管 TRUNCATE 与不带 WHERE 子句的 DELETE 命令相似,但它要快得多,因为它绕过了某些完整性约束和锁定机制。它是在 SQL:2008 标准中正式引入的。

语法:

TRUNCATE TABLE  table_name;
  • table_name: 要被截断的表的名称。
  • DATABASE name: (此处指上下文环境)数据库名称。

DROP 和 TRUNCATE 之间的主要区别

下表详细解释了 DROP 和 TRUNCATE 语句之间的主要区别:

DROP

TRUNCATE

完全移除数据和表结构

仅移除所有行,但保留表结构

若要重用,需要重新创建表。

可以立即使用,因为表结构仍然存在。

不可恢复;一旦删除,除非有备份,否则无法恢复表。

如果在事务中使用(且 DBMS 支持),可以回滚。

不会激活与表关联的触发器。

不会激活 DELETE 触发器。

由于需要移除数据和结构,速度较慢。

速度更快,特别是对于大型数据集。

当你想要完全移除一个表或数据库时使用。

用于快速移除表中的所有行,但保留结构以备将来使用。## SQL DROP 和 TRUNCATE 命令示例

让我们看一些 SQL 中 DROP 和 TRUNCATE 语句的示例,并理解它们的工作原理。让我们考虑给定的数据库 Student_data。我们将在这个特定的表上执行示例。

ROLL_NO

NAME

ADDRESS

PHONE

AGE —

— 1

John

Delhi

9415536635

24 2

Michael

Gurgaon

9414576635

21 3

David

Delhi

9815532635

20 4

Robert

Noida

9115536695

21 5

Emma

Gurgaon

8915536735

28 6

Olivia

Rohtak

7015535635

23

DROP Database 示例

在这个示例中,我们将删除一个名为 student_data 的数据库:

> DROP DATABASE student_data;

运行此查询将完全删除 student_data 数据库,包括其中的所有表和数据。

DROP Table 示例

在这个示例中,我们将删除 student_details 表:

> DROP TABLE student_details;

此查询将从数据库中永久移除 student_details 表及其所有数据。

TRUNCATE Table 示例

在这个示例中,我们将截断一个表(例如 student_details)中的所有数据,同时保持表结构不变:

> TRUNCATE TABLE Student_details;

运行上述查询后,Student_details 表将被截断,即数据将被删除,但结构将保留在内存中以供后续操作使用。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/25754.html
点赞
0.00 平均评分 (0% 分数) - 0