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

Które polecenie SQL ustawi w tabeli tab wartość „Zosia” w kolumnie kol we wszystkich wierszach?

A.
ALTER TABLE tab CHANGE kol = 'Ania' kol = 'Zosia';
B.
UPDATE tab SET kol = 'Zosia';
C.
ALTER TABLE tab CHANGE kol = 'Zosia' kol = 'Ania';
D.
UPDATE tab SET kol = 'Zosia' WHERE kol = 'Ania';
To polecenie używa instrukcji UPDATE, czyli standardowej instrukcji SQL służącej do modyfikowania danych już zapisanych w tabeli. Składnia UPDATE tab SET kol = 'Zosia'; oznacza: weź tabelę tab i ustaw w kolumnie kol wartość 'Zosia'. Ponieważ nie ma tutaj warunku WHERE, baza danych wykona zmianę dla każdego rekordu w tej tabeli. Właśnie o to pyta zadanie: wartość ma zostać ustawiona we wszystkich wierszach, a nie tylko w wybranych. Z mojego doświadczenia warto mocno zapamiętać, że brak WHERE przy UPDATE jest bardzo ważny i trochę niebezpieczny w praktycznej pracy. Jeśli w systemie produkcyjnym napiszesz UPDATE klienci SET status = 'aktywny';, to zmienisz status wszystkim klientom. Czasami to jest celowe, np. przy masowej aktualizacji danych testowych albo ustawieniu domyślnej wartości po imporcie. Dobra praktyka branżowa jest taka, żeby przed takim UPDATE zrobić SELECT sprawdzający tabelę, mieć kopię zapasową albo wykonać operację w transakcji, jeśli system bazodanowy na to pozwala. Sama składnia jest jednak poprawna i zgodna z typowym SQL: UPDATE modyfikuje rekordy, SET wskazuje kolumnę oraz nową wartość, a średnik kończy polecenie.
W tym pytaniu kluczowe jest rozróżnienie dwóch spraw: modyfikowania danych w rekordach oraz modyfikowania struktury tabeli. Do zmiany wartości zapisanych w komórkach tabeli służy UPDATE, a nie ALTER TABLE. Instrukcja ALTER TABLE jest poleceniem DDL, czyli pracuje na definicji tabeli: dodaje kolumny, usuwa je, zmienia typ danych albo nazwę kolumny. Nie służy do wpisywania wartości 'Zosia' do istniejących wierszy. Próba użycia konstrukcji w stylu ALTER TABLE tab CHANGE kol = 'Ania' kol = 'Zosia'; miesza pojęcia z dwóch różnych obszarów SQL. CHANGE w niektórych bazach, na przykład w MySQL, może zmieniać definicję kolumny, ale nie działa jak zamiana tekstu w rekordach. Taka składnia jest zresztą niepoprawna dla aktualizacji danych. Drugi typowy błąd to użycie poprawnej instrukcji UPDATE, ale z warunkiem WHERE kol = 'Ania'. Takie polecenie zmieni tylko te wiersze, w których kolumna kol ma aktualnie wartość 'Ania'. Jeżeli w tabeli są też wartości 'Kasia', 'Ola' albo NULL, one zostaną bez zmian. A zadanie mówi wyraźnie o wszystkich wierszach, więc warunek filtrujący nie pasuje. Moim zdaniem to jest częsty błąd myślowy: ktoś widzi przykłady UPDATE prawie zawsze z WHERE i automatycznie dokłada warunek, bo w praktyce to jest bezpieczniejsze. I faktycznie, w realnej bazie zwykle trzeba uważać z UPDATE bez WHERE, bo można masowo nadpisać dane. Ale w tym konkretnym poleceniu brak WHERE jest właśnie mechanizmem, który powoduje aktualizację całej tabeli.

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.