Selekcija, izdvajanje slogova koji zadovoljavaju uslov
klauzula WHERE
U svim dosadašnjim primjerima, u rezultatu su se pojavljivali svi redovi,
slogovi jedne tabele. Moguće je primjeniti naredbu SELECT samo na neke slogove (n-torke) koje zadovoljavaju ili ne zadovoljavaju zadate uslove. U tu svrhu koristimo klauzulu WHERE (gdje je), i ona nam omogućava: izdvajanje (selekciju) redova koji zadovoljavaju neki uslov, izdvajanje redova koji zadovoljavaju više uslova (AND), izdvajanje redova koji zadovoljavaju bar jedan od uslova (OR), izdvajanje redova koji zadovoljavaju složene uslove (AND i OR), izdvajanje redova čija je vrijednost unutar nekih granica (BETWEEN), izdvajanje redova čija vrijednost pripada nekoj listi vrijednosti (IN), izdvajanje redova koji ne zadovoljavaju neke uslove (NOT, IS NOT), izdvajanje redova ako neka vrijednost postoji (EXISTS), itd. Sintaksa pisanja uslova (WHERE), pomoću izraza upoređivanja, u opštem slučaju je sljedeća: argument1 operator poređenja argument2 a argumenti mogu biti: jedan atribut, skup atributa (u zagradama odvojeni zarezom) ili naredba SELECT koja vraća najviše jednu n-torku, dok operator poređenja može biti bilo koji od operatora: veći (>), manji (<), veći ili jednak (>=), manji ili jednak (<=), jednak (=) i različit (< >, !=). Ako se porede argumenti koji se sastoje od više atributa, tada oba argumenta moraju imati jednak broj atributa, a porede se prvi sa prvim, drugi sa drugim, itd. Napomenimo da atributi koji se porede moraju imati isti domen, odnosno moraju biti istog, ili kompatibilnog tipa podataka. Prilikom postavljanja uslova, mogu se koristiti sljedeće klauzule: BETWEEN (između). IN (u), EXISTS (postoji), ANY (bilo koji, ma koji), SOME (neki), ALL (svi). Sintaksa operacije BETWEEN ima opšti oblik: argument1 [NOT] BETWEEN argument2 AND argument3 a rezultat ovog testa je istinit ako se vrijednost za argument1 nalazi (ili ne nalazi – NOT) između vrijednosti argument2 i argument3 uključujući i granice toga intervala. Opcija EXISTS koristi se za provjeru postojanja najmanje jedne n-torke u rezultatu pretraživanja. Po pravilu, koristi se u ugniježdenim upitima. Sintaksa ove naredbe glasi: EXISTS (relacioni izraz). Odgovor je istinit (TRUE), ako relacioni izraz daje barem jednu n-torku kao rezultat, u suprotnom je neistinit (FALSE).
Primjer 1. Prikazati imena zaposlenih koji rade u odjeljenju 10.
SELECT ime FROM RADNIK WHERE brod = 10; U ovom slučaju, kao rezultat upita nećemo dobiti imena svih zaposlenih, već samo onih koji su iz odjeljenja 10, jer smo taj uslov dodali u klauzuli WHERE. Ovisno o tome koliko je zaposlenih u odjeljenju 10, kao rezultat ovog upita može se dobiti: - nula zapisa, ako nema nijedan uposleni u odjeljenju 10, - svi zapisi iz tabele RADNIK, ako su svi uposleni u odjeljenju 10, - između 0 i ukupnog broja zapisa tabele RADNIK, ako su samo neki radnici uposleni u odjeljenju 10.
Primjer 2. Prikazati imena zaposlenih koji rade u odjeljenju 50.
SELECT ime FROM RADNIK WHERE brod = 50; Rezultat ovog upita je prazna tabela, jer ne postoji nijedan zaposleni u odjeljenju 50.
Primjer 3. Prikazati imena zaposlenih koji rade u odjeljenju 70.
SELECT ime FROM RADNIK WHERE brod = 70; Takođe, rezultat je prazna tabela, jer odjeljenje 70 ne postoji.
Primjer 4. Prikazati ime, prezime i platu zaposlenog čiji je identifikacioni broj
5786. SELECT ime, prezime, plata FROM RADNIK WHERE idbr = 5786; Rezultat ovog upita je jedan zapis jer postoji zaposleni datog id broja i ne može se kao rezultat dobiti više od jednog zapisa, jer je atribut idbr primarni ključ u tabeli RADNIK i može postojati samo jedan zaposleni datog id broja.
Primjer 5. Prikazati ime i platu zaposlenog liji je id broj 5775.
SELECT ime, plata FROM RADNIK WHERE idbr = 5775; Rezultat ovog upita nema nijedan slog, jer ne postoji radnik sa datim id brojem.