SELECT - definiše listu kolona koje se traže

   FROM - definiše tabele iz kojih se pribavljaju podaci 

   WHERE - definiše uslove koji treba da se ispune sa bi podaci bili ispisani

** SELECT i FROM su jedine obavezne u okviru SELECT naredbe. **

🔹 🔹

DISTINCT -  izbacuju se duplikati 

* - dobija se sve iz tabele

tabela.* - dobija se sve iz navedene tabele

izraz - ime kolone ili funkcije nad kolonama koja će biti uključena u rezultujuću tabelu

AS pseudonim - novo ime kolone ili funkcije nad kolonama koje im se dodeljuje u rezultujućoj tabeli

U nastavku je dat SQL upit koji prikazuje kompletan sadržaj tabele Ucenik

SELECT * FROM Ucenik;

Rezultat bi bio isti ako bismo napisali upit kod kojeg su umesto * napisana imena svih kolona u tabeli Ucenik.

Ukoliko želimo da prikažemo samo određene kolone iz tabele posle ključne reči SELECT navode se imena kolona koje su od interesa. U nastavku je dat SQL upit koji prikazuje samo ime i prezime svih učenika iz tabele.

SELECT  ime, prezime FROM Ucenik;

Redosled kojim su kolone navedene u klauzuli SELECT definiše redosled kolona u rezultujućoj tabeli. U nastavku je dat SQL upit koji prikazuje isto što i ovaj gore, ali u drugačijem redosledu.

SELECT prezime, ime FROM Ucenik;

SELECT DISTINCT

Kada želimo da nam SELECT upit vrati samo različite vrednosti (da nema duplikata - eliminiše da se u prikazu ne bi pojavile iste vrednosti (redovi/vrste)

Sintaksa za SELECT DISTINCT:

SELECT DISTINCT kolona1, kolona2, ...
FROM ime_tabele;
Na primer:
 
SELECT DISTINCT ime 
FROM T2;

WHERE iskaz uz SELECT

- omogućava da se koristi neki kriterijum (uslov) po kojem se vrši pretraga. Uslov koji se navodi može biti i kombinacija više logičkih uslova između kojih stoji AND, OR ili NOT.

VAŽNO: logički uslovi u SQL-u mogu imati TRI moguće vrednosti: TRUE, FALSE, UNKNOWN. Bilo koji red iz tražene tabele za koji se zadovolji da je uslov TRUE biće prikazan u skupu rezultata. Ako je neko polje nepopunjeno, pa se pokuša nad njim raditi logički izraz, tada se kao rezultat ne dobija ni true, ni false  već unknown - nepoznat.

WHERE klauzula se koristi da filtrira zapise, tj. da se izdvoje samo oni zapisi koji zadovoljavaju specificirane zahteve.

Sintaksa:

SELECT kolona1, kolona2, ...
FROM ime_tabele
WHERE uslov;

Napomena: klauzula WHERE se ne koristi samo u SELECT, već i u UPDATE, DELETE, ...

ukratko: Klauzula WHERE specificira uslov na osnovu koga se dobija rezultat. 

U uslovu se mogu koristiti :

1. Relacioni operatori
2. Logički operatori
3. Operator BETWEEN
4. Operator IN
5. Operator LIKE
6. Operator IS NULL

SQL podržava šest relacionih operatora koji imaju sledeće značenje:

1.  = Jednako
2.  <> Nije jednako (razliĉito)
3.  < Manje od
4.  > Veće od
5.  <= Manje ili jednako od
6.  >= Veće ili jednako od

SQL omogućava korišćenje standardnih logičkih operatora AND, OR, NOT, a sem toga i IN, BETWEEN koji omogućavaju jednostavnije korišćenje prethodno navedenih operatora u nekim slučajevima.

Prioritet logičkih operatora je sledeći:

  1. NOT
  2. AND
  3. OR

Logički operatori AND i OR se koriste na standardan način. Međutim, kod SQL-a, logički operator negacije NOT se navodi na početku logičkog izraza, a ne ispred operatora poređenja. Na primer, NOT A=B može da stoji nakon reči WHERE kao uslov, alI A NOT = B NE MOŽE!

Primer: Ako želimo da prikažemo podatke o voćkama kojih ima više od 10 a unesene su su pre 25 januara 2015, možemo koristiti SQL upit koji je dat u nastavku:

SELECT * FROM Fruit
WHERE Inventory > 10
AND DateEntered > '2015-01-15';

Primer: Sledeći primer je SQL upit koji daje sve voćke koje nisu Apple:

SELECT * FROM Fruit
WHERE NOT FruitName='Apple';

Operator LIKE omogućava poređenje vrednosti kolone sa zadatim šablonom. Kod definisanja šablona koristi se procenat (%). Procenat (%) predstavlja bilo koji mogući znak (broj, slovo, interpunkcijski znak) ili skup znakova. 

Primer: U sledećem upitu traži se spisak svih učenika čije prezime počinje na slovo P:

SELECT *
FROM ucenici
WHERE prezime LIKE 'P%' ;

Obratite pažnju da se u dosta verzija SQL servera ne pravi razlika između velikih i malih slova.

Operator NOT LIKE prikazuje suprotno - sve vrste koje ne odgovaraju  datom opisu koji sledi nakon toga.

PAŽNJA: U zavisnosti od servera koji se koristi, koriste se različiti znakovi za zamenu : SQL Server koristi % za zamenu više znakova i _ za zamenu jednog znaka, dok MS Access umesto % koristi *, a umesto _ koristi ?

Operator IS NULL se koristi za poređanja sa NULL vrednostima. Treba voditi računa da se na NULL vrednosti ne može primeniti ni jedan relacioni operator. Može se samo proveravati da li kolona ima NULL vrednost ili nema.

Primer: U nastavku je dat SQL upit koji izdvaja podatke o svim učenicima kojima nije unet datum rođenja, odnosno datum rođenja ima NULL vrednost:

SELECT *
FROM ucenici
WHERE datumRodj IS NULL ;

*** NOT NULL radi suprotno ***

Sintaksa za korišćenje operatora unutar WHERE:

SELECT kolona1, kolona2, ...
FROM ime_tabele
WHERE uslov1 AND uslov2 AND uslov3 ...;

ili

SELECT kolona1, kolona2, ...
FROM ime_tabele
WHERE uslov1 OR uslov2 OR uslov3 ...;

ili

SELECT kolona1, kolona2, ...
FROM ime_tabele
WHERE NOT uslov;

ili kombinacija .... mogućnosti ima mnogo...

 

Tekstualna i numerička polja:

U SQL-u se oko tekstualnih polja pišu jednostruki navodnici ('Srbija'), mada neke baze podataka dozvoljavaju i dvostruke navodnike. Numerički podaci ne idu u navodnike.

Operatori koji se mogu koristiti uz klauzulu WHERE su:

  =    jednako,
  <    manje od,
  >    veće od,
 <=  manje ili jednako,
 >=  veće ili jednako,
 <> različito, nejednako, ali se u nekim verzijama SQL-a umesto ovoga koristi !=
  BETWEEN - između nekih datih vrednosti,
 LIKE - da li liči na neki šablon,
  IN - da li je u nekom zadatom skupu vrednosti.
 AND - više uslova, svi zadovoljeni
 OR - više uslova, zadovoljen bilo koji
 NOT - negacija uslova koji se navede nakon ove reči

Primeri upotrebe:

🔹

Sledeći upit koristi klauzulu WHERE za nalaženje imena svih koji su u tabeli T2 i  iz Kule:

SELECT ime 
FROM T2
WHERE Grad='Kula';

🔹

Korišćenje WHERE klauzule sa operatorom AND

Sledeći upit koristi WHERE klauzulu za pronalaženje svih imena osoba iz T2 koji su iz Kule i imaju redni broj 4:

SELECT ime 
FROM T2
WHERE Grad='Kula' AND kupacID=4;
Operator AND daje TRUE samo ako su oba uslova tačna, tj ako je kupac iz Kule i ima redni broj 4.

🔹

Tražimo kupce koji su ili sa ID =1 ili sa ID = 3

SELECT ime 
FROM T2
WHERE ID=1 OR ID=3;
Logički uslov je tačan ako je zadovoljena bilo koja strana OR

🔹

Operator BETWEEN vraća TRUE ako je vrednost unutar nekog zadatog opsega.

Granice opsega su uključene !

Sledeći upit vraća sva imena za ID između 1 i 4:

SELECT ime 
FROM T2
WHERE ID BETWEEN 1 AND 4;

🔹

Operator LIKE će da vrati TRUE ako vrednost liči na neki zadati šablon. Da bi se napravio šablon, koriste se džokeri % i _ . Džoker % može da zameni 0, 1 ili više karaktera, dok _ zamenjuje tačno jedan karakter.

(Samo da znate: Ovo važi u SQL Server, MySQL i Oracle, dok je kod MS ACCESS umesto toga * i ?)

Sledeći upit traži kupce čije ime završava na 'ić':

SELECT ime 
FROM T2
WHERE ime LIKE '%ić';

🔹

Operator IN će da vrati TRUE ako se vrednost poklapa sa bilo kojom od vrednosti koje su navedene u listi koja se navodi odmah iza reči IN.

U sledećem primeru tražimo imena svih sa brojem 1 i 3 i 5:

SELECT ime 
FROM T2
WHERE ID IN (1, 3, 5);
 

🔹

Ako neko polje u tabeli nije popunjeno, njegova vrednost je NULL.

Sa NULL se ne mogu vršiti logičke operacije.

Da bi se proverilo da li je neka vrednost NULL, koristi se IS NULL. Nikako ne treba koristiti znak jednakosti (=). Operator IS NULL vraća TRUE ako je vrednost NULL.

U sledećem upitu se koristi klauzula WHERE sa operatorom IS NULL da bi dobili kupca koji nije naveo grad u kojem živi:

SELECT ime 
FROM T2
WHERE grad IS NULL;

Ako bi tražili popunjena polja, tj tražimo kupce koji imaju naveden grad u kojem žive, koristimo IS NOT NULL:

SELECT ime 
FROM T2
WHERE grad IS NOT NULL;
 

🔹

Operatori koji se mogu koristiti navedeni su ranije u lekciji.

U ovom primeru, tražimo sve koji nisu iz Kule:

SELECT ime 
FROM T2
WHERE Grad <> 'Kula';
U sledećem primeru tražimo sve sa rednim brojem manjim od 3:
SELECT ime 
FROM T2
WHERE ID < 3;

ORDER BY iskaz uz SELECT

Kada se koristi klauzula SELECT da bi se dobili podaci iz baze, rezultat koji se dobije nije sortiran. To znači da može da se dobije bilo kakav redosled redova koji se dobiju kao rezultat upita.

ORDER BY klauzula se koristi za sortiranje rezultata u rastućem ili u opadajućem redosledu. Podrazumevano je u rastućem redosledu, ako se drugačije ne navede.

Sintaksa za korišćenje ORDER BY:

SELECT kolona1, kolona2, ...
FROM ime_tabele
ORDER BY kolona1, kolona2, ... ASC|DESC;

Deo u kome je ORDER BY se uvek piše na kraju upita !

Last modified: Thursday, 23 October 2025, 12:00 AM