Podane w ramce polecenie SQL ma za zadanie
UPDATE Uczen SET id_klasy = id_klasy - 1 WHERE id_klasy > 1;
A. usunąć z tabeli Uczen rekordy, w których id_klasy jest większe od 1.
B. zmniejszyć o jeden wartość kolumny id_klasy w rekordach, w których jest ona większa od 1.
C. zmniejszyć o jeden wartość kolumny id_klasy we wszystkich rekordach tabeli Uczen.
D. ustawić wartość kolumny id_klasy na 1 w rekordach, w których jest ona większa od 1.
Poprawna odpowiedź to: zmniejszyć o jeden wartość kolumny id_klasy w rekordach, w których jest ona większa od 1. Polecenie UPDATE modyfikuje istniejące rekordy w tabeli Uczen. Część SET id_klasy = id_klasy - 1 oznacza, że nowa wartość kolumny zostanie obliczona na podstawie jej dotychczasowej wartości, pomniejszonej o 1. Warunek WHERE id_klasy > 1 ogranicza działanie tylko do tych rekordów, które spełniają podany warunek. Rekordy z id_klasy równym 1 lub mniejszym nie zostaną zmienione. Do zapamiętania: UPDATE tabela SET kolumna = wyrażenie WHERE warunek. Brak WHERE spowodowałby modyfikację wszystkich rekordów, co jest częstą pułapką przy pracy z SQL.
W tym poleceniu najważniejsze są dwie części: SET oraz WHERE. Treść „zmniejszyć o jeden wartość kolumny id_klasy we wszystkich rekordach tabeli Uczen” byłaby trafna tylko wtedy, gdyby w zapytaniu nie było warunku WHERE. Tutaj warunek id_klasy > 1 ogranicza zakres zmian. Treść „usunąć z tabeli Uczen rekordy, w których id_klasy jest większe od 1” opisuje działanie polecenia DELETE, na przykład DELETE FROM Uczen WHERE id_klasy > 1, a nie UPDATE. Treść „ustawić wartość kolumny id_klasy na 1 w rekordach, w których jest ona większa od 1” pasowałaby do instrukcji SET id_klasy = 1, czyli przypisania stałej wartości. W podanym zapytaniu występuje wyrażenie id_klasy = id_klasy - 1, więc poprawny sens polecenia to: zmniejszyć o jeden wartość kolumny id_klasy w rekordach, w których jest ona większa od 1. Typowy błąd polega na pomyleniu warunku filtrowania z wartością przypisywaną.