`

SQL truncate 、delete与drop区别

 
阅读更多

相同点:

1.truncate和不带where子句的delete、以及drop都会删除表内的数据。

 

2.drop、truncate都是DDL语句(数据定义语言),执行后会自动提交。

 

不同点:

1. truncate 和 delete 只删除数据不删除表的结构(定义)
drop 语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index);依赖于该表的存储过程/函数将保留,但是变为 invalid 状态。

 

2. delete 语句是数据库操作语言(dml),这个操作会放到 rollback segement 中,事务提交之后才生效;如果有相应的 trigger,执行的时候将被触发。
truncate、drop 是数据库定义语言(ddl),操作立即生效,原数据不放到 rollback segment 中,不能回滚,操作不触发 trigger。

 

3.delete 语句不影响表所占用的 extent,高水线(high watermark)保持原位置不动
drop 语句将表所占用的空间全部释放。
truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage;truncate 会将高水线复位(回到最开始)。

 

4.速度,一般来说: drop> truncate > delete

 

5.安全性:小心使用 drop 和 truncate,尤其没有备份的时候.否则哭都来不及
使用上,想删除部分数据行用 delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用 drop
想保留表而将所有数据删除,如果和事务无关,用truncate即可。如果和事务有关,或者想触发trigger,还是用delete。
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。


6.delete是DML语句,不会自动提交。drop/truncate都是DDL语句,执行后会自动提交。

 

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

 

8、TRUNCATE   TABLE   删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用   DELETE。如果要删除表定义及其数据,请使用   DROP   TABLE   语句。  
    
9、对于由   FOREIGN   KEY   约束引用的表,不能使用   TRUNCATE   TABLE,而应使用不带   WHERE   子句的   DELETE   语句。由于   TRUNCATE   TABLE   不记录在日志中,所以它不能激活触发器。    
 

10、TRUNCATE   TABLE   不能用于参与了索引视图的表。  

分享到:
评论

相关推荐

    sql之truncate_、delete与drop区别.pdf

    sql之truncate_、delete与drop区别.pdf sql之truncate_、delete与drop区别.pdf

    sql之truncate、delete与drop区别

    sql之truncate、delete与drop区别

    数据库中truncate,delete,drop语句的比较

    作为初学者,有时容易混淆truncate,delete,drop之间的根本区别,所有今日小记一下。。。

    SQL语句中----删除表数据drop、truncate和delete的用法

    SQL语句中----删除表数据drop、truncate和delete的用法,对你爱不完

    实例理解SQL中truncate和delete的区别

    本文以一个简单实例为大家介绍了SQL中truncate和delete的区别,帮助大家理解,具体内容如下 ---创建表Table1 IF OBJECT_ID('Table1','U') IS NOT NULL DROP TABLE Table1 GO CREATE TABLE Table1 (ID INT NOT NULL,...

    MySQL删除表操作实现(delete、truncate、drop的区别)

    本文主要讲mysql中三种删除表的操作,delete语句、truncate语句以及drop语句的区别: 简介 delete 1、删除整张表的数据: delete from table_name; 2、删除部分数据,添加where子句: delete from table_name ...

    SQL删除语句DROP、TRUNCATE、 DELETE 的区别

    主要介绍了SQL删除语句DROP、TRUNCATE、 DELETE 的区别,帮助大家更好的理解和学习sql语句,感兴趣的朋友可以了解下

    SQL中Truncate的用法

    TRUNCATE TABLE 与没有 WHERE 子句的 DELETE 语句类似;但是,TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源更少。下面介绍SQL中Truncate的用法 当你不再需要该表时, 用 drop;当你仍要保留该表,但要...

    详解SQL中drop、delete和truncate的异同

     truncate和不带where子句的delete,以及drop 都会删除表内的数据 第二:不同点: 1. truncate和delete只删除数据不删除表的结构(定义)  drop 语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引...

    sqlserver中drop、truncate和delete语句的用法

    主要介绍了sqlserver中drop、truncate和delete语句的用法,本文图文并茂,内容清晰,需要的朋友可以参考下

    详解MySQL中DROP,TRUNCATE 和DELETE的区别实现mysql从零开始

     truncate和 delete只删除数据不删除表的结构(定义) drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的 存储过程/函数将保留,但是变为invalid状态. 2.delete语句是dml...

    复习笔记SQL34句

    SQL语句(01) SELECT 2 SQL语句(02) DISTINCT 2 SQL语句(03) WHERE 2 SQL语句(04) AND OR 2 SQL语句(05) IN 2 SQL语句(06) BETWEEN 3 SQL语句(07) LIKE 3 SQL语句(08) ORDER BY 3 ...SQL语句(34) Delete 13

    sql数据库修复

     对于SQL数据库 DROP TRUNCATE delete 等命令,支持逆向还原。数据库丢失的,误删除的,数据库所在分区格式化,自己用数据恢复软件恢复出来的数据库可以用本软件查看数据库的数据记录是否完整。如果记录少,或修复...

    SQL数据库修复软件

     对于SQL数据库 DROP TRUNCATE delete 等命令,支持逆向还原。数据库丢失的,误删除的,数据库所在分区格式化,自己用数据恢复软件恢复出来的数据库可以用本软件查看数据库的数据记录是否完整。如果记录少,或修复...

    数据库检测修复工具.zip

     SQL数据库修复软件支持NDF对于SQL数据库 DROP TRUNCATE delete 等命令,支持逆向还原。  SQL数据库丢失的,误删除的,数据库所在分区格式化,自己用数据恢复软件恢复出来的数据库可以用本软件查看数据库的数据...

    批量数据库执行SQL语句程序

    连接指定的SQL,查询出所有数据库。选择要执行SQL语句的数据库。SQLite 记录 历史服务器地址 方便下次...SQL语句 包含 delete drop truncate 关键字时需要 勾选 相应的 checkbox,防止误操作 vs2012 开发 framework 2.0

    简单了解SQL常用删除语句原理区别

    主要介绍了SQL删除语句DROP、TRUNCATE、 DELETE 的区别,帮助大家更好的理解和学习sql语句,感兴趣的朋友可以了解下 DROP: DROP TABLE test; 删除表test,并释放空间,将test删除的一干二净。 TRUNCATE: TRUNCATE ...

    SqlMDF数据提取工具

    8、在Sql Server运行在简单日志模式、完全日志模式或者大容量日志记录模式下数据被误(drop、delete、truncate)删除表恢复,updata后的数据恢复等。 9、Sql Serve文件无法附加情况下的数据恢复。 10、Sql Server...

Global site tag (gtag.js) - Google Analytics