Update w SQL Server – Zmiana wartości rekordu w tabeli

1. Jak zmodyfikować rekord – Update w SQL Server

Polecenie Update w SQL Server jak nazwa wskazuje służy do updatowania, a więc do modyfikacji wartości rekordów w tabelach. Będziesz go używał zawsze, gdy chcesz zmienić jakąś wartość. Składnię polecenia Update przedstawiam poniżej. W najprostszej formie w poleceniu musisz określić jedynie tabelę, którą chcesz zmodyfikować, kolumnę oraz wartość którą chcesz wprowadzić w dany rekord. Jeśli w poleceniu nie użyjesz klauzuli WHERE, pamiętaj, że wszystkie rekordy w tabeli przyjmą nową wartość dla wskazanej kolumny.

UPDATE nazwa_tabeli
   [ WITH ( < table_hint > ) ]
   SET 
   { nazwa_kolumny = { wyrażenie | DEFAULT | NULL } } [ ,...n ] 
   [ WHERE < warunki_rekordów_do_update > ] 
   [ OPTION ( <query_hint> [ ,...n ] ) ]

Jeśli chcesz za jednym razem zmienić wartości w kilku kolumnach danego rekordu, wartości dla kolumn wpisz po przecinku. Zróbmy przykład polecenia UPDATE na bazie AdventureWorks. Zmieńmy wartości w kolumnach FirstName i LastName w tabeli Person.Person. dla rekordu o BusinessEntityID = 1.

use AdventureWorks2014
go

UPDATE Person.Person
set FirstName = 'Jan', LastName = 'Kowalski'
where BusinessEntityID = 1
;

2. Update tabeli wartościami z innej tabeli

By zmodyfikować tabelę wartościami z innej tabeli powinieneś użyć klauzuli WITH. Dzięki temu możesz użyć JOIN’a w swoim skrypcie. By sprawdzić jak działa taka konstrukcja utwórz na bazie AdventureWorks następująco tabelę i uzupełnij ją dwoma rekordami:

use AdventureWorks2014
go

Create table TABELA_DO_UPDATE
(
ID bigint ,
FName varchar(50),
LName varchar(50),
);
go
 
INSERT INTO TABELA_DO_UPDATE 
values (2, 'Adam', 'Małysz');
INSERT INTO TABELA_DO_UPDATE 
values (3, 'Robert', 'Kubica');

Ok, mamy już dane którymi chcemy zmodyfikować rekord 2 i 3 z tabeli Person.Person. Utwórzmy skrypt, który zmodyfikuje wartości:

use AdventureWorks2014
go

with AAA as (select * from Person.Person a
join TABELA_DO_UPDATE b on a.BusinessEntityID = b.id)

update AAA 
set FirstName = Fname, LastName = Lname
;
Update w SQL Server
Update w SQL Server

Jeśli tabele, które chcesz użyć do Update mają takie same nazwy kolumn, powinieneś użyć aliasów w klauzuli WITH. Jeśli trafiłeś na ten temat z wyszukiwarki, zapraszam do skorzystania z kursu SQL Server na mojej stronie. Zamieszczam też link do tematu na stronie producenta.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *