Share via


Alterando dados com o uso da cláusula SET

SET especifica as colunas a serem alteradas e os novos valores para as colunas. Os valores nas colunas especificadas são atualizados com os valores especificados na cláusula SET em todas as linhas que correspondam ao critério de pesquisa da cláusula WHERE.

O exemplo a seguir altera o valor do código postal para linhas que correspondam a uma cidade especificada.

USE AdventureWorks2008R2;
GO
UPDATE Person.Address
SET PostalCode = '98000'
WHERE City = 'Bothell';
GO

Se nenhuma cláusula WHERE for especificada, todas as linhas serão atualizadas. Por exemplo, essa instrução atualiza os valores nas colunas Bonus, CommissionPct e SalesQuota para todas as linhas da tabela SalesPerson.

USE AdventureWorks2008R2;
GO
UPDATE Sales.SalesPerson
SET Bonus = 6000, CommissionPct = .10, SalesQuota = NULL;
GO

Valores de coluna computada podem ser calculados e usados em uma operação de atualização. O exemplo a seguir dobra o valor na coluna ListPrice para todas as linhas da tabelaProduct.

USE AdventureWorks2008R2 ;
GO
UPDATE Production.Product
SET ListPrice = ListPrice * 2;
GO

As expressões usadas na cláusula SET também podem ser subconsultas que retornem apenas um valor. O exemplo a seguir modifica a coluna SalesYTD na tabela SalesPerson para refletir as vendas mais recentes registradas na tabela SalesOrderHeader. As subconsultas agregam as vendas para cada vendedor dentro da instrução UPDATE.

USE AdventureWorks2008R2;
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.BusinessEntityID = so.SalesPersonID
     GROUP BY so.SalesPersonID);
GO