Za pomocą polecenia ALTER TABLE można
A. modyfikować strukturę tabeli.
B. tworzyć tabelę.
C. usuwać tabelę.
D. modyfikować wartości zapisane w rekordach tabeli.
Pytanie z egzaminu CKE, czerwiec 2019 (arkusz EE.09-X-19.06).
Polecenie ALTER TABLE służy do modyfikowania struktury już istniejącej tabeli w bazie danych. Chodzi tu o zmianę definicji tabeli, a nie o zmianę danych zapisanych w jej wierszach. Za jego pomocą można na przykład dodać nową kolumnę, usunąć kolumnę, zmienić typ danych kolumny, dodać klucz główny, klucz obcy albo ograniczenie typu NOT NULL czy UNIQUE. Przykład praktyczny: ALTER TABLE klienci ADD email VARCHAR(100); dodaje do tabeli klienci kolumnę na adres e-mail. W realnej pracy to bardzo częste, bo projekt bazy rzadko jest idealny od początku. Moim zdaniem warto zapamiętać prostą zasadę: ALTER TABLE zmienia schemat tabeli, czyli jej budowę. Dane w rekordach zmienia się innymi instrukcjami, głównie UPDATE. Dobrą praktyką jest wykonywanie takich zmian ostrożnie, najlepiej po zrobieniu kopii zapasowej i sprawdzeniu zapytania na środowisku testowym, bo zmiana struktury tabeli może wpłynąć na aplikację, relacje i istniejące dane.
W tym pytaniu łatwo pomylić polecenia SQL, bo wszystkie dotyczą tabel, ale każde działa na innym poziomie. ALTER TABLE nie służy do usuwania całej tabeli. Do tego używa się polecenia DROP TABLE, które usuwa tabelę razem z jej strukturą, a zwykle także z danymi. To operacja dość niebezpieczna, więc w praktyce robi się ją świadomie i często dopiero po kopii zapasowej. ALTER TABLE nie tworzy też nowej tabeli. Za utworzenie tabeli odpowiada CREATE TABLE, gdzie definiuje się nazwy kolumn, typy danych, klucze i ograniczenia, czyli cały początkowy schemat obiektu. Częsty błąd polega na tym, że ktoś widzi słowo TABLE i zakłada, że każde polecenie z nim związane robi mniej więcej to samo. No właśnie nie do końca. Trzeba patrzeć na czasownik: CREATE tworzy, DROP usuwa, ALTER zmienia strukturę. Nie należy też utożsamiać zmiany struktury tabeli ze zmianą wartości w rekordach. Jeżeli chcemy poprawić nazwisko klienta, cenę produktu albo status zamówienia, używamy UPDATE, na przykład UPDATE produkty SET cena = 99.99 WHERE id = 5;. ALTER TABLE mógłby natomiast dodać kolumnę cena_promocyjna albo zmienić typ kolumny cena. Z mojego doświadczenia takie rozróżnienie bardzo pomaga przy nauce SQL: DDL, czyli Data Definition Language, obejmuje polecenia do opisu struktury bazy, takie jak CREATE, ALTER i DROP, a DML, czyli Data Manipulation Language, służy do pracy na danych, na przykład SELECT, INSERT, UPDATE i DELETE.