相同点:

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,再重新导入/插入数据。

转自:http://ourmysql.com/archives/151

SQL中drop,delete和truncate的异同相关推荐

  1. SQL语法中drop,delete与truncate的区别

    SQL语法中drop,delete与truncate的区别 delete是DML语句,可以选择删除部分数据,也可以选择删除全部数据:删除的数据可以回滚:不会释放空间 drop是DDL语句,删除表结构和 ...

  2. 详解SQL中drop、delete和truncate的异同

    第一:相同点: truncate和不带where子句的delete,以及drop 都会删除表内的数据 第二:不同点: 1. truncate和delete只删除数据不删除表的结构(定义)     dr ...

  3. oracle恢复drop建的表首次,Oracle中Drop,Delete,Truancate表恢复

    Oracle中Drop,delete,truancate表恢复 oracle中,常常会由于一些失误导致表的删除,以下是我写的一些表恢复的方法. 闪回模式得满足条件(启用闪回区和启用归档): 1.检查是 ...

  4. MySQL中(delete、truncate、drop) 的区别

    delete.truncate.drop的用法 MySQL 数据表中delete删除数据的通用语法: ###删除 students_tbl 表中 student_id 为3 的记录: delete f ...

  5. 【SQL】DELETE 和 TRUNCATE 的 异同点

    从逻辑上说,TRUNCATE 语句与 DELETE 语句作用相同,但是在某些情况下,两者在使用上有所区别. DELETE 是 DML 类型的语句:TRUNCATE 是 DDL 类型的语句.它们都用来清 ...

  6. SQL中drop table语句删除数据表

  7. SQL中删除数据,保留表结构。

    truncate和delete的区别 在SQL中,delete能快速删除数据表中所有记录,但保留数据表结构的语句是Truncate. 使用Truncate删除所有行,该语句总是比不带条件的DELETE ...

  8. SQL Server中drop、truncate和delete语句的用法

    SQL Server中drop.truncate和delete语句的用法 drop  删除表和表中的所有数据(不保留表的结构) drop table tablename truncate   删除表中 ...

  9. oracle中drop、delete和truncate的区别

    oracle中drop.delete和truncate的区别 oracle中可以使用drop.delete和truncate三个命令来删除数据库中的表,网上有许多文章和教程专门讲解了它们之间的异同,我 ...

  10. MySQL数据库中的删除命令:delete、truncate、drop

    MySQL删除数据的方式都有哪些? 咱们常用的三种删除方式:通过 delete.truncate.drop 关键字进行删除:这三种都可以用来删除数据,但场景不同. 一.从执行速度上来说 drop &g ...

最新文章

  1. Mysql5.6主从复制-基于binlog
  2. python面向对象设计模式_python面向对象之设计模式
  3. nginx如何处理php请求,Nginx是如何处理HTTP请求的
  4. 数据库(MySQL)
  5. 清除浮动的方法总结CSS实现水平垂直居中方法总结
  6. android 7.1 apk的systemuid [2]
  7. php 伪静态规则,在线将Apache Rewrite Rules伪静态规则转换为Nginx Rewrite伪静态规则...
  8. ASP.NET 使用Ajax
  9. 2020 年告别办公室!
  10. Grunt安装与入门
  11. hashmap的负载因子为什么是0.75而不是其他值或者1
  12. TCP发送接收数据2
  13. 【王道考研】计算机网络知识点
  14. WEB打印插件Lodop
  15. 手机修改ntp服务器地址,手机修改ntp服务器ip地址
  16. 计算机病毒 爱虫病毒(lovebug),有哪些是典型计算机病毒
  17. MATLAB运行程序后workspace是空的
  18. 用Moment.js 计算两个时间直接的间隔
  19. 【五一专属活动】向所有热爱分享的“技术劳动者”致敬
  20. python相册排版_Python3一键排版证件照(1寸照、2寸照) | 原创

热门文章

  1. 三、Java NIO Buffer
  2. 只更新服务器代码有变更的文件,签出TFS 2010变更集中的文件(check out files in TFS 2010 changeset)...
  3. surfacert能跑java么_不怕天气糟糕 出行全靠Surface来帮忙
  4. 完整的连接器设计手册_工业连接器如何选型
  5. MATLAB | 好看的相关系数矩阵图绘制
  6. energy plus matlab,EnergyPlus EMS和ExternalInterface入门学习 [第一篇——简介]
  7. 小管家进销存 v3.1 bt
  8. 分布式系统与海量数据处理
  9. Eclipse快捷键的设置和使用(大小写快捷键等)
  10. php递归算法获取树形菜单数据TreeMenu代码实现