分享
 
 
 

删除数据

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

前言:

Microsoft® SQL Server™ 支持下列删除现有表中数据的方法:

DELETE 语句

删除结果集或游标中的当前行

TRUNCATE TABLE 语句

数据修改语句适用于视图和表,但是有一些限制条件。

1、使用 DELETE 语句删除行

DELETE 语句可删除表或视图中的一行或多行。DELETE 语法的简化形式为:

DELETE table_or_view FROM table_sources WHERE search_condition

table_or_view 指定要从中删除行的表或视图。table_or_view 中所有符合 WHERE 搜索条件的行都将被删除。如果没有指定 WHERE 子句,将删除 table_or_view 中的所有行。FROM 子句指定删除时用到的额外的表或视图及联接条件,WHERE 子句搜索条件中的谓词使用它们限定要从 table_or_view 中删除的行。该语句不从 FROM 子句指定的表中删除行,而只从 table_or_view 指定的表中删除行。

任何已删除所有行的表仍会保留在数据库中。DELETE 语句只从表中删除行,要从数据库中删除表,必须使用 DROP TABLE 语句。

使用 DELETE 语句删除行

Transact-SQL(点击查看)

对于 Northwind 数据库中名为 Lyngbysild 的公司所提供的产品,以下脚本显示了删除与这些产品有关的行时所需要的三个 DELETE 语句。因为该脚本涉及了从现有订单中删除行,所以它不是一个典型的商业操作,但是它确实显示了一系列复杂程度不同的删除操作。

USE Northwind

GO

DELETE [Order Details]

FROM Suppliers, Products

WHERE Products.SupplierID = Suppliers.SupplierID

AND Suppliers.CompanyName = 'Lyngbysild'

AND [Order Details].ProductID = Products.ProductID

GO

DELETE Products

FROM Suppliers

WHERE Products.SupplierID = Suppliers.SupplierID

AND Suppliers.CompanyName = 'Lyngbysild'

GO

DELETE Suppliers

WHERE CompanyName = 'Lyngbysild'

GO

2、删除结果集中的行

ADO、OLE DB 和 ODBC 应用程序接口 (API) 支持删除结果集中应用程序所处的当前行。应用程序执行某个语句,然后从结果集中提取行。应用程序提取行后,就可以使用以下函数或方法删除该行:

ADO 应用程序使用 Recordset 对象的 Delete 方法。

OLE DB 应用程序使用 IRowsetChange 接口的 DeleteRows 方法。

ODBC 应用程序使用带 SQL_DELETE 选项的 SQLSetPos 函数。

DB-library 应用程序使用 dbcursor 执行 CRS_DELETE 操作。

Transact-SQL 脚本、存储过程和触发器可以使用 DELETE 语句中的 WHERE CURRENT OF 子句删除它们当前所处的游标行,例如:

DECLARE abc CURSOR FOR

SELECT * FROM MyTable

OPEN abc

FETCH NEXT FROM abc

DELETE MyTable WHERE CURRENT OF abc

CLOSE abc

DEALLOCATE abc

©1988-2000 Microsoft Corporation。保留所有权利。

3、使用 TRUNCATE TABLE 删除所有行

若要删除表中的所有行,则 TRUNCATE TABLE 语句是一种快速、无日志记录的方法。该语句总是比不带条件的 DELETE 语句要快,因为 DELETE 语句要记录对每行的删除操作,而 TRUNCATE TABLE 语句只记录整个数据页的释放。TRUNCATE TABLE 语句立即释放由该表的数据和索引占用的所有空间。所有索引的分发页也将释放。

与 DELETE 语句相同,使用 TRUNCATE TABLE 清空的表的定义,同其索引和其它相关的对象一起仍保留在数据库中。必须使用 DROP TABLE 语句才能除去表的定义。

使用 TRUNCATE TABLE 语句删除表中的所有行

Transact-SQL:

TRUNCATE TABLE

删除表中的所有行,而不记录单个行删除操作。

语法

TRUNCATE TABLE name

参数

name

是要截断的表的名称或要删除其全部行的表的名称。

注释

TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。

DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。

对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。

TRUNCATE TABLE 不能用于参与了索引视图的表。

示例

下例删除 authors 表中的所有数据。

TRUNCATE TABLE authors

权限

TRUNCATE TABLE 权限默认授予表所有者、sysadmin 固定服务器角色成员、db_owner 和 db_ddladmin 固定数据库角色成员且不可转让。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有