Każdy obiekt zdefiniowany w języku SQL możemy zmodyfikować. Należy jednak pamiętać, że nie każda modyfikacja jest celowa i pożyteczna. Należy zwrócić szczególną uwagę na dwie kwestie:
- Modyfikacja pola tabeli może doprowadzić do niezgodności typów danych,
- Podczas zmiany typu pola możemy doprowadzić do usunięcia danych znajdujących się w tabeli. Przykładowo zmieniając typ pola ze znakowego na liczbowy automatycznie stracimy dane przechowywane w danym polu.
Dodawanie kolumn
Składnię polecenia umożliwiającego dodanie kolumny przedstawiono poniżej:
ALTER TABLE nazwa_tabeli
ADD [COLUMN] nazwa_pola typ_pola;
Przykładowo jęsli chcemy dodać pole "PESEL" do tabeli "Pracownik" napiszemy:
ALTER TABLE Pracownik
ADD PESEL VARCHAR(12);
W standardzie SQL możliwe jest dodanie kilku kolumn jednocześnie. W PostgreSQL możliwe jest dodanie tylko jednej kolumny za pomocą jednego zapytania. W identyczny sposób możemy dodać restrykcje - zamieniając słowo COLUMN przez jedno z : CHECK, CONSTRAINT, FOREIGN KEY
Usuwanie kolumn
Każdą kolumnę (oraz restrykcję) możemy usunąć podając jej nazwę:
ALTER TABLE Pracownik
DROP [COLUMN] PESEL;
Modyfikacja typu kolumn
Modyfikacji typu (lub rozmiaru) kolumny dokonujemy w sposób następujący:
ALTER TABLE nazwa_tabeli
ALTER nazwa_pola TYPE typ_pola;
W sytuacji, gdy stwierdzimy, że nasze pole PESEL powinno mieć szerokość 11 znaków możemy zmienić jego rozmiar w sposób następujący:
ALTER TABLE Pracownik
ALTER PESEL TYPE VARCHAR(11);
W standardzie SQL zamiast drugiej sekcji "ALTER" występuje sekcja "MODIFY".
Zmiana nazw kolumn
Czasami zdarza się, że należy zmienić nazwę kolumny w tabeli. Wykonujemy to za pomocą polecenia:
ALTER TABLE nazwa_tabeli
RENAME stara_nazwa TO nowa_nazwa;
Przykładowo, jeśli chcemy zamienić nazwę pola "cena" na "cena_netto" napiszemy:
ALTER TABLE Towar
RENAME cena TO cena_netto;
Zmiana nazw tabel
Przy zmianie struktury bazy, może okazać się, że należy zmienić nazwę tabeli. Wykonujemy to w sposób następujący:
ALTER TABLE nazwa_tabeli
RENAME TO nowa_nazwa_tabeli;
Przykładowo, gdy chcemy zamienić nazwę tabeli "Towar" na "Stary_towar" napiszemy:
ALTER TABLE Towar
RENAME TO Stary_towar;