SQL sintaksa - SELECT - za vežbu i ponavljanje - sa časa 27.02 teorija
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, ...ili
FROM ime_tabele
WHERE uslov1 OR uslov2 OR uslov3 ...;
SELECT kolona1, kolona2, ...ili kombinacija .... mogućnosti ima mnogo.
FROM ime_tabele
WHERE NOT uslov;
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 ImeKupcaOperator AND daje TRUE samo ako su oba uslova tačna, tj ako je kupac iz Kule i ima redni broj 4.
FROM KUPCI
WHERE Grad='Kula' AND kupacID=4;
3) Korišćenje WHERE klauzule sa operatorom OR
Tražimo kupce koji su ili iz UK ili iz Srbije:
SELECT ImeKupcaLogički uslov je tačan ako je zadovoljena bilo koja strana OR : dobićemo sve kupce iz Srbije zajedno sa kupcima iz UK.
FROM KUPCI
WHERE Drzava='Srbija' OR Drzava='UK';
SELECT ImeKupca
FROM KUPCI
WHERE kupacID BETWEEN 1 AND 4;
SELECT ImeKupca
FROM KUPCI
WHERE ImeKupca LIKE '%ić';
SELECT ImeKupca
FROM KUPCI
WHERE kupacID IN (1, 3);
SELECT ImeKupca
FROM KUPCI
WHERE Grad IS NULL;
SELECT ImeKupca
FROM KUPCI
WHERE Grad IS NOT NULL;
SELECT ImeKupcaU sledećem primeru tražimo kupce sa rednim brojem manjim od 3:
FROM KUPCI
WHERE Grad <> 'Kula';
SELECT ImeKupca
FROM KUPCI
WHERE kupacID < 3;