TRUNCATE TABLE 与 DELETE table 区别

语法

TRUNCATE TABLE 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 不能用于参与了索引视图的表。

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

delete与truncate 区别:

  delete可以通过WHERE语句选择要删除的记录.但执行得速度不快,而且还可以返回被删除的记录数。

  truncate table无法删除指定的记录,而且不能返回被删除的记录。但它执行得非常快。

时间: 2024-12-10 06:55:14

TRUNCATE TABLE 与 DELETE table 区别的相关文章

SQL中truncate table和delete的区别

TRUNCATE TABLE 在功能上与不带 Where 子句的 Delete 语句相同:二者均删除表中的全部行.但 TRUNCATE TABLE 比 Delete 速度快,且使用的系统和事务日志资源少. Delete 语句每次删除一行,并在事务日志中为所删除的每行记录一项.TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放. TRUNCATE TABLE 删除表中的所有行,但表结构及其列.约束.索引等保持不变.新行标识所用的计数值重置为该列的

TRUNCATE TABLE 与 DELETE的区别

delete from aatruncate table aa 区别1.delete from后面可以写条件,truncate不可以2.delete from记录是一条条删的,所删除的每行记录都会进日志,而truncate一次性删掉整个页,因此日至里面只记录页释放,简言之,delete from更新日志,truncate基本不,所用的事务日志空间较少3.delete from删空表后,会保留一个空的页,truncate在表中不会留有任何页4.当使用行锁执行 DELETE 语句时,将锁定表中各行以

truncate table和delete table 的区别

truncate table和不带 where 的 detele 功能一样,都是删除表中的所有数据. 但TRUNCATE TABLE 速度更快,占用的日志更少,这是因为 TRUNCATE TABLE 直接释放数据页并且在事务日志中也只记录数据页的释放,而 DELETE 是一行一行地删除,在事务日志中要记录每一条记录的删除. 那么可不可以用 TRUNCATE TABLE 代替不带 WHERE 的 DELETE 呢?在以下情况是不行的: 1.要保留标识的情况下不能用 TRUNCATE TABLE,因

【MySQL】 empty table and delete table.

1.MySQL生成删除满足条件的表的sql: 1 SELECT 2 CONCAT( 3 'DROP TABLE ', 4 GROUP_CONCAT(table_name), 5 ';' 6 ) AS statement 7 FROM 8 information_schema.TABLES 9 WHERE 10 table_schema = 'testmybatis' 11 AND table_name LIKE 'table_mo_%'; DROP TABLE table_mo_tt1,tabl

【SqlServer】empty table and delete table and create table

1.建表 1 IF object_id (N'表名', N'U') IS NULL CREATE TABLE 表名 ( 2 id INT IDENTITY (1, 1) PRIMARY KEY ,......); 2.查询所有满足条件的表 1 SELECT 2 NAME 3 FROM 4 sys.objects 5 WHERE 6 type = 'u' 7 AND NAME LIKE 'test_%'; 3.批量删除满足条件的表 1 DECLARE 2 @NAME VARCHAR (50) 3

Truncate table、Delete与Drop table的区别

Truncate table.Delete与Drop table的区别 TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行.但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少. DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项.TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放. TRUNCATE TABLE 删除表中的所有行

truncate table与delete区别

truncate table需要drop table权限,它是完全清空一张表. 从逻辑上看,truncate table同delete 一样,或是drop table +create table一样.使用truncate table删除全表数据,要比delete要快.使用truncate table清空数据,不能进行回滚,且不受表间外键约束限制. truncate是DDL语句,而且delete是DML语句,两者区别如下: 1.truncate 是邮drop table+create table

truncate table 和delete * from的区别

区别主要两个 1.   Truncate 是整体删除, delete是逐条删除 2.   truncate不写服务器log,delete写服务器log,这就是为什么truncate要快过delete 所以,影响有:1. truncate 快2. truncate不激活 trigger 3.   truncate 重置 Identity

truncate table 和delete

delete table 和 truncate table 使用delete语句删除数据的一般语法格式: delete [from] {table_name.view_name} [where<search_condition>] 将XS表中的所有行数据删除 delete XS 执行完后,发现XS表中的数据都删除了,但是表的结构什么都还在. truncate truncate table语句将删除指定表中所有数据,因此也称其为清除表数据语句,一般格式如下 truncate table name