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: DML w SQL Klauzula WHERE w SQL UPDATE w SQL

Które polecenie zmniejszy o 5 wartość pola liczba_sztuk w tabeli Magazyn dla towaru o identyfikatorze 7?

A.
UPDATE liczba_sztuk SET liczba_sztuk-5 WHERE id = 7;
B.
UPDATE Magazyn, liczba_sztuk-5 WHERE id = 7;
C.
UPDATE Magazyn SET liczba_sztuk WHERE id = 7;
D.
UPDATE Magazyn SET liczba_sztuk = liczba_sztuk - 5 WHERE id = 7;
Polecenie UPDATE Magazyn SET liczba_sztuk = liczba_sztuk - 5 WHERE id = 7; ma poprawną składnię i dokładnie wykonuje to, o co chodzi w pytaniu. UPDATE wskazuje tabelę, czyli Magazyn, potem SET określa, które pole ma zostać zmienione. Zapis liczba_sztuk = liczba_sztuk - 5 oznacza: weź aktualną wartość z kolumny liczba_sztuk i zapisz w tej samej kolumnie wartość mniejszą o 5. Warunek WHERE id = 7 jest bardzo ważny, bo ogranicza zmianę tylko do jednego towaru o identyfikatorze 7. Bez WHERE zmniejszyłby się stan magazynowy wszystkich produktów, co w praktyce byłoby raczej grubą awarią danych. Moim zdaniem to jeden z tych przykładów, które dobrze pokazują sens SQL w pracy z magazynem, sklepem internetowym czy systemem sprzedaży. W realnym projekcie warto jeszcze sprawdzić, czy liczba_sztuk nie spadnie poniżej zera, np. przez dodatkowy warunek liczba_sztuk >= 5, albo obsłużyć to w logice aplikacji i transakcji. Dobra praktyka to też kontrola liczby zmodyfikowanych rekordów po wykonaniu zapytania.
W tym zadaniu łatwo pomylić samą operację matematyczną z poprawną składnią polecenia SQL. W języku SQL nie wystarczy napisać liczba_sztuk-5, bo baza danych musi dostać pełną informację, do której kolumny ma zapisać nową wartość. Przy aktualizacji danych używa się konstrukcji UPDATE nazwa_tabeli SET kolumna = nowa_wartość WHERE warunek. Kluczowe jest więc słowo SET oraz operator przypisania =. Bez tego baza nie wie, czy chodzi o obliczenie, filtr, nazwę pola, czy może o nazwę tabeli. Częsty błąd polega też na traktowaniu nazwy kolumny jak nazwy tabeli. Po UPDATE musi wystąpić tabela, czyli w tym przypadku Magazyn, a nie liczba_sztuk, bo aktualizujemy rekordy w tabeli, a dopiero później wskazujemy kolumnę do zmiany. Samo SET liczba_sztuk WHERE id = 7 też nie ma sensu, bo brakuje wartości, która ma zostać wpisana do pola. Baza danych oczekuje przypisania, na przykład liczba_sztuk = liczba_sztuk - 5. Warto zapamiętać, że WHERE nie zmienia danych, tylko wybiera rekordy objęte zmianą. Z mojego doświadczenia najgroźniejsze są zapytania UPDATE pisane na szybko, bo mały błąd składniowy zatrzyma zapytanie, ale brak dobrego warunku WHERE może zmienić bardzo dużo rekordów. Dlatego w praktyce często najpierw sprawdza się rekord poleceniem SELECT, a dopiero potem wykonuje UPDATE.

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.