oracle删除命令的区别.doc

oracle删除命令的区别.doc

ID:51691616

大小:38.45 KB

页数:2页

时间:2020-03-15

oracle删除命令的区别.doc_第1页
oracle删除命令的区别.doc_第2页
资源描述:

《oracle删除命令的区别.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、truncate、delete与drop区别相同点:truncate和不带where子句的delete,以及drop都会删除表内的数据不同点:1.truncate和delete只删除数据不删除表的结构(定义)drop语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid状态。2.delete语句是数据库操作语言(dml),这个操作会放到rollbacksegement中,事务提交之后才生效;如果

2、有相应的trigger,执行的时候将被触发。truncate、drop是数据库定义语言(ddl),操作立即生效,原数据不放到rollbacksegment中,不能回滚,操作不触发trigger。3.delete语句不影响表所占用的extent,高水线(highwatermark)保持原位置不动显然drop语句将表所占用的空间全部释放。truncate语句缺省情况下见空间释放到minextents个extent,除非使用reusestorage;truncate会将高水线复位(回到最开始)。4.速

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

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

5、计数值重置为该列的种子。如果想保留标识计数值,请改用  DELETE。如果要删除表定义及其数据,请使用  DROP  TABLE  语句。     对于由  FOREIGN  KEY  约束引用的表,不能使用  TRUNCATE  TABLE,而应使用不带  WHERE  子句的  DELETE  语句。由于  TRUNCATE  TABLE  不记录在日志中,所以它不能激活触发器。       TRUNCATE  TABLE  不能用于参与了索引视图的表。  相同之处:1.truncate和不

6、带where子句的delete、以及drop都会删除表内的数据。2.drop、truncate都是DDL语句(数据定义语言),执行后会自动提交。不同之处:1.drop和delete只是删除表的数据(定义),drop语句将删除表的结构、被依赖的约束(constrain)、触发器(trigger)、索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid状态。2.delete语句是DML语言,这个操作会放在rollbacksegement中,事物提交后才生效;如果有相应的触发器(

7、trigger),执行的时候将被触发。truncate、drop是DDL语言,操作后即生效,原数据不会放到rollback中,不能回滚,操作不会触发trigger。3.delete语句不影响表所占用的extent、高水线(highwatermark)保持原位置不动。drop语句将表所占用的空间全部释放。truncate语句缺省情况下将空间释放到minextents的extent,除非使用reusestorage。truncate会将高水线复位(回到最初)。4.效率方面:drop>truncate

8、>delete5.安全性:小心使用drop与truncate,尤其是在没有备份的时候,想删除部分数据可使用delete需要带上where子句,回滚段要足够大,想删除表可以用drop,想保留表只是想删除表的所有数据、如果跟事物无关可以使用truncate,如果和事物有关、又或者想触发trigger,还是用delete,如果是整理表内部的碎片,可以用truncate跟上reusestroage,再重新导入、插入数据。6.delete是DML语句,不会自动提交。drop/truncate都是DDL语句

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。