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

W tabeli podzespoly należy obniżyć wartość pola cena o 20 dla wszystkich rekordów, gdzie pole producent to TOSHIBA. W języku SQL modyfikacja ta będzie miała postać:

A.
UPDATE podzespoly SET cena = cena - 20;
Źle. Brak WHERE obniży cenę wszystkim producentom.
B.
UPDATE podzespoly SET cena = cena - 20 WHERE producent = 'TOSHIBA';
Dobrze. Cena każdego wybranego rekordu zmniejsza się o 20, tylko dla TOSHIBA.
C.
UPDATE cena = cena - 20 FROM podzespoly WHERE producent = 'TOSHIBA';
Źle. Po UPDATE musi stać nazwa tabeli; FROM tu nie występuje.
D.
UPDATE podzespoly SET cena = 20 WHERE producent = 'TOSHIBA';
Źle. Cena zostanie ustawiona na 20, a nie obniżona o 20.
Żeby zmienić wartość względem obecnej, w SET używa się nazwy kolumny po obu stronach znaku równości: cena = cena - 20 oznacza „nowa cena to stara cena minus 20”. Serwer oblicza wyrażenie osobno dla każdego rekordu, więc każdy podzespół stanieje o 20 względem swojej własnej ceny. Warunek WHERE producent = 'TOSHIBA' ogranicza zmianę do jednego producenta. Do zapamiętania: UPDATE tabela SET kolumna = wyrażenie WHERE warunek. Podobnie działa podwyżka procentowa: cena = cena * 1.1 zwiększa cenę o 10%. Przed taką zmianą warto podejrzeć rekordy zapytaniem SELECT z tym samym warunkiem. Wyrażenia mogą też korzystać z innych kolumn tego samego wiersza.
Każdy z błędnych zapisów popełnia inny typowy błąd. SET cena = 20 nie obniża ceny, tylko ustawia ją na sztywno na 20 we wszystkich wybranych rekordach, niezależnie od poprzedniej wartości. Wersja bez WHERE poprawnie odejmuje 20, ale od ceny każdego podzespołu w tabeli, także produktów innych producentów - wykona się bez ostrzeżenia. Zapis UPDATE cena = ... FROM podzespoly przenosi składnię z SELECT do UPDATE: po słowie UPDATE musi stać nazwa tabeli, a FROM w tym miejscu nie występuje, więc serwer zgłosi błąd składni. Poprawne polecenie łączy wyrażenie względne w SET z warunkiem w WHERE. Dobrym nawykiem jest sprawdzanie każdego polecenia zmieniającego dane pod trzema kątami: czy po UPDATE stoi tabela, czy wyrażenie w SET liczy nową wartość ze starej i czy WHERE wybiera właściwe rekordy.

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.