关闭

truncate,delete,drop

698人阅读 评论(0) 收藏 举报

truncate,delete,drop的比较:


-->

注意:这里说的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,再重新导入/插入数据

0
0
查看评论

DROP TABLE、TRUNCATE TABLE和DELETE的区别

声明:本篇文章来自百度知道答案整理,附上链接 http://zhidao.baidu.com/link?url=zPEGUyOzPprMej31Yc50dXKzYEkBHijignfVk8sdUUPN1DmnEmXbEagQJLVMI3W8OtHu7jjrAwbPlQFWnmsDGq 一、相同...
  • u013815649
  • u013815649
  • 2015-12-23 10:13
  • 4968

MySQL delete/truncate/drop的差别分析

用户想要删除数据表可以使用delete、truncate以及drop来删除数据。从功能上讲不带where子句的delete、truncate和drop是相似的。三者之间的不同之处主要包括以下几点:1、删除内容drop操作会删除表结构、依赖的约束、索引以及触发器,并且会将依赖该表的所有存储过程和视图设...
  • wanglei_storage
  • wanglei_storage
  • 2016-06-28 16:25
  • 410

Truncate Delete Drop命令的区别 .

truncate和不带where子句的delete, 以及drop都会删除表内的数据
  • wx3957156
  • wx3957156
  • 2014-10-15 18:20
  • 1476

数据库中删除语句Drop、Delete、Truncate的相同点和不同点的比较(举例说明)

转载来自: 数据库中删除语句Drop、Delete、Truncate的相同点和不同点的比较(举例说明)   数据库删除语句的分别介绍: Delete:用于删除表中的行(注:可以删除某一行;也可以在不删除表的情况下(即意味着表的结构、属性、索引完整)删除所有行) ...
  • shehun11
  • shehun11
  • 2014-10-24 11:20
  • 1310

了解mysql中drop,truncate、delete的区别

注意:这里的delete是指不带where子句的delete语句 一、相同点: truncate和不带where子句的delete, 以及drop都会删除表内的数据。 二、不同点: 1、truncate和 delete只删除数据不删除表的结构(定义) drop语句将删除表的结构被依赖...
  • vip_linux
  • vip_linux
  • 2013-02-21 08:51
  • 940

Truncate table,Delete From table,与Drop table的区别

1  delete table和delete from table的异同    delete table 与delete from table此两条语句没有实质的区别,都是删除表中的记录。     de...
  • lvxiaoting
  • lvxiaoting
  • 2015-12-18 17:03
  • 2002

sql中delete,drop ,truncate三者的区别

sql中delete,drop ,truncate都代表删除,但3者又有一些区别       1. truncate和 delete只删除数据不删除表的结构(定义) drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表...
  • xiaolingzinia
  • xiaolingzinia
  • 2014-03-13 19:22
  • 2141

truncate 与 delete 、drop 【PLSQL中truncate用法】

注意事项 1.在oracle 中数据删除后还能回滚是因为它把原始数据放到了undo表空间, 2.DML语句使用undo表空间,DDL语句不使用undo,  而delete是DML语句,truncate是DDL语句,别外DDL语句是隐式提交.所以truncate操用不能回滚,而d...
  • cicada688
  • cicada688
  • 2011-12-19 09:37
  • 6929

SQL 中 Delete、Truncate、Drop区别

删除表记录,快速删除表记录,删除表这些语句相信大家都会,下面整理一下Truncate、delete、drop用法区别:相同点 truncate和不带where子句的delete, 以及drop都会删除表内的数据 不同点: 1. truncate和 delete只删除数据不删除表的结构(定义) ...
  • dz45693
  • dz45693
  • 2010-01-19 16:30
  • 2456

比较truncate和delete 命令

比较truncate和delete 命令 1、在功能上,truncate是清空一个表的内容,它相当于delete from table_name。 2、 delete是dml操作,truncate是ddl操作;因此,用delete删除整个表的数据时,会产生大量的roolback,占用很多的rol...
  • quanhj
  • quanhj
  • 2012-02-24 12:04
  • 1603
    个人资料
    • 访问:3465177次
    • 积分:30204
    • 等级:
    • 排名:第202名
    • 原创:347篇
    • 转载:561篇
    • 译文:7篇
    • 评论:344条
    艺术设计类