永发信息网

oracle中delete,truncate 和 drop的区别

答案:5  悬赏:60  手机版
解决时间 2021-04-06 08:57
oracle中delete,truncate 和 drop的区别
最佳答案
delete:dml语句,用于删除数据,可以回滚(反悔),可以精确删除。该语句非常耗费资源,需要写undo回滚段,占用大量内存。delete语句是所有dml语句中最消耗资源的语句。
truncat:DDL语句,清除数据。该操作不可回滚,不可精确删除。一旦操作,那么不可找回。节省资源,但是该命令每次清除的基本单位为“段”,比如:table,partition,subpartition等,不能选择清除某些数据。
drop:DDL语句,删除对象操作,上面的delete和truncate都是针对数据的,drop是针对数据的载体的,当然他也可以删除其他的载体,面对基本对象为段。如果不加purge参数,可在回收站找回,否则不可找回。
举个例子:船上有10个人,delete可以定点让某一个人下船,truncate可以让某一层的人下船(分区),或者全部下船,drop就是连船带人一起消失。
全部回答
这个比较简单了,有很多地方不同,百度上一搜一堆。
大概说下
1、DELETE是逐行删除,所以在删除大量数据的时候速度慢,影响数据库效率;
TRUNCATE的话,是整表删掉(专业术语叫截短,截断),删除大量数据的时候有优势,不影响数据库运行效率。
2、DELETE触发行级触发器,T则不触发行级的触发器。
3、DELETE会做日志什么的bulabula之类的,这样可以在必要的时候回滚。T则没这么多规则,T了之后找不回来。
语法
delete from aa
truncate table aa
区别
1.delete from后面可以写条件,truncate不可以。
2.delete from记录是一条条删的,所删除的每行记录都会进日志,而truncate一次性删掉整个页,因此日至里面只记录页释放,简言之,delete from更新日志,truncate基本不,所用的事务日志空间较少。
3.delete from删空表后,会保留一个空的页,truncate在表中不会留有任何页。
4.当使用行锁执行 DELETe 语句时,将锁定表中各行以便删除。truncate始终锁定表和页,而不是锁定各行。
5.如果有identity产生的自增id列,delete from后仍然从上次的数开始增加,即种子不变,而truncate后,种子会恢复初始。
6.truncate不会触发delete的触发器,因为truncate操作不记录各个行删除。
总结
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,尤其没有备份的时候.否则哭都来不及。
6.使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.     想删除表,当然用drop    
想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。
语法
delete from aa
truncate table aa
区别
1.delete from后面可以写条件,truncate不可以。
2.delete from记录是一条条删的,所删除的每行记录都会进日志,而truncate一次性删掉整个页,因此日至里面只记录页释放,简言之,delete from更新日志,truncate基本不,所用的事务日志空间较少。
3.delete from删空表后,会保留一个空的页,truncate在表中不会留有任何页。
4.当使用行锁执行 DELETe 语句时,将锁定表中各行以便删除。truncate始终锁定表和页,而不是锁定各行。
5.如果有identity产生的自增id列,delete from后仍然从上次的数开始增加,即种子不变,而truncate后,种子会恢复初始。
6.truncate不会触发delete的触发器,因为truncate操作不记录各个行删除。
总结
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,尤其没有备份的时候.否则哭都来不及。
6.使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大. 想删除表,当然用drop
想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。
语法
delete from aa
truncate table aa
区别
1.delete from后面可以写条件,truncate不可以。
2.delete from记录是一条条删的,所删除的每行记录都会进日志,而truncate一次性删掉整个页,因此日至里面只记录页释放,简言之,delete from更新日志,truncate基本不,所用的事务日志空间较少。
3.delete from删空表后,会保留一个空的页,truncate在表中不会留有任何页。
4.当使用行锁执行 DELETe 语句时,将锁定表中各行以便删除。truncate始终锁定表和页,而不是锁定各行。
5.如果有identity产生的自增id列,delete from后仍然从上次的数开始增加,即种子不变,而truncate后,种子会恢复初始。
6.truncate不会触发delete的触发器,因为truncate操作不记录各个行删除。
总结
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,尤其没有备份的时候.否则哭都来不及。
6.使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大. 想删除表,当然用drop
想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
哪位高手能有LHY这三个字母组成一串因为字母,
待退休是什么意思
(-)×2-(保留三个有效数字).
俏也不争春下一句,俏也不争春,下一句是什么
三相电和两厢电有什么区别?
下个路口见翻译成英文是?
求SHE上过所有的电视节目及Selina、Hebe、Ell
我十八号来的月经,可是我十九号去玩了大摆锤
表示以后不联系的句子,许多年以后表达的意思
下列加下划线成语使用正确的一项是A.盛夏的深
这种视频如何下
犁字怎么组词
勤学故事简短几则
餐补发的购物卡算赔偿金中的工资吗
关于济南的句子赏析,老舍的《吊济南》中对比
推荐资讯
窗帘买了一整片,但是罗马杆中间是支架固定的
广州去面部毛价格??
艾乐夫雪肌美白去斑精华液怎么样
Connie arrived the village a snowy night.
板块构造学说认为,地球岩石圈是由板块拼合而
单选题180°E和180°W的关系是A.两条相邻的经
单选题五代时期,有人喊出了“天子宁有种乎,
惠科显示器怎样?
如何用圆滚梳吹波浪不卡头发呢?
某天傍晚,北京的气温由中午的零上3℃下降了5
残疾人低保每月多少钱,低保每个月多少钱?多
超频黑屏怎么办,Cpu超频时内存电压需要加吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?