delete drop truncate 删去语法的差异ITeye - 众发娱乐

delete drop truncate 删去语法的差异ITeye

2019年03月13日08时03分09秒 | 作者: 谷梦 | 标签: 删去,句子,数据 | 浏览: 1853

留意:这儿说的delete是指不带where子句的delete句子
相同点
truncate和不带where子句的delete, 以及drop都会删去表内的数据

不同点:
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,再从头导入/刺进数据
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表众发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章