DROP、TRUNCATE 和 DELETE 之间的区别和最佳用途是啥?它们可以回滚吗? [复制]

Posted

技术标签:

【中文标题】DROP、TRUNCATE 和 DELETE 之间的区别和最佳用途是啥?它们可以回滚吗? [复制]【英文标题】:What are differences between, and best purposes of, DROP, TRUNCATE, and DELETE? Can they be rolled back? [duplicate]DROP、TRUNCATE 和 DELETE 之间的区别和最佳用途是什么?它们可以回滚吗? [复制] 【发布时间】:2013-09-07 12:45:58 【问题描述】:

*Delete 是一种 DML(数据操作语言)。 Delete 命令从现有表中删除记录。*Delete 的语法是

sql> Delete from .

这会删除表格中的所有记录

sql> Delete from
      Where  ** 

这会删除一组特定的记录。

注意:Delete 不是 Autocommit 语句(实际上没有一个 DML 是自动提交的)

Drop 和 Truncate 都是 DDL(数据定义语言)。

删除 Delete or drops 表及其结构。它是自动提交语句。掉落物一旦发射就无法回滚。

语法:

sql>drop table

Truncate 是用于从表中删除所有记录的命令。但表的结构保持不变。也是自动提交语句。

语法;

sql>truncate table**

我们可以回滚截断吗?

【问题讨论】:

这个问题及其标题一团糟。请清理它们。 Oracle 提供了大量在线文档,包括所有产品的示例。我建议您查阅适用于您正在使用的 Oracle 版本的手册,阅读这些命令并尝试示例。通过这种方式,您将获得使用这些命令的宝贵经验,否则您将无法获得这些经验。祝你好运。 【参考方案1】:

DELETE 处理使用WHERE 语句选择的行。它的使用是运行生产应用程序规则的一部分。例如,您可以删除一个多月前标记为“完成”的所有行。

DELETE 可以作为事务的一部分进行。也就是说,DELETE 操作可以提交或回滚。

TRUNCATE 快速删除表中的所有行,同时保持表定义。 (逐行删除可能需要一些时间,尤其是对于具有大量键的表。)对于诸如开始为每周生产为空的日志表之类的事情非常有用。它具有重置索引和释放未使用的磁盘存储的便利副作用。例如,我使用 TRUNCATE 清除了曾经包含数百万行的日志表的内容,以切换到仅包含一周行的操作规程。

DROP 快速删除所有行和表的定义。它最常用于为操作设置 DBMS 架构或将数据迁移到新服务器。

TRUNCATE 和 DROP 被视为数据定义语句。因此,它们不能成为事务的一部分,也不能回滚。

如果您发现自己在日常生产中使用了 TRUNCATE 或 DROP,您应该小心理解为什么要这样做。与 DELETE 相比,它们是钝器。

【讨论】:

我非常喜欢你的回答,因为你已经告诉了每个命令的定义和我能想到使用它们的实际位置。但我希望您能提供更多关于DROP 命令实际应用领域的文章。 @Babai:- 看看这个:- docs.oracle.com/cd/B19306_01/server.102/b14200/… 这肯定会填满你正在寻找的其余部分!!!! @RahulTripathi 你能帮我在 Ubuntu OS 中安装 Oracle11g 吗?我在 Windows 中使用它,但不知道我应该如何在 Ubuntu 中进行操作。 @Babai:- 虽然我很乐意将此视为一个单独的问题。但是,如果有帮助,您可以检查一下:- forums.oracle.com/thread/2461988?start=0&tstart=0【参考方案2】:

DELETE 命令用于从表中删除行。 WHERE 子句只能用于删除某些行。

TRUNCATE 删除表中的所有行。该操作无法回滚,也不会触发任何触发器。

DROP 命令从数据库中删除一个表。所有表的行、索引和权限也将被删除。不会触发任何 DML 触发器。

签出this,

【讨论】:

【参考方案3】:

“Drop”完全删除表格。它不再存在。

“截断”是一种从表中删除所有行的快速方法。

“删除”删除符合条件的行。

另请参阅:What's the difference between TRUNCATE and DELETE in SQL

【讨论】:

以上是关于DROP、TRUNCATE 和 DELETE 之间的区别和最佳用途是啥?它们可以回滚吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

delete,truncate,drop区别

truncate和delete之间有啥区别

详解SQL中drop,delete和truncate的异同

oracle中delete,truncate 和 drop的区别

MySQL——delete 和 truncate 以及 drop 区别

delete,truncate 和 delete之间的区别