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

由于truncate语句将删除表中的所有数据,且无法恢复,因此使用时必须十分小心。

使用truncate table删除了指定表中的所有行,但表的结构及其列,约束,索引等保持不变,而新行标识所用的计数值重置为该列的初始值。如果想保留标识计数值,则要使用DELETE语句。

TRUNCATE TABLE执行速度比DELETE块,且使用的系统和事务日志资源少。DELETE语句每次删除一行,并在事务日志中为所删除的每行记录一项。而TRUNCATE TABLE通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

对于有外键约束引用的表,不能使用TRUNCATE TABLE删除数据,而应该使用布袋WHERE子句的DELETE语句。另外TRUNCATE TABLE也不能用于参与了索引视图的表。

from

http://www.cnblogs.com/herbert/archive/2010/07/06/1772135.html

时间: 2025-01-02 15:07:09

truncate table 和delete的相关文章

TRUNCATE TABLE 与 DELETE table 区别

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

Truncate table、Delete与Drop table的区别

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

SQL中truncate table和delete的区别

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 table 的区别

truncate table和不带 where 的 detele 功能一样,都是删除表中的所有数据. 但TRUNCATE TABLE 速度更快,占用的日志更少,这是因为 TRUNCATE TABLE 直接释放数据页并且在事务日志中也只记录数据页的释放,而 DELETE 是一行一行地删除,在事务日志中要记录每一条记录的删除. 那么可不可以用 TRUNCATE TABLE 代替不带 WHERE 的 DELETE 呢?在以下情况是不行的: 1.要保留标识的情况下不能用 TRUNCATE 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 from aatruncate table aa 区别1.delete from后面可以写条件,truncate不可以2.delete from记录是一条条删的,所删除的每行记录都会进日志,而truncate一次性删掉整个页,因此日至里面只记录页释放,简言之,delete from更新日志,truncate基本不,所用的事务日志空间较少3.delete from删空表后,会保留一个空的页,truncate在表中不会留有任何页4.当使用行锁执行 DELETE 语句时,将锁定表中各行以

Truncate Table 用法

TRUNCATE TABLE 删除表中的所有行,而不记录单个行删除操作. 语法 TRUNCATE TABLE name 参数 name 是要截断的表的名称或要删除其全部行的表的名称. 注释 TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行.但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少. DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项.TRUNCATE TABLE 通过

truncate table语句和delete table语句的区别

truncate table 表名 ; delete from 表名; 都是用来删除表中所有的记录,前者删除数据后表的标识列会重新开始编号,它比delete语句使用的系统资源和事务日志资源更少,但是表的结构,列,约束,索引等不会被改动,同时不能用于有外键约束引用的表,在实际工作中,不建议使用truncate ,因为使用它删除的数据不能恢复还原,而使用delete的话就可以恢复