目录

Truncate和Delete之间的区别是什么?

何时使用TRUNCATE

何时使用DELETE命令

结论


在SQL Server中,有几种方法可以从表中删除行。您可以使用TRUNCATE和DELETE命令。虽然两个命令的最终结果是相同的,但您应该了解一下它们之间非常重要的差异。

Truncate和Delete之间的区别是什么?

TRUNCATE命令类似于DELETE命令,没有WHERE子句,安全网的数量少得多。

何时使用TRUNCATE

TRUNCATE表时,会记录较少的信息。这意味着TRUNCATE语句执行速度非常快;但是,它是以不记录每行被删除为代价的。这意味着,在使用命令时需要非常小心(实际上也要小心DELETE!)。

虽然您可以在SQL Server中回滚TRUNCATE命令,但在Oracle中无法执行相同的操作。

TRUNCATE命令很简单但非常危险。以下是从employee表中删除所有行的示例:

TRUNCATE TABLE employee

如果您错误地执行了TRUNCATE语句,则恢复起来要困难得多,并且您可能会在此过程中丢失数据。TRUNCATE命令会记录它删除的页面,因此可以使用一些高级代码恢复页面。

以下是使用TRUNCATE的一些原因:

  1. 您希望将表“重置”为空状态。将删除所有行,并将标识键值重置为初始定义的值。
  2. 您需要以超快速的方式清除表数据。当您需要重复导入测试数据或者您有使用工作表或临时表来存储信息的例程时,我可以看到这种情况。
  3. 您希望从表中删除行而不激活删除后的表触发器。

请记住,TRUNCATE将锁定表,因此显然的,不要在许多并发用户共享的表上使用此命令。

何时使用DELETE命令

DELETE命令用于从数据库中删除记录。这是最常见的方式。在最简单的形式中,您可以从数据库中删除所有行,或者可以添加WHERE子句以仅删除符合条件的行。

执行DELETE命令时,DBMS会记录所有已删除的行。这意味着比错误中TRUNCATE更容易从错误中恢复。

命令

DELETE FROM employee

将从员工表中删除所有员工;然而,

DELETE FROM   employee
WHERE  firstName = ‘Kris’

删除名字为Kris的所有员工。

我建议在所有情况下使用DELETE语句,除了那些值得TRUNCATE的特殊情况。

以下是在DELETE期间发生而在TRUNCATE期间不发生的一些事情:

  1. 在受影响的表上执行任何删除触发器。
  2. 您可以删除已定义外键约束的记录。如果存在相同的约束,则无法执行TRUNCATE。
  3. 记录删除不会重置身份密钥。当您需要保证每一行使用之前从未使用过的密钥时,这一点很重要。也许,这需要出于审计原因。
  4. 根据您使用的锁定,行锁定位于已删除的已删除行上。未受影响的行保持解锁状态。

结论

我应该指出TRUNCATE被认为是DDL命令;而DELETE是DML命令。我认为这种区别应该有助于您进一步了解何时使用任何一个命令以及这样做的含义。

简而言之,使用DELETE从表中删除一行或多行。只有在特殊情况下,例如当您需要将表重置为其初始状态时才应考虑TRUNCATE。

SQL的TRUNCATE和DELETE相关推荐

  1. HANA中SQL之truncate 、delete与drop区别

    相同点: truncate 和不带 where 子句的 delete,以及 drop 都会删除表内的数据 不同点: 1. truncate 和 delete 只删除数据不删除表的结构(定义) drop ...

  2. SQL语法中drop,delete与truncate的区别

    SQL语法中drop,delete与truncate的区别 delete是DML语句,可以选择删除部分数据,也可以选择删除全部数据:删除的数据可以回滚:不会释放空间 drop是DDL语句,删除表结构和 ...

  3. MySQL删除s表命令_SQLServer数据库sql语句中----删除表数据drop、truncate和delete的用法...

    本文主要向大家介绍了SQLServer数据库sql语句中----删除表数据drop.truncate和delete的用法,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. 虽 ...

  4. SQL Server中drop、truncate和delete语句的用法

    SQL Server中drop.truncate和delete语句的用法 drop  删除表和表中的所有数据(不保留表的结构) drop table tablename truncate   删除表中 ...

  5. sql truncate_SQL Truncate和SQL Delete语句的内部

    sql truncate This article gives you an insight into the SQL Truncate and SQL Delete commands behavio ...

  6. Sql语句——删除表数据drop、truncate和delete的用法

      一.SQL中的语法 1.drop table 表名称                         eg: drop table  dbo.Sys_Test    2.truncate tabl ...

  7. SQL语句中删除表数据drop、truncate和delete的用法

    一.SQL的语法 1.drop table 表名称 // drop table dbo.Sys_Test2.truncate table 表名称 // truncate table dbo.Sys_T ...

  8. sql语句-删除表数据drop、truncate和delete的用法

    一.SQL中的语法 1.drop table 表名称 eg: drop table course 2.truncate table 表名称 eg: truncate table course 3.de ...

  9. SQL语句中----删除表数据drop、truncate和delete的用法

    一.SQL中的语法 1.drop table 表名称                         eg: drop table  dbo.Sys_Test    2.truncate table  ...

最新文章

  1. 沈阳师范大学计算机题库,沈阳师范大学软件学院计算机学科专业基础综合历年考研真题汇编-20210607153358.docx-原创力文档...
  2. Shell命令-管理与性能监视之strace、ltrace
  3. Dijkstra的理解和实现
  4. 基于单片机自动升旗系统_基于视觉定位的机器人全自动冲击系统
  5. React类里面能写的东西
  6. 开发成本谁更高:Android PK iOS
  7. 计算机课Word自我介绍,第5课 用WORD写篇自我介绍.doc
  8. java菱形乱码 编码_【分享】Java开发过程中中文乱码问题总结
  9. jQuery_pager.js分页
  10. 后端如何收取多个文件_一次上传多个文件机制的两种解决方案
  11. 读书笔记:《把时间当作朋友》
  12. 廊坊市博实计算机网络工程有限公司,IP网络终端功放T-7760(含数字IP网络平台终端嵌入软件)...
  13. 信息安全-网络安全风险评估技术原理与应用(二)
  14. startx 及xinit 介绍(经典)
  15. 风蚀侵蚀力计算在python上的实现
  16. 红米note10和红米note9哪个值得买
  17. kdj值应用口诀_KDJ应用口诀,一文教你巧妙利用KDJ买卖股票
  18. 更改tomcat访问端口()
  19. 计算机硬件的配置的图片,鲁大师怎么生成电脑配置图
  20. java咖啡_JAVA—咖啡馆

热门文章

  1. 华润燃气各大区总经理_华润燃气“十四五”战略研讨会在华润大学小径湾校区举办...
  2. common java socket,JAVA I/O(四)网络Socket和ServerSocket
  3. 直观简洁,轻易吸睛!促销海报模板
  4. 限时抢购促销海报设计没想法,看这里!眼见的倒计时紧迫感
  5. 浪漫七夕节丨中国情人节营销海报模板
  6. hashmap是单向链表吗_HashMap源码大剖析
  7. python如何写二进制乘法_使用python写乘法口诀表
  8. mysql 表列表_一个MySQL表中的多列表显示
  9. signature=7d43f0ba2ce838fbec0ad1c29633027d,The Library of Jonathan Knight (1789-1864) *
  10. python能做页面加载动画吗_HTML+CSS实现页面加载(loading)动画效果