SQL DELETE 和 TRUNCATE 的区别

SQL DELETE 和 TRUNCATE 的区别

1. DELETE语句

DELETE 是一个 DML(数据操作语言)命令,当我们指定要从表或关系中删除或删除的行(元组)时使用。DELETE 命令可以包含 WHERE 子句。如果 WHERE 子句与 DELETE 命令一起使用,则它仅删除或删除那些满足条件的行(元组),否则默认情况下它会从表中删除所有元组(行)。请记住,DELETE 记录行删除。

DELETE 命令的语法:

DELETE FROM TableName 
WHERE condition;

2. TRUNCATE语句

TRUNCATE 是一个 DDL(数据定义语言)命令,用于从表中删除所有行或元组。与 DELETE 命令不同,TRUNCATE 命令不包含 WHERE 子句。在 TRUNCATE 命令中,不会记录每个已删除数据页的事务日志。与 DELETE 命令不同,TRUNCATE 命令速度很快。使用 TRUNCATE 命令后我们无法回滚数据。

TRUNCATE 命令的语法:-

TRUNCATE TABLE  TableName;

下面来看看 DELETE 和 TRUNCATE 命令之间的区别:-

编号 DELETE TRUNCATE
1 DELETE 命令用于删除指定的行(一个或多个)。 TRUNCATE命令用于删除表中的所有行。
2 DELETE是一个DML(数据操作语言)命令。 TRUNCATE是一个 DDL(数据定义语言)命令。
3 DELETE 命令中可能有一个 WHERE 子句,用于过滤记录。 TRUNCATE 命令中可能没有 WHERE 子句。
4 在 DELETE 命令中,元组在删除之前被锁定。 在TRUNCATE命令中,数据页在删除表数据之前被锁定。
5 DELETE 语句一次删除一个行,并在事务日志中为每个删除的行记录一个条目。 TRUNCATE TABLE 通过解除分配用于存储表数据的数据页来移除数据,并且仅在事务日志中记录页解除分配。
6 DELETE 命令比 TRUNCATE 命令慢。 TRUNCATE 命令比 DELETE 命令快。
7 要使用删除,需要对表具有 DELETE 权限。 要在表上使用 TRUNCATE,我们至少需要表上的 ALTER 权限。
8 对表使用DELETE 语句后,列的标识保留标识。 如果表包含标识列,则标识该列将重置为其种子值。
9 删除可以与索引视图一起使用。 TRUNCATE不能与索引视图一起使用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程