DELETE、TRUNCATE 、DROP

138 阅读1分钟

DELETE:

  • 操作: DELETE 语句用于删除表中的行。
  • 记录: 每次删除都被记录在事务日志中,可以进行回滚。
  • 触发器: 执行 DELETE 时会激活相关的删除触发器。
  • 条件删除: 可以带有 WHERE 子句,用于删除满足特定条件的行。
  • 事务: 是 DML(数据操纵语言)命令,可以回滚。

TRUNCATE:

  • 操作: 用于删除表中的所有行。
  • 速度: 操作速度相对较快,因为不记录每行的删除,不触发触发器。
  • 日志记录: TRUNCATE 操作不记录在事务日志中,因此不能回滚。
  • 触发器: 不会触发删除触发器。
  • 表空间: 不释放表所占用的空间。
  • 重置标识列: 如果有标识列,TRUNCATE 会重置标识列的种子。

DROP:

  • 操作: 用于删除整个表,包括表的结构。
  • 速度: 是最快的删除操作,因为不仅不记录删除,也不需要扫描表。
  • 回滚: 无法回滚,操作是不可逆的。
  • 触发器: 删除表时会触发与表相关的删除触发器。
  • 表空间: 释放表所占用的空间。

在选择使用 DELETE、TRUNCATE 或 DROP 时,需要考虑到具体的业务需求和操作的影响。DELETE 适用于部分行的条件删除,可以回滚;TRUNCATE 适用于整个表的快速清空,但不可回滚;DROP 适用于删除整个表结构。