Naredbe za izmenu tabele - ALTER TABLE
Izmenom tabele je moguće:
- Promena imena tabele
- Promena potpisa polja tabele (tip podataka, ograničenja, ...)
- Dodavanje polja (kolona) u tabelu
- Brisanje polja (kolone) iz tabele,
- Dodavanje ograničenja ili reference na drugu tabelu,
- itd.
Za ilustraciju u daljem radu upotrebite sledeći primer:
CREATE DATABASE mojaBaza;
USE mojaBaza;CREATE TABLE ucenici ( rbr INT PRIMARY KEY, ime VARCHAR(20) NOT NULL, JMBG CHAR(13), email VARCHAR(50) )INSERT INTO ucenici (rbr, ime, email) VALUES (1, 'Pera', 'p@p.com'), (2, 'Sima', 'si@s.com')
Promena imena tabele
ALTER TABLE staro_ime_tabele RENAME TO novo_ime_tabele
ili
RENAME TABLE staro_ime TO novo_ime;
u našem primeru:
RENAME TABLE ucenici TO mucenici;
Promena kolone (polja) unutar tabele (možete menjati ime kolone, kao i tip podataka u njoj)
ALTER TABLE ime_tabele CHANGE COLUMN staro_ime novo_ime VARCHAR(5) NULL;
u zavisnosti od verzije, možda se umesti CHANGE, koristi MODIFY (kao na primer za MySQL koji koristimo u školi):
ALTER TABLE mucenici MODIFY 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, kao i sve druge postavke za kolonu, kao što je to u
ovom slučaju tip VARCHAR(5) i ograničenje NULL.
Napomena:
Ne mora se navoditi ključna reč COLUMN.
Znači da je isto:
ALTER TABLE mucenici MODIFY COLUMN ime VARCHAR(5) NULL;
i
ALTER TABLE mucenici MODIFY ime VARCHAR(5) NULL;Isto tako, isto je:
ALTER TABLE mucenici RENAME TO we;
ALTER TABLE mucenici RENAME we;
RENAME TABLE mucenici TO we;
Dodavanje polja (kolone) u tabelu:
ALTER TABLE ucenici
ADD Prezime VARCHAR(25);
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 mucenici ADD COLUMN adresa VARCHAR(13) NOT NULL AFTER Ime;
Brisanje (uklanjanje) kolone iz tabele:
Prilikom brisanja polja, biće trajno
izgubljene sve vrednosti u tabeli koje su upisane pod tim poljem.
ALTER TABLE uceniciPrethodna 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.
DROP jmbg;