📜  DELETE、DROP 和 TRUNCATE 之间的区别(1)

📅  最后修改于: 2023-12-03 15:14:39.975000             🧑  作者: Mango

DELETE、DROP 和 TRUNCATE 之间的区别

DELETE

DELETE 是用于从关系数据库中删除一个或多个行的 SQL 命令。

DELETE FROM table_name WHERE condition;
  • table_name:需要删除数据的表的名称。
  • condition:可以使用条件来指定要删除的行。

DELETE 语句仅删除表中的数据,而不删除表本身。删除的行可以使用ROLLBACK语句恢复。

DROP

DROP 用于删除数据库中的对象(如表、索引、列、约束等)。DROP 操作会立即从数据库中删除对象,因此在执行 DROP 操作之前请谨慎检查。一旦删除,对象中的数据将无法恢复,并且DROP 操作无法回滚。

DROP object_type object_name;
  • object_type:需要删除的对象类型(如 TABLE、VIEW、INDEX 等)。
  • object_name:需要删除的对象名称。
TRUNCATE

TRUNCATE 用于删除库中的表。TRUNCATE 操作删除表中的所有数据,而表本身的结构、关系不会受到影响。

TRUNCATE table_name;
  • table_name:需要清空的表名称。

TRUNCATE 操作无法恢复,并且不能将删除的数据回滚到数据中。

比较

DELETE 操作会记录日志,并且会逐行删除数据,所以它会消耗更多的资源。相比之下,TRUNCATE 的处理速度更快,因为它只是清空表中的数据,而不是逐行删除。

DROP 删除的是对象,而非数据,所以 DROP 不会记录日志。

综上,DELETE、DROP 和 TRUNCATE 的区别如下:

  • DELETE 删除的是表中特定的行,而 TRUNCATE 删除整个表中的数据。
  • DROP 删除对象本身,而 DELETE 和 TRUNCATE 只删除对象中的数据。
  • DELETE 和 TRUNCATE 可以撤销,而 DROP 无法撤销。