sql - TRUNCATE 和 DELETE 的区别?

标签 sql oracle

这个问题在这里已经有了答案:





What's the difference between TRUNCATE and DELETE in SQL

(32 个回答)


7年前关闭。



TRUNCATEDELETE命令执行相同的工作,在这两种情况下都操作数据,那么为什么 DELETE命令属于 DML 命令和 TRUNCATE命令属于 DDL 命令?

最佳答案

删除

  • DELETE 是一个 DML 命令。
  • DELETE 语句使用行锁执行,表中的每一行都被锁定以进行删除。
  • 我们可以在 where 子句
  • 中指定过滤器
  • 如果 where 条件存在,它会删除指定的数据。
  • 删除会激活触发器,因为操作是单独记录的。
  • 比截断慢,因为它保留日志。
  • 回滚是可能的。

  • 截短
  • TRUNCATE 是一个 DDL 命令。
  • TRUNCATE TABLE 总是锁定表和页,但不是每一行。
  • 不能使用 Where 条件。
  • 它删除所有数据。
  • TRUNCATE TABLE 无法激活触发器,因为该操作不记录单个行删除。
  • 在性能方面更快,因为它不保留任何日志。
  • 回滚是不可能的。
  • 关于sql - TRUNCATE 和 DELETE 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25300810/

    相关文章:

    sql - 无法删除不是我创建的程序集, "DROP ASSEMBLY"不允许将架构名称指定为程序集名称的前缀

    sql - 带有嵌套表的物化 View

    Oracle:导入 CSV 文件

    sql - 在sql中选择带有短语计数的数据

    c++ - php 中的 Oci 比 occi 快得多吗?

    mysql - 条件 SQL 选择 : when select has a value select all but the smallest date

    sql - 显示结果时是否有连接选择查询列的方法?

    java - 在应用程序崩溃之前获得时间

    sql - 如何重写此查询以不使用 union 子句

    sql - 具有空值并使用 "!="过滤的 postgres 列