1. deo: urađen je isti zadatak  kao u prethodnoj grupi: ( LINK )

2. deo: Nad tabelom su rađeni primeri u kojima je pokazano sledeće:


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: 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 podaci za sve Ane u tabeli T2:

SELECT * FROM T2
WHERE ime='Ana';

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 T2
WHERE ID=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 T2
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 koji su u tabeli T2 i  iz Kule:

SELECT ime 
FROM T2
WHERE Grad='Kula';


2) 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.


3) Korišćenje WHERE klauzule sa operatorom OR

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

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 sva imena za ID između 1 i 4:
SELECT ime 
FROM T2
WHERE ID 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 ime 
FROM T2
WHERE ime 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 imena svih sa brojem 1 i 3 i 5:
SELECT ime 
FROM T2
WHERE ID IN (1, 3, 5);

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

8) Korišćenje WHERE klauzule sa operatorima poređenja
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 !


i na kraju:

učenici dobijaju jedan po jedan upit (4 ukupno ovaji put, jer je bilo manje vremena na kraju časa) - koliko upita urade kako treba, toliku ocenu dobiju smile


Last modified: Thursday, 29 October 2020, 11:21 AM