截断(truncate)和删除(delete)的区别

数据创建和操作是数据库的基础,我们分别称之为DDL和DML。DDL是数据定义语言的缩写。它可以创建或修改数据库中的数据结构,而这些结构不能用于更改表中的数据。例如,我们的命令只创建一个具有指定表属性的表,但它从不向表中添加任何行。但是数据操作语言DML能够添加、删除或修改表中的数据。一般来说,DDL命令处理表结构,而DML命令处理实际数据。顺其自然,为什么我们偏离了“截短和删除的区别”这个主题呢?...

截断(truncate)和删除(delete)的区别

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

什么是截断命令(a truncate command)?

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

Truncate的语法:

截断表名;

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

下面是“employee”表,只需查看其中的数据行即可。

emp id emp名称 任命
1011 杰克 办事员
1012 玫瑰色 行政
1014 南希 财务

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

截断表;

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

emp id emp名称 任命

什么是删除命令(a delete command)?

Delete命令的目的是从表中删除指定的行。在这里,“Where”子句用于指定需要删除的行。如果不指定行,命令将删除表中的所有行。看看它的语法就知道了。

从员工中删除;

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

从emp id=1011的员工中删除;

此语句只删除emp id为1011的一行,因此生成的表如下所示。

emp id emp名称 任命
1012 玫瑰色 行政
1014 南希 财务

差异:

  • Truncate是一个DDL;Delete是一个DML:在上面的讨论中,我们已经讨论了DDL和DML是如何工作的。Truncate命令是一个DDL,它在数据结构级别上运行。但是Delete是一个DML命令,它对表数据进行操作。DDL的其他例子还有CREATE和ALTER。以类似的方式,我们可以说SELECT、UPDATE和INSERT等命令是DML的完美示例。
  • Truncate和Delete是如何工作的:只要发出Truncate命令,它就会查找指定的表。然后它将从内存中完全删除所有数据。但在删除的情况下,工作程序几乎没有什么不同。在这里,在执行实际的数据操作之前,将原始表数据复制到称为“回滚”空间的空间中。然后对实际的表数据空间进行更改。所以,两者的工作方式不同。

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

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

  • 回滚:回滚就像我们的Microsoft附件中的撤消命令。它用于取消我们最近所做的更改,即从上次保存的点。要执行此操作,应在编辑数据之前将其复制到回滚空间。尽管这些回滚需要额外的内存,但它们对于恢复到原始状态非常有用。尤其是,当你错了一些编辑的时候!现在让我们来看看关于回滚的截断和删除。正如我们上面所讨论的,截断从不使用回滚空间,我们无法返回到原始数据。但是Delete命令使用回滚空间,我们可以使用Commit或RollBack分别接受或取消更改。
  • 触发器:对于那些需要关于触发器的解释的人,这里有一个小提示。触发器是一组预先指定的操作/操作,当表遇到特定条件时应激活这些操作。例如,当员工在公司的工作经历超过一年时,我们可以触发更改工资金额。这些触发器也可以在其他表上工作。例如,我们可以在员工加薪后立即更新财务表。

Truncate是DDL命令,这里不允许使用触发器。但是Delete是DML命令,这里允许触发器。

  • 哪个更快?正如您所猜测的,Truncate命令将比Delete命令更快。前者可以删除所有数据,不需要检查任何匹配条件。而且,原始数据不会复制到回滚空间,这节省了大量时间。这两个因素使得Truncate比Delete工作得更快。
  • 我们能用WHERE子句吗?Where子句用于指定某些匹配条件,与Truncate无关。因为Truncate从不寻找任何匹配条件,它只是删除所有行,所以我们不能在这里使用Where子句。但是我们总是可以借助Delete命令中的where子句来指定条件。
  • 哪个更占空间?truncate不会使用回滚空间,它会节省内存。但是delete需要回滚空间形式的备份,因此它需要比truncate更多的内存空间。

这些就是区别,让我们以表格的形式来看。

序号 差异 截断 删除
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不会使用回滚空间,它会节省内存。 它需要一个回滚空间形式的备份,因此它需要比truncate更多的内存空间。

了解任何两个实体之间的差异可以拓宽对这两个实体的了解!您已经在正确的路径(即网页)上登陆,以了解truncate和delete命令之间的差异。希望你现在清楚它的区别,让我们知道如果我们帮助你理解它。你也可以帮我们指出剩下的是什么!

  • 发表于 2021-06-25 01:12
  • 阅读 ( 310 )
  • 分类:IT

你可能感兴趣的文章

ddl公司(ddl)和dml公司(dml)的区别

...言。这种语言用于改变数据库的结构。Create、Alter、Drop、Truncate是一些DDL命令。 图01:SQL ddl命令示例 请参阅以下用TSQL(MSSQL server)编写的DDL示例; 下面的语句将创建一个名为“employee”的数据库。 创建数据库员工; 下面的语句...

  • 发布于 2020-10-24 04:48
  • 阅读 ( 264 )

删除(deletion)和染色体复制(duplication of chromosome)的区别

...染色体复制 4. 染色体缺失与重复的相似性 5. 并排比较-删除与重复染色体的表格形式 6. 摘要 什么是染色体缺失(deletion of chromosome)? 染色体缺失是一种染色体重排。这只是染色体臂的一部分缺失。染色体可以从两个不同的位置...

  • 发布于 2021-03-04 18:47
  • 阅读 ( 308 )

如何在excel中使用trunc函数

...别。 什么是trunc函数(the trunc function)? TRUNC函数将数字截断为指定的小数位数。使TRUNC不同于其他去掉小数点的函数的关键因素是TRUNC函数不舍入值。如果使用TRUNC删除值4.68中的所有小数,则结果为4。 TRUNC函数需要两条信息: =T...

  • 发布于 2021-04-02 13:06
  • 阅读 ( 218 )

如何在linux上安全地删除文件

...盖。 用随机数据再覆盖5次。 将文件重命名为随机值。 截断文件。 如果你觉得这些都太过分了,那你就有好朋友了。在奥克兰大学教授彼得·古特曼看来,这也太过分了。他在1996年发表了一篇讨论这些技术的论文,由此产生了...

  • 发布于 2021-04-03 10:54
  • 阅读 ( 194 )

如何阻止超过140个字符的tweet(如果你真的必须的话)

...feed只发送短的文本信息,那就太好了。 在编写Tweets时,Truncator会为Firefox用户修剪Twitter消息,但Opera似乎没有选择。随着Twitter用户厌倦了双重生活,这种情况可能会很快改变。 请注意,所有这些扩展都需要权限才能查看您在其...

  • 发布于 2021-04-07 02:57
  • 阅读 ( 181 )

截断(truncate)和删除(delete)的区别

...因的。在前面的讨论中你会明白的。 什么是截断命令(a truncate command)? Truncate命令的目的是删除整个表。因此,当您使用Truncate命令时,您将丢失表中的所有数据,在使用它时应谨慎。让我们知道如何使用它。 Truncate的语法: 截...

  • 发布于 2021-06-25 01:12
  • 阅读 ( 310 )

切(cut)和删除(delete)的区别

“剪切”和“删除”的主要区别在于,“剪切”从文档中删除文本或其他内容并将其保存到剪贴板,而“删除”从文档中删除文本或其他内容而不保存到剪贴板。 在使用Microsoft Word等计算机应用程序时,需要执行各种活动,如创...

  • 发布于 2021-06-30 17:08
  • 阅读 ( 433 )

新的(new)和C++中删除运算符(delete operator in c++)的区别

...关键领域 1、C++中新操作符是什么?定义、功能2。C++中的删除操作符是什么?定义、功能3。C++中新的和删除操作符的区别是什么? 关键术语 C++,删除运算符,内存分配,新操作符 什么是C++中的新(new in c++)? 新操作符分配内存...

  • 发布于 2021-07-01 04:35
  • 阅读 ( 183 )

滴(drop)和在sql中删除(delete in sql)的区别

... sql)? DROP是SQL中的DDL命令。 程序员可以使用DROP从RDBMS中删除现有的数据库。 删除数据库信息; 上面的命令删除/删除名为schoolInfo的数据库。 此外,还可以对数据库对象(如表)执行DROP。下面是一个例子。 下桌学生; 该命令...

  • 发布于 2021-07-01 13:05
  • 阅读 ( 233 )

滴(drop)和截断(truncate)的区别

Drop和Truncate的主要区别在于,Drop是一个DDL命令,有助于删除表的所有记录、删除表结构并从系统中删除数据库,而Truncate是一个DDL命令,有助于从表中删除记录。 RDBMS一般是按照关系模型设计的数据库管理系统。它有助于在数据...

  • 发布于 2021-07-02 00:39
  • 阅读 ( 229 )

相关推荐