Uvod u struktuirani upitni jezik
Uvod u struktuirani upitni jezik
Ovo je kratak kurs o struktuiranom upitnom jeziku (poznatom i kao SQL) i predstavlja
pionirski poduhvat jer je to prvi takav kurs koji se može na
ć
i na Internetu. SQL
omogu
ć
ava korisnicima pristup podacima u sistemima za upravljanje relacionim bazama
podataka, kao što su Oracle, Sybase, Informix, Microsoft SQL Server, Access i drugi,
tako što dopušta korisnicima da opišu podatke koje žele da dobiju. SQL tako
đ
e
omogu
ć
ava korisnicima da definišu podatke u nekoj bazi podataka i da manipulišu tim
podacima. U ovom kursu bi
ć
e opisano kako se koristi SQL, a to
ć
e sve biti potkrepljeno
primerima. SQL koji se koristi u ovom dokumentu predstavlja ANSI verziju tog jezika,
ili standardni SQL, i nijedna posebna mogu
ć
nost SQL-a koja je specifi
č
na za sisteme za
upravljanje bazama podataka ne
ć
e se razmatrati do odeljka „Nestandardni SQL“.
Preporu
č
ujemo da odštampate ovaj dokument da biste lakše mogli da pogledate
prethodne primere na koje se ukazuje u tekstu.
Sadržaj
Osnove naredbe SELECT
Relacioni operatori
Složeni uslovi
Operatori IN i BETWEEN
Operator LIKE
Spajanje tabela
Klju
č
evi
Obavljanje spajanja
Klauzula DISTINCT i eliminacija duplikata
Pseudonimi i IN podupiti
Agregatne funkcije
Pogledi
Formiranje novih tabela
Menjanje tabela
Dodavanje podataka
Brisanje podataka
Ažuriranje podataka
Indeksi
Klauzule GROUP BY i HAVING
Još o podupitima
Klauzule EXISTS i ALL
Klauzula UNION i spoljašnje spajanje
Embedded SQL
Č
esta pitanja o SQL-u
Nestandardni SQL
Pregled sintakse naredbi
Vežbanja
Važniji sajtovi o SQL-u, bazama podataka i sli
č
nim temama
Osnove naredbe SELECT
U relacionoj bazi podataka podaci se smeštaju u tabelama. Neka tabela, na primer, mogla
bi da sadrži jedinstveni mati
č
ni broj gra
đ
ana, imena, prezimena i adrese zaposlenih:
TabelaAdresaRadnika
JMBG
Ime
Prezime
Adresa
Grad
Republika
512687458
Đ
or
đ
e
Petrovi
ć
Kralja Petra 9
Beograd
Srbija
758420012
Marija
Simi
ć
Bul Nikole Tesle 22 Jagodina
Srbija
102254896
Savo
Jovanovi
ć
Njegoševa 17
Podgorica Crna Gora
876512563
Svetlana
A
ć
imovi
ć
Laze Lazarevi
ć
a 10 Subotica
Srbija
Pretpostavimo da želite, recimo, da vidite adrese svih zaposlenih. Da biste to postigli,
koristite naredbu SELECT:
SELECT Ime, Prezime, Adresa, Grad, Republika
FROM TabelaAdresaRadnika;
Rezultat ovog
upita
u bazu podataka je:
Ime
Prezime
Adresa
Grad
Republika
Đ
or
đ
e
Petrovi
ć
Kralja Petra 9
Beograd
Srbija
Marija
Simi
ć
Bul Nikole Tesle 22 Jagodina
Srbija
Savo
Jovanovi
ć
Njegoševa 17
Podgorica Crna Gora
Svetlana
A
ć
imovi
ć
Laze Lazarevi
ć
a 10 Subotica
Srbija
Da objasnimo sada šta ste upravo uradili: tražili ste sve podatke u tabeli
TabelaAdresaRadnika – preciznije, tražili ste
kolone
pod nazivom Ime, Prezime, Adresa,
Grad, Republika. Obratite pažnju da imena kolona i tabela ne sadrže razmake – ona se
moraju navesti kao jedna re
č
, kao i da se naredba završava ta
č
kom i zarezom (;). Opšti
oblik naredbe SELECT kojom se dobijaju svi
redovi
u tabeli je:
SELECT ImeKolone, ImeKolone, ...
FROM ImeTabele;
Da biste dobili sve kolone neke tabele bez navo
đ
enja svih imena kolona, koristite:
SELECT * FROM ImeTabele;

SELECT IDRADNIKA
FROM TABELAPRIMANJARADNIKA
WHERE PLATA >= 50000;
Obratite pažnju da se koristi znak >= (ve
ć
e ili jednako), pošto smo želeli da izdvojimo
one zaposlene koji zara
đ
uju više od 50,000, ili jednako 50,000, i to prikazano zajedno.
Kao rezultat dobijamo:
IDRADNIKA
------------
010
105
152
215
244
Opis klauzule WHERE, odnosno deo PLATA >= 50000, naziva se
uslov
(operacija koja
kao rezultat daje vrednost True (ta
č
no) ili False (neta
č
no))
.
Isti tip operacije može se
primeniti na tekstualne kolone:
SELECT IDRADNIKA
FROM TABELAPRIMANJARADNIKA
WHERE POLOŽAJ = 'rukovodilac';
Ova naredba prikazuje ID brojeve svih rukovodilaca. Generalno, u slu
č
aju tekstualnih
kolona, koristite operatore jednako ili razli
č
ito, i obavezno ceo tekst koji se pojavljuje u
naredbi navedite unutar apostrofa (').
Složeni uslovi
Operator AND kombinuje dva ili više uslova i prikazuje neki red tabele samo ukoliko
podaci tog reda zadovoljavaju
sve
navedene uslove (tj. svi uslovi su ta
č
ni). Na primer, da
biste prikazali sve
č
inovnike koji zara
đ
uju više od 40.000, koristite naredbu:
SELECT IDRADNIKA
FROM TABELAPRIMANJARADNIKA
WHERE PLATA > 40000 AND POLOŽAJ = '
č
inovnik';
Operator OR kombinuje dva ili više uslova, ali prikazuje red ukoliko je
neki
navedeni
uslov zadovoljen. Da biste zajedno prikazali one zaposlene koji zara
đ
uju manje od
40.000 ili su im prinadležnosti manje od 10.000, koristite ovaj upit:
SELECT IDRADNIKA
FROM TABELAPRIMANJARADNIKA
WHERE PLATA < 40000 OR PRINADLEŽNOSTI < 10000;
Operatori AND i OR mogu da se kombinuju, na primer:
SELECT IDRADNIKA
FROM TABELAPRIMANJARADNIKA
WHERE POLOŽAJ = 'rukovodilac' AND PLATA > 60000 OR PRINADLEŽNOSTI >
12000;
SQL najpre pronalazi (odvojeno) redove u kojima zaposleni ima platu ve
ć
u od 60.000 i
ima rukovode
ć
i položaj, a zatim iz ove liste redova izdvaja one koji zadovoljavaju gornji
AND uslov ili uslov da su prinadležnosti ve
ć
e od 12.000. Na kraju, SQL prikazuje ovu
drugu novu listu, pri
č
emu treba znati da
ć
e svako ko prima prinadležnosti ve
ć
e od
12.000 biti uklju
č
en jer operator OR uklju
č
uje red ako je bar jedan uslov ta
č
an. Tako
đ
e
obratite pažnju da se najpre izra
č
unava rezultat operatora AND.
Ako generalizujemo ovaj proces, SQL najpre izra
č
unava AND uslove da bi odredio
redove koji zadovoljavaju AND operacije (zapamtite: svi uslovi moraju biti ta
č
ni), zatim
ovi redovi se proveravaju prema OR uslovima, a na kraju prikazuje samo one preostale
redove koji zadovoljavaju neki od OR uslova (pri
č
emu se za izra
č
unavanje operatora OR
koristi par uslova ili rezultata operatora AND, a dobija se rezultat ta
č
no ako je bilo koji
me
đ
urezultat ta
č
an). Matemati
č
ki, SQL izra
č
unava najpre sve uslove, zatim izra
č
unava
sve AND parove i na kraju OR parove (pri
č
emu se oba operatora izra
č
unavaju sa leva na
desno).
Da bismo ovo pojasnili na primeru, pretpostavimo da SQL izra
č
unava klauzulu WHERE
za dati red tabele kako bi odredio da li taj red treba uklju
č
iti u rezultat upita (tj. da li
izra
č
unavanje
č
itave klauzule WHERE daje ta
č
no), da je izra
č
unao rezultat svih uslova i
da je spreman da primeni logi
č
ke operacije na ovaj rezultat:
True AND False OR True AND True OR False AND False
Najpre se uproste AND parovi:
False OR True OR False
Zatim OR parovi, sa leva na desno:
True OR False
True
Rezultat je ta
č
no i red zadovoljava uslove upita. Obavezno pro
č
itajte slede
ć
i odeljak o
operatoru NOT i redosledu izra
č
unavanja logi
č
kih operacija. Nadamo se da vam je ovaj
odeljak pomogao u razumevanju operatora AND i OR, iako je teško to kratko objasniti.
Da biste primenili operatore OR pre operatora AND, kao npr. u slu
č
aju kada želite da
dobijete listu rukovodilaca koji imaju veliku platu (50.000) ili imaju velike prinadležnosti
(10.000), koristite zagrade:
SELECT IDRADNIKA
FROM TABELAPRIMANJARADNIKA
WHERE POLOŽAJ = 'rukovodilac' AND (PLATA > 50000 OR PRINADLEŽNOSTI >
10000);

nalaze na istoj poziciji relativno od datih znakova. Operator NOT LIKE prikazuje redove
koji ne zadovoljavaju dati kriterijum. Postoje i druge mogu
ć
nosti za upotrebu operatora
LIKE, ili onih drugih koje smo razmatrali, ali to umnogome zavisi od konkretnog sistema
za upravljanje bazama podataka koji koristite; kao i obi
č
no, konsultujte priru
č
nik ili
administratora sistema da biste saznali koje mogu
ć
nosti postoje na vašem sistemu, ili da
biste proverili da li ono što pokušavate da uradite jeste raspoloživo i dopušteno. Ova
napomena važi i za mogu
ć
nosti SQL-a koje
ć
emo opisati u nastavku. Cilj ovog odeljka je
samo da vam predo
č
i ideju mogu
ć
nosti za upite koji se mogu pisati u SQL-u.
Spajanje tabela
U ovom odeljku govori se samo o
unutrašnjem
spajanju i spajanju
izjedna
č
avanjem
pošto
su oni najkorisniji u praksi. Da biste dobili više informacija o ovome, posetite neki od
sajtova u vezi sa SQL-om na kraju dokumenta.
Dobar dizajn baze podataka preporu
č
uje da svaka tabela sadrži podatke o samo jednom
entitetu, a detaljnije informacije u relacionoj bazi podataka mogu se dobiti pomo
ć
u
dodatnih tabela i njihovim
spajanjem
.
Uvedimo najpre slede
ć
e tabele kao primer:
VlasniciAntikviteta
IDVlasnika
PrezimeVlasnika
ImeVlasnika
01
Jovanovi
ć
Branko
02
Simonovi
ć
Boban
15
Lazarevi
ć
Pava
21
A
ć
imovi
ć
Jelena
50
Filipovi
ć
Sima
Porudžbine
IDVlasnika
ŽeljeniKomad
02
sto
02
pisa
ć
i sto
21
stolica
15
ogledalo
Antikviteti
IDProdavca
IDKupca
KomadNameštaja
01
50
krevet
02
15
sto
15
02
stolica
21
50
ogledalo
50
01
pisa
ć
i sto
Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.
Slični dokumenti