Do sada ste osvojili 0 od maksimalno 0 bodova.

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: loguč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 brikazan u skupu rezultata. Ako je neko polje nepopunjeno, pa se pokuša nad njim raditi logički izraz, rezultat nije 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, ...

Primer: Trebaju nam svi kupci koji su iz Srbije:

SELECT * FROM KUPCI
WHERE Drzava='Srbija';


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.

Na primer:

SELECT * FROM KUPCI
WHERE kupacID=1;

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

Sintaksa za korišćenje ovih 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.

Na Primer:
SELECT * FROM KUPCI
WHERE Grad='Kula' OR Grad='Sombor'

Primeri upotrebe:

1) Korišćenje WHERE klauzule sa operatorom =

Sledeći upit koristi klauzulu WHERE za nalaženje imena svih kupaca čiji je grad Kula:

SELECT ImeKupca 
FROM KUPCI
WHERE Grad='Kula';

U ovom primeru, SELECT iskaz ispituje sve redove tabele KUPCI i selektuje samo one redove  koji u koloni za Grad imaju vrednost Kula.

2) Korišćenje WHERE klauzule sa operatorom AND

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

SELECT ImeKupca 
FROM KUPCI
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.


3) Korišćenje WHERE klauzule sa operatorom OR

Tražimo kupce koji su ili iz UK ili iz Srbije:

SELECT ImeKupca 
FROM KUPCI
WHERE Drzava='Srbija' OR Drzava='UK';
Logički uslov je tačan ako je zadovoljena bilo koja strana OR : dobićemo sve kupce iz Srbije zajedno sa kupcima iz UK.

4) Korišćenje WHERE klauzule sa operatorom BETWEEN
Operator BETWEEN vraća TRUE ako je vrednost unutar nekog zadatog opsega.
Granice opsega su uključene !
Sledeći upit vraća sve kupce čiji je ID između 1 i 4:
SELECT ImeKupca 
FROM KUPCI
WHERE kupacID BETWEEN 1 AND 4;
5) Korišćenje WHERE klauzule sa operatorom LIKE
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 ImeKupca 
FROM KUPCI
WHERE ImeKupca LIKE '%ić';

6) Korišćenje WHERE klauzule sa operatorom IN
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 kupce sa brojem 1 i 3:
SELECT ImeKupca 
FROM KUPCI
WHERE kupacID IN (1, 3);

7) Korišćenje WHERE klauzule sa operatorom IS NULL
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 ImeKupca 
FROM KUPCI
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 ImeKupca 
FROM KUPCI
WHERE Grad IS NOT NULL;

8) Korišćenje WHERE klauzule sa operatorima poređenja
Operatori koji se mogu koristiti navedeni su ranije u lekciji.
U ovom primeru, tražimo kupce koji nisu iz Kule:
SELECT ImeKupca 
FROM KUPCI
WHERE Grad <> 'Kula';
U sledećem primeru tražimo kupce sa rednim brojem manjim od 3:
SELECT ImeKupca 
FROM KUPCI
WHERE kupacID < 3;
Završili ste 0% lekcije
0%