Szukaj…
Składnia
- Tabela aktualizacji
SET nazwa_kolumny = wartość , nazwa_kolumny2 = wartość_2 , ..., nazwa_kolumny_n = wartość_n
GDZIE warunek ( operator logiczny warunek_n )
Aktualizowanie wszystkich wierszy
W tym przykładzie użyto tabeli samochodów z przykładowych baz danych.
UPDATE Cars
SET Status = 'READY'
Ta instrukcja ustawi kolumnę „status” wszystkich wierszy tabeli „Cars” na „READY”, ponieważ nie ma klauzuli WHERE
do filtrowania zestawu wierszy.
Aktualizowanie określonych wierszy
W tym przykładzie użyto tabeli samochodów z przykładowych baz danych.
UPDATE
Cars
SET
Status = 'READY'
WHERE
Id = 4
Ta instrukcja ustawi status wiersza „Samochody” o identyfikatorze 4 na „GOTOWE”.
Klauzula WHERE
zawiera wyrażenie logiczne, które jest oceniane dla każdego wiersza. Jeśli wiersz spełnia kryteria, jego wartość jest aktualizowana. W przeciwnym razie wiersz pozostaje niezmieniony.
Modyfikowanie istniejących wartości
W tym przykładzie użyto tabeli samochodów z przykładowych baz danych.
UPDATE Cars
SET TotalCost = TotalCost + 100
WHERE Id = 3 or Id = 4
Operacje aktualizacji mogą obejmować bieżące wartości w zaktualizowanym wierszu. W tym prostym przykładzie TotalCost
jest zwiększany o 100 dla dwóch wierszy:
- Koszt całkowity samochodu nr 3 został zwiększony ze 100 do 200
- Koszt całkowity samochodu nr 4 został zwiększony z 1254 do 1354
Nowa wartość kolumny może pochodzić z poprzedniej wartości lub z dowolnej innej wartości kolumny w tej samej tabeli lub tabeli połączonej.
AKTUALIZACJA z danymi z innej tabeli
Poniższe przykłady wypełnić PhoneNumber
dla każdego pracownika, który jest również Customer
i aktualnie nie posiada zestaw numer telefonu w Employees
tabeli.
(W tych przykładach wykorzystano tabele pracowników i klientów z przykładowych baz danych).
Standardowy SQL
Zaktualizuj za pomocą skorelowanego podzapytania:
UPDATE
Employees
SET PhoneNumber =
(SELECT
c.PhoneNumber
FROM
Customers c
WHERE
c.FName = Employees.FName
AND c.LName = Employees.LName)
WHERE Employees.PhoneNumber IS NULL
SQL: 2003
Zaktualizuj za pomocą MERGE
:
MERGE INTO
Employees e
USING
Customers c
ON
e.FName = c.Fname
AND e.LName = c.LName
AND e.PhoneNumber IS NULL
WHEN MATCHED THEN
UPDATE
SET PhoneNumber = c.PhoneNumber
SQL Server
Aktualizacja za pomocą INNER JOIN
:
UPDATE
Employees
SET
PhoneNumber = c.PhoneNumber
FROM
Employees e
INNER JOIN Customers c
ON e.FName = c.FName
AND e.LName = c.LName
WHERE
PhoneNumber IS NULL
Przechwytywanie zaktualizowanych rekordów
Czasami chce się przechwycić akta, które właśnie zostały zaktualizowane.
CREATE TABLE #TempUpdated(ID INT)
Update TableName SET Col1 = 42
OUTPUT inserted.ID INTO #TempUpdated
WHERE Id > 50