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

TRUNCATE   TABLE   在功能上与不带   WHERE   子句的   DELETE   语句相同:二者均删除表中的全部行。但   TRUNCATE   TABLE   比   DELETE   速度快,且使用的系统和事务日志资源少。    
   
DELETE   语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE   TABLE   通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。  
   
TRUNCATE   TABLE   删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用   DELETE。如果要删除表定义及其数据,请使用   DROP   TABLE   语句。  
   
对于由   FOREIGN   KEY   约束引用的表,不能使用   TRUNCATE   TABLE,而应使用不带   WHERE   子句的   DELETE   语句。由于   TRUNCATE   TABLE   不记录在日志中,所以它不能激活触发器。    
   
TRUNCATE   TABLE   不能用于参与了索引视图的表。

相同之处:

1.truncate和不带where子句的delete、以及drop都会删除表内的数据。

2.drop、truncate都是DDL语句(数据定义语言),执行后会自动提交。

不同之处:

1.drop和delete只是删除表的数据(定义),drop语句将删除表的结构、被依赖的约束(constrain)、触发器 (trigger)、索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid状态。

2.delete语句是DML语言,这个操作会放在rollback segement中,事物提交后才生效;如果有相应的触发器(trigger),执行的时候将被触发。truncate、drop是DDL语言,操作后即 生效,原数据不会放到rollback中,不能回滚,操作不会触发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,再重新导入、插入数据。

6.delete是DML语句,不会自动提交。drop/truncate都是DDL语句,执行后会自动提交。

drop一般用于删除整体性数据 如表,模式,索引,视图,完整性限制等

delete用于删除局部性数据 如表中的某一元组

DROP把表结构都删了

DELETE只是把数据清掉

当你不再需要该表时, 用 drop;

当你仍要保留该表,但要删除所有记录时, 用 truncate;

当你要删除部分记录时(always with a WHERE clause), 用 delete.

转载于:https://www.cnblogs.com/sap-BI/p/3150754.html

HANA中SQL之truncate 、delete与drop区别相关推荐

  1. truncate delete 与 drop的区别

    一张表几亿条数据.根据task_id删除几千万. delete删除后查询,发现查询速度还是没有变快.explain查看 rows并没有发生变化.查询速度肯定也不会变化.原因? truncate del ...

  2. [转]SQL truncate 、delete与drop区别

    相同点: 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DDL语句(数据定义语言),执行后会自动提交. 不同点: 1. t ...

  3. Oracle truncate、 delete、 drop区别

    相同点: 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DDL语句(数据定义语言),执行后会自动提交. 不同点: 1. t ...

  4. truncate 、delete与drop区别

    相同点: 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DDL语句(数据定义语言),执行后会自动提交. 不同点: 1. t ...

  5. oracle中drop和delete,oracle中delete drop truncate的用法和区别

    数据库的运维中,经常会遇到delete drop truncate的操作,那么如何去把握它们的用法和区别呢? 比如当数据库空间爆满,已经增长到存储空间单个存储文件的最大值32G.你需要通过一些办法释放 ...

  6. sql语句-删除表数据drop、truncate和delete的用法

    一.SQL中的语法 1.drop table 表名称 eg: drop table course 2.truncate table 表名称 eg: truncate table course 3.de ...

  7. MySql中truncate,delete,drop的异同点

    truncate,delete,drop的异同点 注意:这里说的delete是指不带where子句的delete语句 相同点:truncate和不带where子句的delete, 以及drop都会删除 ...

  8. mysql中delete,truncate,drop区别

    drop和delete只是删除表的数据(定义),drop语句将删除表的结构.被依赖的约束(constrain).触发器 (trigger).索引(index);依赖于该表的存储过程/函数将保留,但是变 ...

  9. Oracle中TRUNCATE、DELETE和DROP的区别?

    Oracle中TRUNCATE.DELETE和DROP的区别? 区别: 1.删除表时表数据方面 delete是每次从表中删除一行,同时将删除操作作为事务写进日志以便回滚操作,在有该操作的触发器时,执行 ...

最新文章

  1. 程序员笔试面试后上机_2021年国考笔试成绩查询后,面试准备阶段需要做好四方面...
  2. Struts的select两种遍历方法
  3. 烦神的斐波那契洛谷-1306-斐波那契公约数
  4. java字符串拼接例子_Java详解【String】+【StringBuilder vs StringBuffer】+【字符串拼接】...
  5. 将网桥的配置写进去/etc/sysconfig/network-scripts/ifcfg-xxx
  6. centos7安装ssh服务
  7. Jetty 和tomcat 比较研究初探
  8. sap采购申请自动转采购订单_SAP idoc功能够强大: 采购订单修改自动触发销售订单修改...
  9. 《图像处理实例》 之 寻找山脊线
  10. 利用python进行数据分析书籍_利用Python进行数据分析 (O'Reilly精品图书系列) 内省...
  11. 蓝奏网盘 解析 php,自制蓝奏云网盘解析接口全解
  12. FC协议监控卡(FC协议分析仪),FC Monitor
  13. 盘古搜索发布大众版iPhone客户端
  14. 问答搜索 全网搜索平台
  15. iOS学习笔记-018.舒尔特表游戏
  16. c语言对编程对作用,c语言编程心得体会
  17. Android 4.2系统的手机使用LEAP企业Wifi网络 ( by quqi99 )
  18. 闲来没事学Dart(七)函数
  19. 修复计算机黑屏,笔记本电脑黑屏怎么修复 笔记本电脑黑屏修复方法【详解】...
  20. 2k14无法打开因为计算机,2k14闪退怎么办 2k14闪退解决方法

热门文章

  1. 360更新补丁一直提示正在安装_Microsoft .NET Framework 4.7 安装失败,产生阻滞的问题...
  2. dart 语言中的列表(List)
  3. python产生二维复数_Python基础知识大汇总--从放弃到入门
  4. Java回调网址_极光短信- 回调接口 - 极光文档
  5. 如何让地面不起灰_水泥地面起灰怎么办?
  6. oracle自动结束连接,如何在Oracle8x中实现自动断开后再连接?
  7. 上门挂画服务_瀑布山水画挂在哪里好 弄懂这2点挂画没烦恼
  8. web前端知识天天学(3)
  9. Spring Boot 2.x 多数据源配置之 JPA 篇
  10. ValueAnimator 使用注意事项