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.