截断并删除

Anonim

数据创建和操作构成了数据库的基础,我们将其分别称为DDL和DML。 DDL是数据定义语言的缩写。它可以创建或修改数据库中的数据结构,也不能用于更改表中的数据。例如,我们有一些命令只是创建一个具有指定表属性的表,但它从不向表中添加任何行。但是DML(数据操作语言)能够在表格中添加,删除或修改数据。作为一般规则,DDL命令处理表结构,而DML命令处理实际数据。是的,为什么我们只是偏离“截断和删除之间的区别”这个主题?我们谈到DML和DDL是有原因的。你会在即将到来的讨论中理解它。

什么是截断命令?

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

截断的语法:

TRUNCATE TABLE 表名;

在这里,您应该指定应该整体删除的表的名称。这确保了存储空间中可以存在任何表。以下是使用Truncate的示例。

下面是'employee'表,只看一下其中的数据行。

EMP-ID EMP-名 指定
1011 插口 书记
1012 红润 管理员
1014 南希 金融

现在,让我们在employee表上发出以下命令。

TRUNCATE TABLE 雇员;

以下是上述语法的结果,其中没有数据。

EMP-ID EMP-名 指定

什么是删除命令?

Delete命令的目的是从表中删除指定的行。这里,'Where'子句用于指定需要删除的行。当我们不指定行时,该命令将删除表中的所有行。只要看看它的语法。

删除 雇员;

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

删除 雇员 哪里 emp-id = 1011;

此语句只删除emp-id为1011的单行。因此结果表如下所示。

EMP-ID EMP-名 指定
1012 红润 管理员
1014 南希 金融

区别:

  • 截断是DDL;删除是DML: 我们在上面讨论了DDL和DML如何在上面的讨论中工作。 Truncate命令是一个DDL,它在数据结构级别上运行。但是Delete是一个DML命令,它对表数据进行操作。 DDL的其他示例是CREATE和ALTER。以类似的方式,我们可以说SELECT,UPDATE和INSERT等命令是DML的完美示例。
  • 截断和删除的工作原理如何: 一旦我们发出Truncate命令,它就会查找指定的表。然后它完全删除内存中的所有数据。但是在删除的情况下,工作程序略有不同。这里,在进行实际数据操作之前,原始表数据被复制到称为“回滚”空间的空间。然后在实际的表数据空间上进行改变。因此,它们的工作方式各不相同。

截短 - >从表中删除整个数据 - >现在释放表空间。

删除 - >将原始表数据复制到回滚空间 - >删除指定数据/整个表 - >释放表空间但填充回滚空间。

  • 回滚: 回滚就像我们的Microsoft配件中的撤消命令。它用于取消我们最近所做的更改,即从上次保存的点开始。要执行操作,应在编辑数据之前将数据复制到“回滚”空间。虽然这些回滚需要额外的内存,但它们对于恢复原始内存非常有用。特别是,当你错误地编辑时!现在让我们来看看关于回滚的截断和删除。如上所述,Truncate从不使用回滚空间,我们无法返回到原始数据。但删除命令使用回滚空间,我们可以使用'Commit'或'RollBack'分别接受或取消更改。
  • 触发器: 对于那些需要解释触发器的人来说,这里有一点注意事项。触发器是一组预先指定的操作/操作,应在表遇到特定条件时激活。例如,当员工与公司的经历超过一年时,我们可以触发更改工资金额。这些触发器也可以在其他表上运行。例如,我们可以在员工加薪后立即更新财务表。

Truncate是一个DDL命令,此处不允许触发。但删除是一个DML命令,这里允许触发器。

  • 哪个更快? 正如您猜测的那样,Truncate命令会比Delete命令更快。前者可以删除所有数据,无需检查任何匹配条件。此外,原始数据不会复制到回滚空间,这可以节省大量时间。这两个因素使Truncate比Delete更快。
  • 我们可以使用WHERE子句吗? 'Where'子句用于指定某些匹配条件,与Truncate无关。由于Truncate从不查找任何匹配条件而且只删除了所有行,因此我们无法在此处使用“Where”子句。但是我们总是可以在Delete命令的'where'子句的帮助下指定条件。
  • 哪个占用更多空间? truncate不会使用回滚空间,它会保存该内存。但是删除需要以回滚空间的形式进行备份,因此它需要比截断更多的内存空间。

所以这些是差异,让我们以表格形式看待。

S.No 差异在于 截短 删除
1. DDL还是DML? 它是一个DDL,它在数据结构级别上运行。 DDL的其他示例是CREATE和ALTER。 它是一个DML命令,它对表数据进行操作。 DML代表数据操作语言。诸如SELECT,UPDATE和INSERT之类的命令是DML的完美示例。 DML代表数据操作语言。

2. 它是如何工作的? 一旦我们发出Truncate命令,它就会查找指定的表。然后它完全删除内存中的所有数据。 这里,在进行实际数据操作之前,原始表数据被复制到称为“回滚”空间的空间。然后在实际的表数据空间上进行改变。
3. 回滚 Truncate命令从不使用回滚空间,我们无法返回原始数据。回滚空间是独占空间,在发出DML命令时占用。 Delete命令使用回滚空间,我们可以使用'Commit'或'RollBack'分别接受或取消更改。

4. 触发器 Truncate是一个DDL命令,不允许触发器。 Delete是DML命令,此处允许触发器。

5. 哪个更快? 它可以删除所有数据,无需检查任何匹配条件。此外,原始数据不会复制到回滚空间,这可以节省大量时间。这两个因素使Truncate比Delete更快。

它使用回滚空间,并且始终必须保留原始数据。这是一个额外的负担,反过来,需要花费很多时间比截断。
6. 我们可以使用WHERE子句吗? 由于Truncate从不查找任何匹配条件而且只删除了所有行,因此我们无法在此处使用“Where”子句。 但是我们总是可以在Delete命令的'where'子句的帮助下指定条件。
7. 哪个占用更多空间? truncate不会使用回滚空间,它会保存该内存。 它需要以回滚空间的形式进行备份,因此它需要比截断更多的内存空间。

了解任何两个实体之间的差异扩大了对两者的了解!您已登陆正确的路径,即网页,以了解差异,尤其是截断和删除命令之间的差异。希望你现在清楚它的差异,如果我们帮助你了解它,请告诉我们。你也可以帮我们指出哪些已经离开了!