关闭

SQL中 Delete、Truncate、Drop的区别与应用

1047人阅读 评论(0) 收藏 举报
分类:
相同点:
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
查看评论

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

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

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

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

DROP TABLE、TRUNCATE TABLE和DELETE的区别

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

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

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

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
  • 2005

Truncate Delete Drop命令的区别 .

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

数据库中truncate与delete的区别

而DELETE和TRUNCATE TABLE都是删除表中的数据的语句,它们的不同之处在于: 1、TRUNCATE TABLE比DELETE的速度快; 2、TRUNCATE TABLE 是删除表的所有行,而DELETE是删除表的一行或者多行(除非DELETE不带WHERE语句); 3、在删...
  • u011707402
  • u011707402
  • 2016-08-06 11:23
  • 1325

Mysql中 delect 、truncate、drop 的区别

学习Mysql的时候,我们会学习到表中记录的删除、表的删除、 数据库的删除等操作,那么那些删除语句中有什么不同呢? delect   from   table_name; truncate table  table_name; 区别 ...
  • WCCchangchun
  • WCCchangchun
  • 2016-04-22 11:22
  • 909

MySQL delete/truncate/drop的差别分析

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

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
  • 6935
    个人资料
    • 访问:297382次
    • 积分:2477
    • 等级:
    • 排名:第17597名
    • 原创:54篇
    • 转载:23篇
    • 译文:0篇
    • 评论:38条
    最新评论