Które z poleceń umożliwia dodanie kolumny zadanie_kompletne do tabeli zadania?
CREATE INDEX zadania ADD COLUMN zadanie_kompletne int
ADD COLUMN zadanie_kompletne WITH zadania
ALTER TABLE zadania ADD COLUMN zadanie_kompletne int
INSERT INTO zadania VALUES zadania_kompletne
Pytanie z egzaminu CKE, czerwiec 2015 (arkusz E.14-X-15.05).
Poprawne jest polecenie ALTER TABLE zadania ADD COLUMN zadanie_kompletne int. ALTER TABLE zmienia strukturę istniejącej tabeli, a klauzula ADD COLUMN dopisuje nową kolumnę o podanej nazwie i typie - tu liczbowym int. Istniejące wiersze dostają w nowej kolumnie wartość NULL albo wartość domyślną, jeśli ją określono.
Do zapamiętania: ALTER TABLE obsługuje też DROP COLUMN (usunięcie kolumny), MODIFY lub CHANGE (zmiana typu albo nazwy) oraz dodawanie kluczy i indeksów. Słowo COLUMN w MySQL jest opcjonalne, więc ALTER TABLE zadania ADD zadanie_kompletne int; działa tak samo. Można też od razu ustawić wartość domyślną, np. DEFAULT 0.
Każde z błędnych poleceń myli strukturę tabeli z jej zawartością albo z innym obiektem bazy. CREATE INDEX tworzy indeks przyspieszający wyszukiwanie po istniejących kolumnach. Ma składnię CREATE INDEX nazwa ON tabela (kolumna) i nie potrafi dodać kolumny, więc połączenie go z ADD COLUMN to błąd składni.
INSERT INTO dopisuje nowe wiersze z danymi, a nie nowe kolumny - działa na zawartości tabeli, nie na jej budowie. Zapis ADD COLUMN ... WITH zadania nie istnieje w SQL: klauzula ADD występuje tylko jako część polecenia ALTER TABLE, a słowo WITH służy do czegoś zupełnie innego, np. do wyrażeń CTE. Dobra reguła: zmiana budowy tabeli (kolumny, klucze, typy) to zawsze ALTER TABLE, a zmiana danych to INSERT, UPDATE i DELETE.
W phpMyAdmin ta sama operacja kryje się pod przyciskiem dodawania kolumny w zakładce Struktura, a narzędzie i tak wysyła do serwera polecenie ALTER TABLE.