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 ;
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.