zoukankan      html  css  js  c++  java
  • oracle中可以使用drop、delete和truncate三个命令来删除数据库中的表

    oracle中经常用到的删除语句主要有三种,分别是delete,truncate,drop。

    1. delete和truncate都是删除表中的内容而不能删除表的结构,而drop则是删除表的结构和内容(表将不复存在);

    2. delete可以删除整个表的数据也可以有选择性地删除某一条或多条数据,而truncate则是一次性删除整个表的数据;

    3. 使用delete删除的表数据并没有真正被删掉,数据占用的表空间还存在,相当于Windows中将数据删除到回收站中,日后有需要还可以恢复;

    4. 使用truncate删除的表数据会连同其占用的表空间一起直接被删掉,相当于Windows中使用del+shift键直接删除文件一样,无法恢复。

    相同点:

    1、truncate和不带where字句的delete以及drop都会删除表内数据
    2、truncate和drop都是ddl语句(数据定义语句),执行后会自动提交。

    不同点:

    1、truncate和delete都不删除表结构,只删除表数据。drop语句会将表结构、被依赖的关系、触发器、索引都删除,保留依赖于该表的存储过程和函数,但是变为invalid状态。
    2、delete是dml(数据库操作语言),这个操作会放到rollback segment中,会记录日志,可以通过回滚操作撤销删除的数据,必须通过提交才会真的删除数据。如果有相应的触发器trigger,则会触发。
    truncate、drop都是ddl(数据库定义语言),操作不能回滚,不会记录到日志中。且不会触发trigger。
    3、delete不影响表占用的表空间extent,高水线(high watermark)保持不动,即删除内容后,在插入别的语句时,表中的开始位置为删除前的最高位置。如删除前表中有三条数据,删除后插入新数据时,会从第四条开始插入。
    drop 将表所占用的表空间全部释放。
    truncate语句缺省情况下会将表空间释放到最小表空间minextents个extents,除非使用reuse storage;
    truncate语句会将高水位线复位。
    4、速度上,一般来说drop>truncate >delete。

  • 相关阅读:
    springboot 2.4.5 redis 配置类+缓存
    华为ensp模拟器 提示40 错误问题
    Nodejs
    Python PermissionError:[Errno 13]权限被拒绝 [winerr 5]
    Window10的linux docker 安装(wsl版本)
    window10的 Linux 子系统ssh配置
    vue3.0中provide和inject实现响应式传值
    正确开启vue3.0调试工具vue-devtools
    vue动态设置组件样式
    element-ui菜单导航的三种递归写法(三)
  • 原文地址:https://www.cnblogs.com/ooo888ooo/p/12614949.html
Copyright © 2011-2022 走看看