W języku SQL polecenie ALTER TABLE
A. usuwa tabelę wraz z danymi.
B. zmienia strukturę istniejącej tabeli, np. dodaje lub usuwa kolumny.
C. wprowadza dane do tabeli.
D. tworzy nową tabelę.
Polecenie ALTER TABLE w SQL służy do modyfikowania struktury już istniejącej tabeli, czyli działa na schemacie bazy danych, a nie bezpośrednio na pojedynczych rekordach. Można nim dodać kolumnę, usunąć kolumnę, zmienić typ danych, dodać ograniczenie NOT NULL, klucz obcy albo indeks, zależnie od systemu bazodanowego. Przykład praktyczny: ALTER TABLE users ADD COLUMN phone VARCHAR(20); dodaje do tabeli users nową kolumnę na numer telefonu. W realnych projektach to bardzo częsta operacja, bo aplikacja się rozwija i nagle trzeba przechowywać dodatkowe dane. Moim zdaniem warto zapamiętać, że ALTER TABLE należy do poleceń DDL, czyli Data Definition Language, podobnie jak CREATE TABLE i DROP TABLE. Dobra praktyka branżowa jest taka, żeby takie zmiany wykonywać przez migracje, testować je wcześniej na kopii bazy i uważać na dane produkcyjne. Niby jedno polecenie, ale potrafi mocno wpłynąć na działanie całej aplikacji.
W tym pytaniu łatwo pomylić różne grupy poleceń SQL, bo wszystkie dotyczą tabel, ale robią zupełnie inne rzeczy. ALTER TABLE nie tworzy nowej tabeli od zera. Do tego używa się CREATE TABLE, gdzie definiuje się nazwę tabeli, kolumny, typy danych, klucze i ograniczenia. Jeśli ktoś kojarzy słowo table i od razu myśli o tworzeniu tabeli, to jest to dość typowy skrót myślowy, ale w SQL nazwa polecenia ma konkretne znaczenie.
ALTER TABLE nie służy też do wprowadzania danych do tabeli. Dodawanie rekordów wykonuje się poleceniem INSERT INTO, na przykład INSERT INTO users ... . To już jest operacja na danych, czyli DML, a nie na strukturze bazy. Różnica jest ważna praktycznie: dodanie kolumny zmienia projekt tabeli, a dodanie rekordu zmienia jej zawartość. Z mojego doświadczenia właśnie to rozróżnienie najczęściej miesza się na początku nauki baz danych.
Nie należy również utożsamiać ALTER TABLE z usuwaniem całej tabeli. Do skasowania tabeli razem z jej definicją używa się DROP TABLE. To bardzo mocna operacja, często nieodwracalna bez kopii zapasowej. ALTER TABLE może co prawda usuwać pojedyncze kolumny, ale nie oznacza to usunięcia całej tabeli wraz z danymi. W praktyce przed zmianami struktury stosuje się migracje, backupy i testy, bo nawet drobna zmiana typu kolumny może popsuć aplikację albo relacje między tabelami.
ALTER TABLE nie służy też do wprowadzania danych do tabeli. Dodawanie rekordów wykonuje się poleceniem INSERT INTO, na przykład INSERT INTO users ... . To już jest operacja na danych, czyli DML, a nie na strukturze bazy. Różnica jest ważna praktycznie: dodanie kolumny zmienia projekt tabeli, a dodanie rekordu zmienia jej zawartość. Z mojego doświadczenia właśnie to rozróżnienie najczęściej miesza się na początku nauki baz danych.
Nie należy również utożsamiać ALTER TABLE z usuwaniem całej tabeli. Do skasowania tabeli razem z jej definicją używa się DROP TABLE. To bardzo mocna operacja, często nieodwracalna bez kopii zapasowej. ALTER TABLE może co prawda usuwać pojedyncze kolumny, ale nie oznacza to usunięcia całej tabeli wraz z danymi. W praktyce przed zmianami struktury stosuje się migracje, backupy i testy, bo nawet drobna zmiana typu kolumny może popsuć aplikację albo relacje między tabelami.