Naredne lekcije tiču se programiranja MySQL servera. Podrazumeva se poznavanje aktivacije SQL upita i pregled rezultata pa se na to nećemo vraćati. Ukoliko niste savladali ove komponente, savetujemo da se podsetite povratkom na prethodne lekcije.
Sve dijalekte SQL jezika karakterišu tri seta naredbi. Naredbe za manipuliaciju, naredbe za definiciju i naredbe za kontrolu. Ove naredbe koriste se kroz upite bez naročitog naglašavanja pa se podela može smatrati logičkom, više nego stvarnom. Do sada smo, tokom kursa, kroz primere rukovali kontrolama iz sve tri grupe, pa će lekcije u nastavku biti nadogradnja na već korišćene tehnike.
Naredbe za kontrolu koriste se za rukovanje pravima na serveru. To su naredbe GRANT i REVOKE.
U jednoj od prethodnih lekcija (korisnici i prava pristupa) dodelili smo korisniku prava sledećom naredbom:
grant select, update, create, delete on *.* to 'testKorisnik'@'%'
što je tipična naredba za kontrolu.
Ni ovaj set naredbi nije nam nepoznat. To su naredbe CREATE, ALTER i DROP. Ove naredbe koriste se za rukovanje objektima na serveru, odnosno, svim onim što može da se napravi, izmeni ili obriše: baze, tabele, uskladištene procedure, pogledi...
Pošto je u pitanju kreiranje objekata na serveru, ovaj set, kao i prethodni, obično je dostupan samo administratorima servera (za sve iznad nivoa baze korisnika), tako da, kada korisnik dobije pravo na korišćenje baze, može da radi većinu stvari unutar te svoje baze, ali nema mogućnost njenog brisanja ili brisanja ostalih baza servera. Iz istog razloga, običnim korisnicima nedostupne su i kontrolne komande. Jer, ukoliko bi korisnik imao mogućnost da rukuje kontrolnim komandama, mogao bi sam sebi da da visoka prava i dovede do pomenutih intervencija (brisanje sopstvene ili drugih baza na serveru).
Primer definicione naredbe je:
create database mojaBaza;
ili:
create table mojaTabela
(id int primary key auto_increment,
ime varchar(50),
prezime varchar(50)
);
Često se, u praksi, koristi skraćenica DDL (Data Definition Language). Ukoliko vam neko traži DDL vaše baze, zapravo traži skriptu kojom se ta baza kreira. Ukoliko se, na primer, baza naziva mojaBaza i ima jednu tabelu (dakle, baza iz malopređašnjeg primera), DDL za tu bazu će biti takođe kod iz primera (kreacija baze i kreacija tabele).
Ovaj set naredbi je srce SQL-a. To su naredbe koje se koriste često i u velikoj količini. Sigurno nećemo svakog dana kreirati baze podataka (osim ako nismo administrator baze), niti njihovu strukturu (tabele), korisnike i sl. Ovo je posao koji se obavlja jednom (bar njegovi ključni delovi). Sa druge strane, manipulaciju podacima, što je predmet naredbi za manipulaciju, vršimo konstantno.
Naredbe za manipulaciju podacima su SELECT, INSERT, UPDATE i DELETE. SELECT smo već imali prilike da upoznamo kroz jednostavan primer u jednoj od prethodnih lekcija. A ništa komplikovanije nisu ni ostale naredbe seta.
Primer naredbe SELECT, koja izlistava redove tabele:
select * from mojaTabela
Primer naredbe INSERT koja unosi red u tabelu:
insert into mojatabela (id,ime) values (‘’,’Link’)
Primer naredbe DELETE koja briše redove tabele:
delete from mojatabela where ime=’Link’
Primer naredbe UPDATE koja ažurira redove tabele:
update mojatabela set ime=’Link Group’ where ime=’Link’
Manipulacioni set je malo slobodniji po pitanju prava korisnika. Većini korisnika možemo, na primer, dozvoliti da listaju redove tabela. Ali, i tu treba biti pažljiv. DELETE, UPDATE, pa i INSERT naredbe u pogrešnim rukama, mogu naneti priličnu štetu podacima.
Primećujemo da ni jedna od naredbi ne ide sama. Obično (osim, naravno, parametara) slede i neke dodatne opcije. Ove opcije razlikuju se od slučaja do slučaja i od seta naredbi do seta. Na primer, ključna reč where karakteristična je za manipulacioni set, dok ćemo on ili for često sretati u slučajevima definicije i kontrole.
Takođe, neke od naredbi imaju potpuno drugačiju sintaksu u različitim slučajevima:
Naredba CREATE zvuči potpuno drugačije u kontekstu kreiranja baze, a različito u kontekstu kreiranja TABELE, iako je, u oba slučaja, u pitanju definiciona naredba.
Postoji i mnoštvo naredbi (ključnih reči) koje ne mogu logički da se svrstaju u neku grupaciju. Na primer, koristićemo operator-funkciju IN(), koja proverava postojanje nekog elementa u nizu. Iako se može smestiti u bilo koji upit, ova funkcija nije sastavni deo ni jednog seta naredbi, već predstavlja zasebnu funkciju.
Pored ugrađenih funkcija, SQL server poznaje i uskladištene procedure, koje možemo kreirati i sami i tako, praktično, stvarati nove naredbe.
Često se naredbe SQL-a pišu velikim slovima:
SELECT * FROM mojatabela WHERE id=5;
Već smo pomenuli da je ovo pravilo koje, jednostavno, ne moramo poštovati, jer SQL nije osetljiv na velika i mala slova (osim ako koristimo neku kolaciju koja podrazumeva ovu osetljivost).
Najvažnije iz lekcije: