W bazie danych znajduje się tabela pracownicy z kolumnami: id, imie, nazwisko, pensja. Pracownikom, których pensja jest niższa niż 3000 zł, należy ją podnieść o 100 zł. Które polecenie SQL to zrealizuje?
A.
UPDATE pracownicy SET pensja = pensja + 100 WHERE pensja < 3000;
B.
UPDATE pracownicy WHERE pensja < 3000 SET pensja = pensja + 100;
C.
UPDATE pracownicy SET pensja = 100 WHERE pensja < 3000;
D.
UPDATE pracownicy SET pensja = pensja + 100;
Poprawne polecenie to: UPDATE pracownicy SET pensja = pensja + 100 WHERE pensja < 3000;. Instrukcja UPDATE służy do modyfikowania istniejących rekordów w tabeli. Część SET pensja = pensja + 100 oznacza, że nowa wartość kolumny pensja zostanie obliczona na podstawie jej dotychczasowej wartości, powiększonej o 100. Warunek WHERE pensja < 3000 ogranicza zmianę tylko do tych pracowników, których pensja jest niższa niż 3000 zł. Do zapamiętania jest składnia: UPDATE nazwa_tabeli SET kolumna = nowa_wartość WHERE warunek;. W praktyce brak WHERE przy UPDATE jest częstą pułapką, ponieważ wtedy zmodyfikowane zostaną wszystkie rekordy w tabeli.
W tym zadaniu trzeba jednocześnie zwiększyć istniejącą pensję i ograniczyć zmianę do wybranych rekordów. Polecenie UPDATE pracownicy SET pensja = pensja + 100; jest składniowo poprawne, ale nie ma warunku WHERE, więc podniosłoby pensję wszystkim pracownikom, także tym zarabiającym 3000 zł lub więcej. Polecenie UPDATE pracownicy SET pensja = 100 WHERE pensja < 3000; zawiera warunek, ale ustawia pensję na stałą wartość 100, zamiast dodać 100 do obecnej pensji. Byłoby trafne tylko przy przypisywaniu jednej konkretnej wartości. Polecenie UPDATE pracownicy WHERE pensja < 3000 SET pensja = pensja + 100; ma nieprawidłową kolejność składni SQL, ponieważ SET występuje przed WHERE. Poprawna postać to: UPDATE pracownicy SET pensja = pensja + 100 WHERE pensja < 3000;. Typowy błąd polega na pomyleniu przypisania stałej wartości z obliczeniem nowej wartości na podstawie starej albo na pominięciu warunku ograniczającego zakres aktualizacji.