Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Bazy danych

Słowa kluczowe: CRUD DML w SQL Operatory arytmetyczne w SQL UPDATE w SQL WHERE w SQL

Istnieje tabela pracownicy z polami: id, imie, nazwisko, pensja. W nowym roku postanowiono podnieść pensję wszystkim pracownikom o 100 zł. Aktualizacja ta w bazie danych będzie miała postać

A.
UPDATE pracownicy SET pensja = pensja +100;
B.
UPDATE pensja SET +100;
C.
UPDATE pracownicy SET pensja = 100;
D.
UPDATE pensja SET 100;

Pytanie z egzaminu CKE, październik 2016 (arkusz E.14-X-16.08).

Instrukcja UPDATE pracownicy SET pensja = pensja + 100; jest właściwa, bo używa poprawnej składni SQL do modyfikowania danych w istniejących rekordach. Po słowie UPDATE podajemy nazwę tabeli, czyli pracownicy, a po SET wskazujemy kolumnę, którą chcemy zmienić. Wyrażenie pensja = pensja + 100 oznacza: weź aktualną wartość z kolumny pensja dla każdego rekordu i zapisz tam wartość większą o 100. Czyli jeśli ktoś miał 4200, po wykonaniu zapytania będzie miał 4300. Brak klauzuli WHERE jest tutaj celowy, ponieważ podwyżka dotyczy wszystkich pracowników. W praktyce trzeba jednak z tym uważać, bo UPDATE bez WHERE zmienia całą tabelę. Moim zdaniem to jedna z tych instrukcji, które warto zawsze czytać dwa razy przed uruchomieniem. Dobrą praktyką w branży jest wcześniejsze wykonanie kopii zapasowej albo użycie transakcji, np. START TRANSACTION, potem UPDATE, sprawdzenie wyniku i dopiero COMMIT. W systemach kadrowych kolumna pensja powinna mieć typ liczbowy, najczęściej DECIMAL, żeby uniknąć problemów z zaokrągleniami typowymi dla liczb zmiennoprzecinkowych.
W tym zadaniu kluczowe jest zrozumienie, że instrukcja UPDATE działa na tabeli, a nie bezpośrednio na samej kolumnie oderwanej od tabeli. Poprawny schemat jest dość prosty: UPDATE nazwa_tabeli SET nazwa_kolumny = nowe_wyrażenie. Jeżeli ktoś zapisuje UPDATE pensja, to traktuje pensję jak nazwę tabeli, a w podanym opisie pensja jest tylko polem w tabeli pracownicy. Baza danych musi wiedzieć, w której tabeli ma szukać tej kolumny, inaczej składnia jest błędna albo odnosiłaby się do zupełnie innego obiektu, gdyby taki istniał. Częsty błąd polega też na pomyleniu podniesienia pensji o 100 zł z ustawieniem pensji na 100 zł. Zapis SET pensja = 100 nie dodaje premii, tylko nadpisuje każdemu pracownikowi wynagrodzenie stałą wartością 100, co w prawdziwym systemie kadrowym byłoby dość katastrofalne. Równie niepoprawne jest samo SET +100, bo w SQL po SET trzeba przypisać wynik jakiegoś wyrażenia do konkretnej kolumny. Operator plus nie działa sam z siebie, musi mieć argumenty, np. pensja + 100, oraz miejsce, gdzie wynik zostanie zapisany. Warto też zapamiętać, że brak WHERE zwykle jest ryzykowny, ale tutaj akurat wymagany, bo zmiana dotyczy wszystkich rekordów. Z mojego doświadczenia takie pytania dobrze uczą ostrożności: SQL nie pyta, czy naprawdę chciałeś zmienić całą tabelę, tylko wykonuje polecenie, jeśli składnia jest poprawna.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.