数据创建和操作构成数据库的基础,我们分别将其称为DDL和DML。 DDL是数据定义语言的缩写。它可以创建或修改数据库中的数据结构,并且不能用于更改表中存在的数据。例如,我们具有仅创建具有指定表属性的表的命令,但从未向该表添加任何行。但是DML(数据处理语言)可以添加,删除或修改表中的数据。通常,DDL命令处理表结构,而DML命令处理实际数据。顺便说一句,为什么我们仅偏离“截断和删除之间的差异”主题?我们谈论DML和DDL的原因有很多。您将在即将进行的讨论中理解它。

Truncate和Delete

什么是截断命令?

截断命令的目的是删除整个表。 因此,当您使用Truncate命令时,您将丢失表上的所有数据,因此使用时应谨慎。 让我们知道如何使用它。

Truncate命令的语法:

TRUNCATE TABLE table_name;

在这里,应该指定整体上应该删除的表名称(table_name)。 这样可以确保在内存空间中有任何表。

什么是删除命令?

Delete命令的目的是从表中删除指定的行。 在此,此处使用“Where”子句来指定需要删除的行。 当我们不指定行时,该命令将删除表中的所有行。

Delete命令的语法:

DELETE FROM employee WHERE empid = 1011;

上面的语法会删除“employee”表中的所有行。 因此,结果表将不包含任何数据。

比较项 Truncate Delete
DDL还是DML? 它是DDL命令,在数据结构级别上运行。 DDL的其他示例是CREATE和ALTER。 它是DML命令,它对表数据进行操作。DML代表数据处理语言。如SELECT,UPDATE和INSERT之类的命令是DML的示例。DML代表数据处理语言。
它如何运作? 发出Truncate命令后,它只会查找指定的表。然后,它会从内存中完全删除所有数据。 原始表格数据在进行实际数据操作之前,已复制到称为“回滚”空间的空间。然后,在实际表数据空间上进行更改。
回滚 截断命令从不使用回滚空间,我们无法返回到原始数据。回滚空间是专用空间,在发出DML命令时会被占用。 Delete命令使用回滚空间,可以仅使用“Commit”或“RollBack”分别接受或取消更改。
触发器 截断是DDL命令,不允许使用触发器。 删除是DML命令,此处允许使用触发器。
哪个更快? 它可以删除所有数据,并且无需检查任何匹配条件。另外,原始数据不会复制到回滚空间,这样可以节省大量时间。这两个因素使“截断”比“删除”更快。 它使用回滚空间,并且始终必须在其上保留原始数据。这是一个额外的负担,因此比截断要花费更多的时间。
使用WHERE子句 由于Truncate从不寻找任何匹配条件,并且只会删除所有行,因此在此处不能使用“Where”子句。 但是总是可以借助Delete命令中的“where”子句来指定条件。
哪个占据更多空间? 截断将不使用回滚空间,并且可以节省该内存。 它需要以回滚空间形式进行备份,因此它需要比截断更多的内存空间。
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:Truncate和Delete
本文链接:https://www.vsdiffer.com/vs/truncate-vs-delete.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。