SQL - Kreiranje tabele


Kreiranje tabele u SQL-u

U prethodnoj lekciji naučili smo kako kreirati bazu podataka na poslužitelju baze podataka. Sada je vrijeme da napravite neke tabele u vašoj bazi podataka koje će da sadrži neke podatke. Tabela baza podataka jednostavno organizuje informacije u redove i kolone. Izjava SQL CREATE TABLE koristi se za izradu tabele.



Sintaksa

Osnovna sintaksa za izradu tabele može se napisati kao:

CREATE TABLE table_name (
    column1_name data_type constraints,
    column2_name data_type constraints,
    ....
);

Da biste lakše razumjeli ovu sintaksu, napravimo tabelu u našoj demo bazi podataka. Upišite sljedeću izjavu u MySQL komandnoj liniji i pritisnite enter:

-- Sintaksa za MySQL Database 
CREATE TABLE persons (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    birth_date DATE,
    phone VARCHAR(15) NOT NULL UNIQUE
);
 
-- Sintaksa za SQL Server Database 
CREATE TABLE persons (
    id INT NOT NULL PRIMARY KEY IDENTITY(1,1),
    name VARCHAR(50) NOT NULL,
    birth_date DATE,
    phone VARCHAR(15) NOT NULL UNIQUE
);

Gornja izjava stvara tabelu s imenima persons sa četiri kolone id, name, birth_date i phone. Primjetite da iza svakog kolone slijedi deklaracija vrste podataka. Ova deklaracija određuje koje će se vrsta podataka u koju kolonu pohraniti, bilo da je cijeli broj, niz, datum itd. Neke se vrste podataka mogu deklarisati parametrom dužine koji pokazuje koliko znakova se može pohraniti u kolonu. Na primjer, VARCHAR (50) može da sadrži do 50 znakova.

Sljedeća tabela sažima najčešće korištene tipove podataka koje podržava MySQL.

Tip podatka Opis
INT Pohranjuje numeričke vrijednosti u rasponu od -2147483648 do 2147483647
DECIMAL Pohranjuje decimalne vrijednosti.
CHAR Pohranjuje stringove fiksne dužine maksimalne veličine od 255 znakova.
VARCHAR Pohranjuje varijable promjenjive dužine sa maksimalnom veličinom od 65.535 znakova.
TEXT Pohranjuje stringove s maksimalnom veličinom od 65.535 znakova.
DATE Pohranjuje vrijednosti datuma u YYYY-MM-DD formatu.
DATETIME Pohranjuje kombinovanu vrijednosti datuma/vremena u YYYY-MM-DD HH: MM: SS formatu.
TIMESTAMP Pohranjuje vrijednosti vremenske oznake. Vrijednosti TIMESTAMP pohranjuju se kao broj sekundi od Unix epohe ('1970-01-01 00:00:01' UTC).

Postoji nekoliko dodatnih ograničenja (koji se nazivaju i modifikatori) postavljenih za kolone tabele u prethodnoj izjavi. Ograničenja definišu pravila u vezi sa vrijednostima dopuštenim u kolonama.

  • Ograničenje NOT NULL osigurava da polje ne može prihvatiti NULL vrijednost.
  • Ograničenje PRIMARY KEY označava odgovarajuće polje kao primarni ključ tabele.
  • Atribut AUTO_INCREMENT je MySQL proširenje na standardni SQL, koji govori MySQL-u da automatski dodijeli vrijednost ovom polju ako nije definisano, povećavajući prethodnu vrijednost za 1. Dostupno samo za numerička polja.
  • UNIQUE ograničenje osigurava da svaki red za kolonu mora imati jedinstvenu vrijednost.

Saznaćete više o SQL ograničenjima u sljedećoj lekciji.



Kreiranje tabele ukoliko ne postoji

Ako pokušate stvoriti tabelu koja već postoji unutar baze podataka, dobićete poruku o grešci. Da biste to izbjegli u MySQL-u, možete koristiti opcionalnu klauzulu AKO NE POSTOJI (IF NOT EXISTS):

CREATE TABLE IF NOT EXISTS persons (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    birth_date DATE,
    phone VARCHAR(15) NOT NULL UNIQUE
);