SQL truncate 、delete与drop区别

摘要:
SQL truncate 、delete与drop区别

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

  










来自为知笔记(Wiz)


免责声明:文章转载自《SQL truncate 、delete与drop区别》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇股票型基金买卖方法spring mvc获取路径参数的几种方式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

死锁及oracle死锁--转载

今天看群里在讨论数据库死锁的问题,也一起研究了下,查了些资料在这里总结下。 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永...

MySQL入门(一)

1. MySQL是什么? MySQL是一个小型的关系型数据库管理系统,开发者为瑞典MySQL AB 公司,在2008年1月16号被sun公司收购,之后又在2009年4月被Oracle公司收购,现属于Oracle旗下产品。 MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS(Relational Datab...

数据库与事务的管理

假设把事务管理比喻成一块砖的话,那么数据库管理就是一座房子,可见,事务管理是数据管理的基础而且它们有着紧密的联系。以下我先从宏观上介绍一下事务管理与数据库的管理。 一、导图宏观把控 事务是构成单一逻辑单元的工作集合,要么全然运行,要么全然不运行。它有四个性质,隔离性,它与数据管理的并发控制有关。持久性,它与数据库管理的恢复有关。原子性和一致性。他...

第5章 PCIe总线的事务层 分类: 浅谈PCI-E 2013-07-22 16:27 345人阅读 评论(0) 收藏

事务层是PCIe总线层次结构的最高层,该层次将接收PCIe设备核心层的数据请求,并将其转换为PCIe总线事务,PCIe总线使用的这些总线事务在TLP头中定义。PCIe总线继承了PCI/PCI-X总线的大多数总线事务,如存储器读写、I/O读写、配置读写总线事务,并增加了Message总线事务和原子操作等总线事务。 本节重点介绍与数据传送密切相关的总线事务,如...

LoadRunner函数

一、基础函数简介 在VU左边导航栏中,有三个LoadRunner框架函数,分别是vuser_init()、Action()、vuser_end()。这三个函数存在于任何Vuser类型的脚本中。 vuser_init:虚拟用户的初始化函数,一般将用户初始化的操作放在这里,如登录操作、分配内存等。在做uvser_init的时候,Controller的Vuse...

让IIS支持PUT和Delete请求的方法

默认情况下,IIS拒绝PUT和Delete请求,原因为IIS默认注册了一个名为"WebDAVModule"的自定义HttpModule导致的,WebDAV的全称为"Web-based Distributed Authoring and Versioning",它是一个在多用户之间辅助协同编辑和管理在线文档的HTTP扩展,该扩展使应用程序可以直接将文件写到We...

最新文章