删除SQL Server数据:DELETE语句

日期: 2009-11-30 作者:Robert Sheldon翻译:孙瑞 来源:TechTarget中国 英文

DELETE语句例子   你还可以使用DELETE语句来删除表中的所有数据,例子如下所示:   DELETE FROM dbo.Employees;   再一次地,只有关键字(DELETE FROM)和表名称需要特别声明。如果我重新填充表然后运行SELECT语句,我得到的结果将会稍有不同:   EmpID EmpName EmpJobTitle   4 Eric Brown Production Technician – WC40   5 Jo Brown Production Supervisor – WC60   6 Kevin Brown Marketing As……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

DELETE语句例子

  你还可以使用DELETE语句来删除表中的所有数据,例子如下所示:

  DELETE FROM dbo.Employees;

  再一次地,只有关键字(DELETE FROM)和表名称需要特别声明。如果我重新填充表然后运行SELECT语句,我得到的结果将会稍有不同:

  EmpID EmpName EmpJobTitle

  4 Eric Brown Production Technician - WC40

  5 Jo Brown Production Supervisor - WC60

  6 Kevin Brown Marketing Assistant

  正如你所见,IDENTITY列值目前是以4开始的,而不是1。即使DELETE语句是用来删除所有的数据,IDENTITY值仍然根据最后所使用的值在增加。

  除了IDENTITY值之外,我们还需要注意DELETE和TRUNCATE TABLE语句的区别。当从表中删除所有的数据时,TRUNCATE TABLE语句要比DELETE语句高效:

  •   TRUNCATE TABLE语句使用的锁比DELETE语句更少。当使用一个TRUNCATE TABLE语句的时候,SQL Server只申请表和页面锁,而使用DELETE语句时,SQL Server还要申请行级锁。
  •   TRUNCATE TABLE比DELETE语句使用更少的日志空间。当使用一个TRUNCATE TABLE语句的时候,SQL Server将只分配事务日志中的数据页面和记录,而使用DELETE语句时,SQL Server将登记每一个被删除的行到事务日志中。
  •   一个TRUNCATE TABLE语句不会在表中留下任何页面,而DELETE语句有可能会留下空白的页面。

  除去这些不同,TRUNCATE TABLE和DELETE语句在移除数据之后,都不会改变表结构。索引、约束以及列都不会受到影响。

  尽管在效率方面,TRUNCATE TABLE语句比DELETE语句要更强一些,但是有些约束限制了TRUNCATE TABLE的使用。例如,在以下情况下,你不能够使用TRUNCATE TABLE语句:

  •   一个索引视图在其定义中指明了表
  •   使用事务或合并复制来创建表
  •   表引用的是一个外键约束
  •   表的IDENTITY值必须维护并不断递增
  •   只有指定的行被删除,而不是整个数据集

  最后一项需要特别注意一下,它表示TRUNCATE TABLE语句不可以用来删除表中的制定行。在这种情况下,使用DELETE语句配合WHERE子句。在下面的例子中,我使用了一个DELETE语句来删除EmpID值为6的行:

  DELETE FROM dbo.Employees

  WHERE EmpID = 6;

  正如你所见,我使用DELETE语句同WHERE子句配合来指定被删除行的值。如果在此时针对Employees 表运行SELECT语句,将会得到以下结果:

  EmpID EmpName EmpJobTitle

  4 Eric Brown Production Technician - WC40

  5 Jo Brown Production Supervisor - WC60

  你还可以使用更加复杂的DELETE语句。只要记住,在删除全部行数据的时候,使用TRUNCATE TABLE,而其他情况下使用DELETE。

翻译

孙瑞
孙瑞

相关推荐