Truncate Table的用法讲解

Python022

Truncate Table的用法讲解,第1张

TRUNCATE

TABLE

删除表中的所有行,而不记录单个行删除操作。

语法

TRUNCATE

TABLE

name

参数

name

是要截断的表的名称或要删除其全部行的表的名称。

注释

TRUNCATE

TABLE

在功能上与不带

WHERE

子句

DELETE

语句相同:二者均删除表中的全部行。但

TRUNCATE

TABLE

DELETE

速度快,且使用的系统和事务日志资源少。

DELETE

语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE

TABLE

通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

TRUNCATE

TABLE

删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用

DELETE。如果要删除表定义及其数据,请使用

DROP

TABLE

语句。

对于由

FOREIGN

KEY

约束引用的表,不能使用

TRUNCATE

TABLE,而应使用不带

WHERE

子句的

DELETE

语句。由于

TRUNCATE

TABLE

不记录在日志中,所以它不能激活触发器。

TRUNCATE

TABLE

不能用于参与了索引视图的表。

示例

下例删除

authors

表中的所有数据。

TRUNCATE

TABLE

authors

权限

TRUNCATE

TABLE权限默认授予表所有者、sysadmin固定服务器角色成员、db_owner

db_ddladmin

固定数据库角色成员且不可转让。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

您可能感兴趣的文章:Oracle给用户授权truncatetable的实现方案delete

from

表名与truncate

table

表名区别SQL中Truncate的用法golang实战之truncate日志文件详解tf.truncated_normal与tf.random_normal的详细用法smarty中改进truncate使其支持中文的方法SQL

Server中TRUNCATE事务回滚操作方法实例理解SQL中truncate和delete的区别详解SQL中drop、delete和truncate的异同Mysql开启慢SQL并分析原因

truncate和delete的区别在于四个方面:1. 条件删除、2. 事务回滚、3. 清理速度、4. 高水位重置。因为delete是可以带WHERE的,所以支持条件删除而truncate只能删除整个表。

1. 条件删除

这个比较好理解,因为delete是可以带WHERE的,所以支持条件删除而truncate只能删除整个表。

2. 事务回滚

由于delete是数据操作语言(DML - Data Manipulation Language),操作时原数据会被放到 rollback segment中,可以被回滚而truncate是数据定义语言(DDL - Data Definition Language),操作时不会进行存储,不能进行回滚。

3. 清理速度

在数据量比较小的情况下,delete和truncate的清理速度差别不是很大。但是数据量很大的时候就能看出区别。由于第二项中说的,truncate不需要支持回滚,所以使用的系统和事务日志资源少。delete 语句每次删除一行,并在事务日志中为所删除的每行记录一项,固然会慢,但是相对来说也较安全。

4. 高水位重置

随着不断地进行表记录的DML操作,会不断提高表的高水位线(HWM),delete操作之后虽然表的数据删除了,但是并没有降低表的高水位,随着DML操作数据库容量也只会上升,不会下降。所以如果使用delete,就算将表中的数据减少了很多,在查询时还是很和delete操作前速度一样。

delete和truncate命令之间的差别

1、命令类型

delete是数据操作语言(DML)命令;而truncate是数据定义语言(DDL)命令。

2、功能

delete命令根据指定的SQL语句从表中删除单个,多个或所有记录;而truncate命令从数据库中删除所有记录和表结构。

3、Where子句

delete命令支持WHERE子句,可以使用带有DELETE的where子句来过滤和删除特定记录;而,truncate命令不支持WHERE子句。

4、锁定

delete命令采用行级锁定,表中的每一行都被锁定以进行删除;truncate命令采用表级锁定,锁定了整个表以删除所有记录。

5、索引视图

delete命令可以与索引视图一起使用;而,truncate命令不能与索引视图一起使用。

6、执行速度

由于delete命令维护日志,因此速度很慢。但是,由于truncate命令在事务日志中维护最少的日志记录,因此执行速度更快。

7、表结构

delete命令不会影响表结构,而truncate命令会从数据库中删除表结构。

8、事务空间

delete命令比truncate命令使用更多的事务空间。