SQL naredba za izmenu tabele - ALTER TABLE
Sintaksa naredbe za izmenu tabele je složena i obuhvata veliki broj aktivnosti koje mogu da se obave prilikom zahteva za izmenu.
Izmenom tabele je moguće:
-
Promena imena tabele
-
Promena potpisa polja tabele (tip podataka, ograničenja, ...)
-
Dodavanje polja (kolona) u tabelu
-
Brisanje kolone iz tabele,
-
Dodavanje ograničenja ili reference na drugu tabelu,
-
itd.
Promena imena tabele
ALTER TABLE staro_ime_tabele RENAME novo_ime_tabele
ili
RENAME TABLE staro_ime TO novo_ime;
Promena imena i potpisa polja(kolone)
ALTER TABLE ime_tabele CHANGE COLUMN staro_ime novo_ime VARCHAR(5) NULL;
Prilikom promene imena kolone, neophodno je potvrditi celokupan
potpis kolone, tj. tip podatka iz kolone sa svim pripadajućim
podešavanjima, ako i sve druge postavke za kolonu, kao što je to u
ovom slučaju NULL.
Napomena:
Ne mora se navoditi ključna reč COLUMN. Može i ovako:
ALTER TABLE ucenici
ADD Prezime VARCHAR(25);
ALTER TABLE ucenici
DROP jmbg;
ALTER TABLE ucenici
MODIFY Ime VARCHAR(28);
Promena tipa podatka kolone
ALTER TABLE ime_tabele MODIFY COLUMN ime_kolone TEXT NOT NULL;
Ako treba da se promeni ime kolone u tabeli uz promenu potpisa, treba da se koristi CHANGE.
Ako treba da se promeni samo potpis polja u tabeli (kolone), bez menjanja imena, treba da se koristi MODIFY.
Dodavanje polja u tabelu
ALTER TABLE ucenici ADD COLUMN jmbg VARCHAR(13) NOT NULL;
Polje (kolona) će biti dodato na poslednje mesto u tabeli.
Ako treba da se novo polje doda na tačno određenu lokaciju u tabeli, moguće je u nastavku SQL naredbe precizirati iza kojeg postojećeg polja treba da bude dodato to novo polje:
ALTER TABLE ucenici ADD COLUMN jmbg VARCHAR(13) NOT NULL AFTER Ime;
Brisanje polja iz tabele
Ako postoji potreba da se iz postojeće tabele izbriše postojeće polje, može da se koristi SQL naredba za izmenu tabele sa aktivnošću brisanja polja u tabeli. Prilikom brisanja polja, biće trajno izgubljene sve vrednosti u tabeli koje su upisane pod tim poljem.
ALTER TABLE ucenici DROP COLUMN jmbg;
Prethodna naredba će da obriše polje jmbg iz tabele ucenici. Ovim postupkom se gube sve vrednosti podataka jmbg iz svih zapisa u tabeli ucenici. U slučaju potrebe da se polje naknadno vrati, ne postoji mogućnost vraćanja prvobitnih vrednosti za pojedinačne redove u tabeli, osim iz eventualne rezervne kopije tabele ili baze podataka, napravljene pre postupka brisanja polja.