Chinaunix首页 | 论坛 | 博客
  • 博客访问: 645679
  • 博文数量: 751
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 4990
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-28 09:48
文章分类

全部博文(751)

文章存档

2011年(1)

2008年(750)

我的朋友

分类:

2008-10-28 10:05:38


  从表中删除行。

语法

DELETE

[ FROM ]

{ table_name WITH ( < table_hint_limited > [ ...n ] )

| view_name

| rowset_function_limited

}

[ FROM { < table_source > } [ ,...n ] ]

[ WHERE

{ < search_condition >

| { [ CURRENT OF

{ { [ GLOBAL ] cursor_name }

| cursor_variable_name

}

] }

}

]

[ OPTION ( < query_hint > [ ,...n ] ) ]

< table_source > ::=

table_name [ [ AS ] table_alias ] [ WITH ( < table_hint > [ ,...n ] ) ]

| view_name [ [ AS ] table_alias ]

| rowset_function [ [ AS ] table_alias ]

| derived_table [ AS ] table_alias [ ( column_alias [ ,...n ] ) ]

| < joined_table >

< joined_table > ::=

< table_source > < join_type > < table_source > ON < search_condition >

| < table_source > CROSS JOIN < table_source >

| < joined_table >

< join_type > ::=

[ INNER | { { LEFT | RIGHT | FULL } [OUTER] } ]

[ < join_hint > ]

JOIN

< table_hint_limited > ::=

{ FASTFIRSTROW

| HOLDLOCK

| PAGLOCK

| READCOMMITTED

| REPEATABLEREAD

| ROWLOCK

| SERIALIZABLE

| TABLOCK

| TABLOCKX

| UPDLOCK

}

< table_hint > ::=

{ INDEX ( index_val [ ,...n ] )

| FASTFIRSTROW

| HOLDLOCK

| NOLOCK

| PAGLOCK

| READCOMMITTED

| READPAST

| READUNCOMMITTED

| REPEATABLEREAD

| ROWLOCK

| SERIALIZABLE

| TABLOCK

| TABLOCKX

| UPDLOCK

}

< query_hint > ::=

{ { HASH | ORDER } GROUP

| { CONCAT | HASH | MERGE } UNION

| FAST number_rows

| FORCE ORDER

| MAXDOP

| ROBUST PLAN

| KEEP PLAN

}

参数

FROM

是可选的关键字,可用在 DELETE 关键字与目标 table_name、view_name 或 rowset_function_limited 之间。

table_name

是要从其中删除行的表的名称。

在其作用域内的 table 变量、或是将 OPENDATASOURCE 函数作为名称的由四部分组成的表名(或视图名称)还可以在 DELETE 语句中作为表源使用。

WITH ( [...n])

指定目标表所允许的一个或多个表提示。需要有 WITH 关键字和圆括号。不允许有 READPAST、NOLOCK 和 READUNCOMMITTED。

view_name

是视图名称。在视图的 FROM 子句中,view_name 引用的视图必须可更新且正确引用一个基表。

说明 如果表或视图存在于另一个数据库内或有一个不同于当前用户的所有者,则使用格式为 server_name.database.[owner].object_name 的由四部分组成的合法名称。

rowset_function_limited

OPENQUERY 或 OPENROWSET 函数,视提供程序功能而定。

FROM < table_source >

指定附加的 FROM 子句。这个对 DELETE 的 Transact-SQL 扩展使您得以从 指定数据,并从第一个 FROM 子句内的表中删除相应的行。

这个扩展指定联接,可在 WHERE 子句中取代子查询来标识要删除的行。

table_name [[AS] table_alias ]

是为删除操作提供标准值的表名。

view_name [ [ AS ] table_alias ]

是为删除操作提供标准值的视图名称。带 INSTEAD OF UPDATE 触发器的视图不能是含有 FROM 子句的 UPDATE 的目标。

WITH (

指定一个或更多表提示。

rowset_function [ [AS] table_alias ]

是行集函数名和可选别名。

derived_table [AS] table_alias

是从数据库中检索行的子查询。derived_table 用作对外部查询的输入。

column_alias

替换结果集内列名的可选别名。在选择列表中放入每个列的一个别名,并将整个列别名列表用圆括号括起来。

由两个或更多表的积组成的结果集,例如:

SELECT *

FROM tab1 LEFT OUTER JOIN tab2 ON tab1.c3 = tab2.c3

RIGHT OUTER JOIN tab3 LEFT OUTER JOIN tab4

ON tab3.c1 = tab4.c1

ON tab2.c3 = tab4.c3

对于多个 CROSS 联接,请使用圆括号来更改联接的自然顺序。

指定联接操作的类型。

INNER

指定返回每对匹配的行。废弃两个表中不匹配的行。如果未指定联接类型,则这是默认设置。

LEFT [OUTER]

指定在结果集内包含左表中所有不满足指定条件的行,并将右表中的输出列设置为 NULL 以作为对内联接所返回的所有行的补充。

RIGHT [OUTER]

指定在结果集内包含右表中所有不满足指定条件的行,并将左表中的输出列设置为 NULL 以作为对内联接所返回的所有行的补充。

FULL [OUTER]

如果来自左表或右表的某行与选择准则不匹配,则指定在结果集内包含该行,并且将与另一个表对应的输出列设置为 NULL。除此之外,结果集中还包含通常由内联接返回的所有行。

JOIN

是表示在删除操作中使用 SQL-92 式联接的关键字。

ON

指定联接所基于的条件。尽管经常使用列和比较运算符,但此条件可指定任何谓词,例如:

FROM Suppliers JOIN Products

ON (Suppliers.SupplierID = Products.SupplierID)

当条件指定列时,列不必具有相同的名称或数据类型;但是,如果数据类型不一致,则这些列必须相互兼容或是 Microsoft® SQL Server™ 能够隐性转换的类型。如果数据类型不能隐性转换,则条件必须使用 CAST 函数显式转换数据类型。

有关搜索条件和谓词的更多信息,请参见搜索条件。

CROSS JOIN

指定两个表的矢量积。这将返回相同的行,就好像在旧式的非 SQL-92 式联接中并没有指定 WHERE 子句。

WHERE

指定用于限制删除行数的条件。如果没有提供 WHERE 子句,则 DELETE 删除表中的所有行。基于 WHERE 子句中所指定的条件,有两种形式的删除操作。

搜索删除指定搜索条件限定删除的行。

定位删除使用 CURRENT OF 子句指定游标。删除操作在游标的当前位置发生。这比使用 WHERE search_condition 子句限定删除的行的搜索 DELETE 精确。如果搜索条件不唯一标识单行,则搜索 DELETE 删除多行。

指定删除行的限定条件。

CURRENT OF

指定在指定游标的当前位置完成 DELETE。

GLOBAL

指定 cursor_name 指的是全局游标。

cursor_name

是从其中进行提取的打开游标的名称。当全局和局部游标都以 cursor_name 作为它们的名称存在时,如果指定 GLOBAL,则 cursor_name 引用全局游标,如果未指定 GLOBAL,则 cursor_name 引用局部游标。游标必须允许更新。

cursor_variable_name

是游标变量的名称。游标变量必须引用允许更新的游标。

OPTION ( [,...n] )

是表示使用优化程序提示自定义 SQL Server 的语句处理的关键字。

{HASH | ORDER} GROUP

指定在查询的 GROUP BY 或 COMPUTE 子句中指定的聚合使用哈希或排列。

{MERGE | HASH | CONCAT} UNION

指定所有的 UNION 操作通过合并、哈希或串联 UNION 集合来完成。如果指定了不止一个 UNION 提示,查询优化器就会从这些指定的提示中选择开销最少的策略。

说明 如果还为 FROM 子句中的某对链接表指定了 ,则这个提示优先于 OPTION 子句中所指定的任何

FAST number_rows

指定对查询进行优化,以便快速检索第一个 number_rows(非负整数)。在第一个 number_rows 返回后,查询继续进行并生成完整的结果集。

FORCE ORDER

指定在查询优化过程中保持由查询语法表示的联接顺序。

MAXDOP number

只对指定了 sp_configure 的 max degree of parallelism 配置选项的查询替代该选项。当使用 MAXDOP 查询提示时,所有和 max degree of parallelism 配置选项一起使用的语义规则均适用。

ROBUST P

【责编:admin】

--------------------next---------------------

阅读(842) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~