SQL – DDL

Naredbe insert, select, update i delete pripadaju DML(Data manipulaiton language) dijelu SQL-a. DML upravlja podacima koji već imaju strukturu, tj. baza podataka je napravljena i u bazi postoje tabele u kojima su podaci organizovani u kolonama i imaju tip podataka.

DDL(Data definition language) je dio SQL-a koji se bavi pravljenjem baza i tabela, izmjenom i brisanjem.

Nova baza podataka se pravi korištenjem naredbe CREATE DATABASE

CREATE DATABASE gimnazija;

Postojeće tabele se prikazuju pomoću naredbe SHOW DATABASES;

SHOW DATABASES;

Baza podataka se briše korištenjem naredbe DROP DATABASE.

DROP DATABASE gimnazija;

Kako bismo jednostavnije koristili bazu podatka, možemo navesti sa kojim bazom trenutno radimo. U tom slučaju ne moramo prilikom rada sa tabelama navoditi kojoj bazi tabela pripada.

use gimnazija;

Kada je baza podataka napravljena, u bazu se mogu dodavati tabele.

CREATE TABLE ucenici (
    ID int,
    ime varchar(255),
    prezime varchar(255),
    adresa varchar(255)
);

Tabela se briše iz baze pomoću naredbe DROP TABLE.

DROP TABLE ucenici;

Izmjena tabele vrši se pomoću naredbe ALTER TABLE. Nova kolona dodaje se na sljedeći način.

ALTER TABLE ucenici
ADD email varchar(255);

Kolona iz tabele se briše ovako:

ALTER TABLE ucenici
DROP COLUMN Email;

Izmjena kolone se radi na sljedeći način.

ALTER TABLE ucenici
MODIFY COLUMN email varchar(64);

Prilikom pravljenja tabele možemo definisati i primarne ključeve, indekse, automatsko povećavanje vrijednosti, kolone koje moraju imati vrijednost i drugo.

CREATE TABLE ucenici (
    ID int NOT NULL AUTO_INCREMENT,
    ime varchar(255) NOT NULL,
    prezime varchar(255),
    razred tinyint unsigned,
    email VARCHAR(255) UNIQUE,
    PRIMARY KEY (ID),
    INDEX idx_name (ime)
);

Indeks se može dodati i nakon kreirranja tabele.

CREATE INDEX idx_prezime
ON ucenici (prezime);

NOT NULL znači da kolona ne može biti prazna. AUTO_INCREMENT označava da će se vrijednost tog polja povećavati za jedan za svaki novi unos. Unsigned znači da ne koristimo negativne brojeve. UNIQUE znači da vrijednost svakog unosa u toj koloni mora biti jedinstven. PRIMARY KEY definiše primarni ključ(koji je ujedno i unique). INDEX omogućava brže pretraživanje tabele po koloni koja ima indeks jer su podaci već indeksirani za tu kolonu.