1

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

sql> Delete from .

这将从表中删除所有记录

sql> Delete from
      Where  ** 

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

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

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

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

句法:

sql>drop table

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

句法;

sql>truncate table**

我们可以回滚截断吗?

4

3 回答 3

12

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

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

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

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

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

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

于 2013-09-07T12:56:21.947 回答
1

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

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

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

看看这个

于 2013-09-07T12:51:35.350 回答
0

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

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

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

另请参阅:SQL 中 TRUNCATE 和 DELETE 有什么区别

于 2013-09-07T12:50:05.117 回答