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

đ

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;

 

background image

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

đ

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);

  

background image

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

ć

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

 

Želiš da pročitaš svih 36 strana?

Prijavi se i preuzmi ceo dokument.

Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.

Slični dokumenti