W bazie danych znajduje się tabela pracownicy z kolumnami: id, imie, nazwisko, pensja. Pracownikowi o id równym 5 należy obniżyć pensję o 50 zł. Które polecenie SQL to zrealizuje?
A.
UPDATE pracownicy SET pensja = 50 WHERE id = 5;
B.
UPDATE pensja SET pracownicy = pensja - 50 WHERE id = 5;
C.
UPDATE pracownicy SET pensja = pensja - 50;
D.
UPDATE pracownicy SET pensja = pensja - 50 WHERE id = 5;
Poprawne polecenie to UPDATE pracownicy SET pensja = pensja - 50 WHERE id = 5;. Instrukcja UPDATE modyfikuje istniejące rekordy w tabeli wskazanej bezpośrednio po słowie UPDATE, czyli w tym przypadku w tabeli pracownicy. Część SET pensja = pensja - 50 oznacza, że nowa wartość kolumny pensja ma zostać obliczona na podstawie jej dotychczasowej wartości pomniejszonej o 50. Warunek WHERE id = 5 ogranicza zmianę tylko do pracownika o identyfikatorze 5. Do zapamiętania: składnia aktualizacji ma postać UPDATE tabela SET kolumna = wyrażenie WHERE warunek;. Brak WHERE przy UPDATE jest typową pułapką, ponieważ wtedy zmiana obejmuje wszystkie rekordy w tabeli.
W tym zadaniu trzeba odróżnić zmianę wartości w kolumnie od wpisania stałej liczby oraz pamiętać o ograniczeniu aktualizacji warunkiem. Polecenie UPDATE pensja SET pracownicy = pensja - 50 WHERE id = 5; ma zamienione znaczenie elementów składni: po UPDATE powinna wystąpić nazwa tabeli, a po SET nazwa modyfikowanej kolumny. Byłoby sensowne tylko wtedy, gdyby istniała tabela pensja i kolumna pracownicy, co nie wynika z treści zadania. Polecenie UPDATE pracownicy SET pensja = 50 WHERE id = 5; ustawia pensję dokładnie na 50 zł, a nie obniża jej o 50 zł. Polecenie UPDATE pracownicy SET pensja = pensja - 50; poprawnie używa wyrażenia arytmetycznego, ale nie zawiera WHERE, więc obniżyłoby pensję wszystkim pracownikom. Właściwa instrukcja to UPDATE pracownicy SET pensja = pensja - 50 WHERE id = 5;. Typowy błąd polega na potraktowaniu UPDATE jak prostego przypisania bez uwzględnienia zakresu rekordów.