更新数据
T-SQL 中的 UPDATE 语句用于更改表中的现有数据。 UPDATE 对一组行进行操作,这些行或者是由 WHERE 子句中的条件定义,或者是在联接中定义。 UPDATE 语句具有 SET 子句,用于指定要修改的列。 SET 子句一列或多列,用逗号分隔,并向这些列提供新值。 UPDATE 语句中的 WHERE 子句与 SELECT 语句中的 WHERE 子句具有相同结构。
注意
需要注意的是,如果 UPDATE 没有对应的 WHERE 子句或联接,则将更新表中的所有行。 谨慎使用 UPDATE 语句。
UPDATE 语句的基本语法如下所示。
UPDATE <TableName>
SET
<ColumnName> = { expression | DEFAULT | NULL }
{,…n}
WHERE <search_conditions>;
下面的示例演示了用于修改促销备注的 UPDATE 语句:
UPDATE Sales.Promotion
SET Notes = '25% off socks'
WHERE PromotionID = 2;
可以在 SET 子句中修改多个列。 例如,以下 UPDATE 语句将同时修改促销名称为“Get Framed”的所有行中的 Discount 和 Notes 字段:
UPDATE Sales.Promotion
SET Discount = 0.2, Notes = REPLACE(Notes, '10%', '20%')
WHERE PromotionName = 'Get Framed';
UPDATE 语句还支持 FROM 子句,可用于根据查询结果修改数据。 例如,以下代码使用从 Product.ProductModel 表中检索的值来更新 Sales.Promotion 表。
UPDATE Sales.Promotion
SET Notes = FORMAT(Discount, 'P') + ' off ' + m.Name
FROM Product.ProductModel AS m
WHERE Notes IS NULL
AND Sales.Promotion.ProductModelID = m.ProductModelID;