Изменение данных при помощи предложения SET
В предложении SET указываются столбцы, которые должны быть изменены, и новые значения для этих столбцов. Значения в указанных столбцах обновляются значениями, переданными в предложении SET, во всех строках, удовлетворяющих условию поиска предложения WHERE.
В следующем примере изменяется значение почтового индекса для всех строк, соответствующих указанному городу.
USE AdventureWorks;
GO
UPDATE Person.Address
SET PostalCode = '98000'
WHERE City = 'Bothell';
GO
Если предложение WHERE отсутствует, обновляются все строки. Например, эта инструкция обновляет значения в столбцах Bonus, CommissionPct и SalesQuota для всех строк таблицы SalesPerson.
USE AdventureWorks;
GO
UPDATE Sales.SalesPerson
SET Bonus = 6000, CommissionPct = .10, SalesQuota = NULL;
GO
Значения вычисляемых столбцов могут быть рассчитаны и использованы в операции обновления. В следующем примере удваивается значение столбца ListPrice для всех строк в таблице Product.
USE AdventureWorks ;
GO
UPDATE Production.Product
SET ListPrice = ListPrice * 2;
GO
Выражения, используемые в предложении SET, также могут быть вложенными запросами, возвращающими только одно значение. В следующем примере изменяется столбец SalesYTD в таблице SalesPerson для отображения самых последних сведений о продажах, зафиксированных в таблице SalesOrderHeader. Вложенные запросы собирают сведения о продажах для всех менеджеров по продажам, указанных в инструкции UPDATE.
USE AdventureWorks;
GO
UPDATE Sales.SalesPerson
SET SalesYTD = SalesYTD +
(SELECT SUM(so.SubTotal)
FROM Sales.SalesOrderHeader AS so
WHERE so.OrderDate = (SELECT MAX(OrderDate)
FROM Sales.SalesOrderHeader AS so2
WHERE so2.SalesPersonID =
so.SalesPersonID)
AND Sales.SalesPerson.SalesPersonID = so.SalesPersonID
GROUP BY so.SalesPersonID);
GO