RSS
热门关键字:
当前位置 :| 主页>教你一招>

UPDATE

来源:不详 作者: 时间:2003-03-08 Tag: 点击:

  更改表中的现有数据。
  
  语法
  UPDATE
   {
   table_name WITH ( < table_hint_limited > [ ...n ] )
   | view_name
   | rowset_function_limited
   }
   SET
   { column_name = { expression | DEFAULT | NULL }
   | @variable = expression
   | @variable = column = expression } [ ,...n ]
  
   { { [ FROM { < table_source > } [ ,...n ] ]
  
   [ WHERE
   < search_condition > ] }
   |
   [ WHERE 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
   | {LOOP | MERGE | HASH } JOIN
   | FAST number_rows
   | FORCE ORDER
   | MAXDOP
   | ROBUST PLAN
   | KEEP PLAN
   }
  
  参数
  table_name
  
  需要更新的表的名称。如果该表不在当前服务器或数据库中,或不为当前用户所有,这个名称可用链接服务器、数据库和所有者名称来限定。
  
  WITH ( < table_hint_limited > [ ...n ] )
  
  指定目标表所允许的一个或多个表提示。需要有 WITH 关键字和圆括号。不允许有 READPAST、NOLOCK 和 READUNCOMMITTED。
  
  view_name
  
  要更新的视图的名称。通过 view_name 来引用的视图必须是可更新的。用 UPDATE 语句进行的修改,至多只能影响视图的 FROM 子句所引用的基表中的一个。
  
  rowset_function_limited
  
  OPENQUERY 或 OPENROWSET 函数,视提供程序功能而定。
  
  SET
  
  指定要更新的列或变量名称的列表。
  
  column_name
  
  含有要更改数据的列的名称。column_name 必须驻留于 UPDATE 子句中所指定的表或视图中。标识列不能进行更新。
  
  如果指定了限定的列名称,限定符必须同 UPDATE 子句中的表或视图的名称相匹配。例如,下面的内容有效:
  
  UPDATE authors
   SET authors.au_fname = 'Annie'
   WHERE au_fname = 'Anne'
  
  FROM 子句中指定的表的别名不能作为 SET column_name 子句中的限定符使用。例如,下面的内容无效:
  
  UPDATE titles
   SET t.ytd_sales = t.ytd_sales s.qty
   FROM titles t, sales s
   WHERE t.title_id = s.title_id
   AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
  
  若要使上例合法,请从列名中删除别名 t。
  
  UPDATE titles
   SET ytd_sales = t.ytd_sales s.qty
   FROM titles t, sales s
   WHERE t.title_id = s.title_id
   AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
  
  expression
  
  变量、字面值、表达式或加上括弧的返回单个值的 subSELECT 语句。expression 返回的值将替换 column_name 或 @variable 中的现有值。
  
  DEFAULT
  
  指定使用对列定义的默认值替换列中的现有值。如果该列没有默认值并且定义为允许空值,这也可用来将列更改为 NULL。
  
  @variable
  
  已声明的变量,该变量将设置为 expression 所返回的值。
  
  SET @variable = column = expression 将变量设置为与列相同的值。这与 SET @variable = column, column = expression 不同,后者将变量设置为列更新前的值。
  
  FROM < table_source >
  
  指定用表来为更新操作提供准则。
  
  table_name [[AS] table_alias ]
  为更新操作提供准则的表的名称。
  如果所更新表与 FROM 子句中的表相同,并且在 FROM 子句中对该表只有一个引用,则指定或不指定 table_alias 均可。如果所更新表在 FROM 子句中出现了不止一次,则对该表的一个(且仅仅一个)引用不能指定表的别名。FROM 子句中对该表的所有其它引用都必须包含表的别名。
  
  
  view_name [ [ AS ] table_alias ]
  为更新操作提供准则的视图的名称。带 INSTEAD OF UPDATE 触发器的视图不能是含有 FROM 子句的 UPDATE 的目标。
  
  WITH ( < table_hint > [ ...n ] )
  为源表指定一个或多个表提示。有关表提示的信息,请参见本卷的"FROM"。
  
  rowset_function [ [AS] table_alias ]
  任意行集函数的名称和可选别名。
  
  derived_table
  是从数据库中检索行的子查询。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。除此之外,结果集中还包含通常由内联接返回的所有行。
  
  
  指定联接提示或执行算法。如果指定了 ,也必须明确指定 INNER、LEFT、RIGHT 或 FULL。
  JOIN
  表示联接所指定的表或视图。
  ON
  
  指定联接所基于的条件。尽管经常使用列和比较运算符,但此条件可指定任何谓词,例如:
  
  FROM Suppliers JOIN Products
   ON (Suppliers.SupplierID = Products.SupplierID)
  
  当条件指定列时,列不一定必须具有相同的名称或数据类型;但是,如果数据类型不一致,则这些列要么必须相互兼容,要么是 Microsoft® SQL Server™ 能够隐性转换的类型。如果数据类型不能隐式转换,则条件必须使用 CAST 函数显式转换数据类型。
  CROSS JOIN
  
  指定两个表的矢量积。返回同样的行,就像要联接的表只列于 FROM 子句中,并且未指定 WHERE 子句。
  
  WHERE
  
  指定条件来限定所更新的行。根据所使用的 WHERE 子句的形式,有两种更新形式:
  
  搜索更新指定搜索条件来限定要删除的行。
  
  
  定位更新使用 CURRENT OF 子句指定游标。更新操作发生在游标的当前位置。
  
  
  为要更新行指定需满足的条件。搜索条件也可以是联接所基于的条件。对搜索条件
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册