Online kurs: Osnovi relacionih baza podataka. Mašinski fakultet Univerziteta u Nišu. Nedelja 4, resurs 2: Učitavanje podataka iz baze. Upiti nad jednom tabelom. Realizacija: Milan Trifunović. http://160.99.22.125:9000/courses/course-v1:MEF+OKBP+2018-19_S3/about
2. SELECT
Pojednostavljena sintaksa
• SELECT kolone
FROM tabele
[WHERE uslovi]
[GROUP BY grupe
[HAVING uslovi_za_grupe]]
[ORDER BY kolone_za_sortiranje]
[LIMIT broj];
• Veliki broj neobaveznih klauzula (odredbi)
• Redosled navođenja klauzula se mora poštovati
3. Jednostavni upiti
• SELECT * FROM firma;
• Učitavaju se svi podaci iz zadate tabele – Vrednosti
iz svih kolona (*), za sve redove (nije navedena
klauzula WHERE) tabele firma
4. Učitavanje podataka iz određenih
kolona
• Umesto zvezdice mogu se zadati samo nazivi kolona
(razdvojeni zarezima) iz kojih su potrebni podaci
• Samo jedna kolona, nekoliko kolona tabele ili čak
sve kolone tabele poređane željenim redosledom
• SELECT jed_mere, naziv FROM proizvod;
• Učitavaju se samo vrednosti iz kolona jed_mere i
naziv za sve redove tabele proizvod
5. Alijasi
• Kolonama i tabelama u komandi SELECT mogu se
dodeliti drugačiji nazivi, koji će se prikazivati u
rezultatima
• SELECT naziv AS naziv_firme
FROM firma;
• Kolona naziv je preimenovana u naziv_firme, ali
samo u kontekstu ovog upita
6. Upotreba odredbe WHERE za
učitavanje samo određenih redova
• Često je potrebno da se iz jedne ili više tabela
učitaju samo redovi koji ispunjavaju određene
uslove
• SELECT naziv, adresa, telefon
FROM firma
WHERE mesto = 'Niš';
• Učitavaju se samo redovi koji u koloni mesto imaju
vrednost Niš i za iste se prikazuju samo podaci iz
kolona naziv, adresa i telefon
• Za sve firme iz Niša se prikazuju naziv, adresa i
telefon
7. Operatori koji se mogu koristiti u
okviru odredbe WHERE
• Jednakost, =, LIKE (za tekstualne tipove podataka;
džoker karakteri: % (zamenjuje bilo koji broj karaktera),
_ (zamenjuje jedan karakter))
• Nejednakost (različitost), != ili <>, NOT LIKE
• Poređenje, > (veće od), < (manje od), >= (veće ili jednako od) i
<= (manje ili jednako od)
• IS NULL ili IS NOT NULL, ispitivanje da li određena vrednost jeste
ili nije NULL
• Aritmetički operatori (+ - * /), koji se najčešće koriste u
kombinaciji sa operatorima za poređenje
• Standardni logički operatori AND, OR i NOT, koji se koriste za
povezivanje više uslova. Imaju niži prioritet od operatora za
poređenje. Primer: plata > 30000 AND plata < 50000.
• Standardni redosled prioriteta izračunavanja se može menjati uz
pomoć zagrada
8. Primer korišćenja operatora u
okviru odredbe WHERE
• SELECT * FROM faktura
WHERE ulaz_izlaz = '1' AND datum > '2006-10-23';
• Upit prikazuje podatke za sve ulazne fakture koje su
formirane posle 23. oktobra 2006. godine
• U odredbi WHERE nije dozvoljena upotreba alijasa za
kolone
9. Uklanjanje dupliranih vrednosti
• Iz kojih mesta su firme sa kojima se posluje?
• SELECT mesto FROM firma;
• Prikazane su sve vrednosti iz kolone mesto
tabele firma. Podatak Niš se pojavljuje dva puta.
• SELECT DISTINCT mesto FROM firma;
• Duplikati se ne pojavljuju
10. Upotreba odredbe GROUP BY
• Grupisanje učitanih redova
• Korisna samo kada se upotrebi u kombinaciji sa
agregatnim funkcijama: MIN(), MAX(), SUM(),
AVG(), COUNT(), …
• SELECT COUNT(*) AS broj_faktura, id_firme
FROM faktura
GROUP BY id_firme;
• Za svaku firmu se utvrđuje broj faktura
11. Izdvajanje određenih grupa
podataka pomoću opcije HAVING
• GROUP BY + HAVING je slično kao SELECT + WHERE
• SELECT id_fakture, SUM(kolicina * dan_cena) AS iznos
FROM stavke_fakture
GROUP BY id_fakture
HAVING SUM(kolicina * dan_cena) > 10000;
• Upit prikazuje sve fakture čiji je ukupan iznos veći od
10000
12. Sortiranje učitanih rezultata
• ORDER BY – Sortiranje rezultujućih redova po
vrednostima u jednoj ili više kolona
• Redosled sortiranja: rastući (ASC) (podrazumevani) ili
opadajući (DESC)
• SELECT *
FROM firma
ORDER BY mesto ASC, naziv DESC;
• Rezultati će biti sortirani rastuće po vrednostima u
koloni mesto, a ako postoje dve ili više firmi iz istog
mesta njihovi redovi će biti sortirani opadajuće po
nazivu firme
13. Ograničavanje broja redova
rezultata
• Odredba LIMIT
• SELECT *
FROM proizvod
LIMIT 3;
• Prikazuju se prva tri reda
• SELECT *
FROM proizvod
LIMIT 3, 3;
• Učitavaju se tri reda posle posle trećeg reda
(četvrti, peti i šesti red)
• Odredba LIMIT se najčešće koristi u kombinaciji sa
odredbom ORDER BY
14. Vežba
• Prikazati sve ulazne fakture, sortirane rastuće po
datumu. Za svaku fakturu prikazati podatke iz svih
kolona.
• Prikazati sve stavke na fakturama kod kojih je
količina veća od 50 ili cena veća od 150. Za svaku
stavku prikazati podatke iz kolona id_fakture i
id_proizvoda.
• Prikazati naziv i adresu za sve firme iz Beograda.
Rezultate sortirati rastuće po nazivu firme.