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;