SQL DROP和SQL的Truncate的区别

SQL DROP和SQL的Truncate的区别

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

什么是DROP命令?

DROP是数据定义语言的一个命令,它从数据库表中删除定义索引、数据、约束和触发器。

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

与SQL的TRUNCATE命令相比,DROP命令执行速度快。但是,由于存在许多复杂性,其执行时间较慢。

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

删除数据库的语法如下:

DROP DATABASE Database_Name;

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

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

删除表的语法如下所示:

DROP TABLE Table_Name;

在这个语法中,我们必须指定我们想要从数据库中删除的表的名称。

删除多个表的语法如下所示:

DROP TABLE Table_Name1, Table_Name2, ......, Table_NameN;

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

删除索引的语法如下所示:

DROP INDEX INDEX_Name;

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

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

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

DROP命令示例

让我们在SQL中创建一个新表来实现DROP查询。以下CREATE TABLE查询使用五个字段创建了 Employee 表。

CREATE TABLE Employee
(
Employee_ID INT AUTO_INCREMENT PRIMARY KEY,
Emp_Name VARCHAR (50),
Emp_Salary INT NOT NULL,
Emp_CityVarchar (50), 
Emp_EmailID VARCHAR (100)
) ;

下面的查询语句从数据库中删除了创建的Employee表:

DROP TABLE Employee;

什么是TRUNCATE命令?

TRUNCATE也是数据定义语言的另一个命令。该命令从表中永久地删除所有的值。

该命令不能删除特定的记录,因为它不与WHERE子句一起使用。

SQL中TRUNCATE命令的语法:

TRUNCATE TABLE Table_Name; 

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

TRUNCATE命令示例

让我们创建一个新的表来实现SQL中的TRUNCATE查询。以下CREATE TABLE语句创建了一个名为Student_Details的表,其中包含五列:

CREATE TABLE Student_Details
(
Student_ID INT NOT NULL, 
Student_Name varchar(100),
Student_Course varchar(50),
Student_Age INT, 
Student_Marks INT
); 

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

INSERT INTO Student_Details VALUES (101, Anuj, B.tech, 20, 88);
INSERT INTO Student_Details VALUES (102, Raman, MCA, 24, 98);
INSERT INTO Student_Details VALUES (104, Shyam, BBA, 19, 92);
INSERT INTO Student_Details VALUES (107, Vikash, B.tech, 20, 78);
INSERT INTO Student_Details VALUES (111, Monu, MBA, 21, 65);
INSERT INTO Student_Details VALUES (114, Jones, B.tech, 18, 93);
INSERT INTO Student_Details VALUES (121, Parul, BCA, 20, 97);
INSERT INTO Student_Details VALUES (123, Divya, B.tech, 21, 89);
INSERT INTO Student_Details VALUES (128, Hemant, MBA, 23, 90);
INSERT INTO Student_Details VALUES (130, Nidhi, BBA, 20, 88);

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

SELECT * FROM Student_Details;
Student_ID Student_Name Student_Course Student_Age Student_Marks
101 Anuj B.tech 20 88
102 Raman MCA 24 98
104 Shyam BBA 19 92
107 Vikash B.tech 20 78
111 Monu MBA 21 65
114 Jones B.tech 18 93
121 Parul BCA 20 97
123 Divya B.tech 21 89
128 Hemant MBA 23 90
130 Nidhi BBA 20 88

以下查询语句会从上述的Student_Details表中删除所有行:

TRUNCATE TABLE Student_Details;

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

SELECT * FROM Student_Details;

输出:

Student_ID Student_Name Student_Course Student_Age Student_Marks

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

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程