Professional Documents
Culture Documents
Prrojektira Nje I Ana Aliza Info Ormacijsk Kih Susta Ava: DR - Sc. O Ivan Oliver Jukić, N Heđi, Dipl V.pred. .Ing
Prrojektira Nje I Ana Aliza Info Ormacijsk Kih Susta Ava: DR - Sc. O Ivan Oliver Jukić, N Heđi, Dipl V.pred. .Ing
Pr rojektiranje i ana aliza info ormacijsk kih susta ava Auditorna vjeb ba br. 6 tructured Query Languag ge St 1. dio
UPITNI JEZICI
Jedna od znaajnih osobina zajednika za sve sustave baza podataka jest omoguavanje visoke razine pristupa podacima pohranjenim u bazi podataka, a to se osigurava putem tzv. upitnih jezika ili jezika za pretraivanje. Razvoj upitnih jezika poeo je usporedno s razvojem relacijskog modela podataka. Kada je E. F. Codd 1971. godine postavio koncept relacijskog modela podataka, ustvrdio je da " usvajanje relacijskog modela podataka doputa razvoj univerzalnog jezika podataka zasnovanog na primjeni relacijske algebre". Naime, kako su konstrukcije relacijske algebre i relacijskog rauna za krajnjeg korisnika dosta sloene, ideja je bila izgraditi upitni jezik koji bi bio blizak korisnikovom prirodnom jeziku engl. i koji bi od njega "sakrio" tu sloenost. Najpoznatiji relacijski upitni jezici su: SQL temelji se na kombinacijama relacijske algebre i relacijskog rauna QUEL primjena rauna ntorki QBE primjena rauna domena
izrazi za upravljanje podacima engl. Data Manipulation Language Statements DML , izrazi za definiranje podataka engl. Data Definition Language Statements DDL , izrazi za kontrolu transakcija engl. Transaction Control Statements , izrazi za kontrolu sesije engl. Session Control Statements , izrazi za kontrolu sustava engl. System Control Statements , ugraeni SQL izrazi engl. Embedded SQL Statements .
a DML izrazi se koriste za izvoenje slijedeih akcija nad podacima : brisanje redaka iz tablica ili indeksa naredba: DELETE upisivanje redaka u tablicu ili indeks naredba: INSERT omoguavanje pregleda izvoenja SQL izraza naredba: EXPLAIN PLAN zakljuavanje tablica i pogleda naredba: LOCK TABLE pretraivanje redaka iz tablica ili pogleda naredba: SELECT promjena vrijednosti u stupcima tablica ili pogleda naredba: UPDATE . b DDL izrazi kreiraju, mijenjaju i briu objekte sheme. Omoguavaju sljedee : kreiranje, mijenjanje i brisanje objekata sheme i drugih struktura baze podataka same baze, korisnika nad bazom, tablica.. CREATE, ALTER i DROP naredbe; mijenjanje imena objekata shema naredba: RENAME ; praenje statistike o objektima sheme, validiranje strukture objekata naredba: ANALYSE ; davanje i oduzimanje privilegija i uloga role nad bazom naredbe: GRANT i REVOKE ; ukljuivanje i iskljuivanje kontrole nad bazom naredbe: AUDIT, NOAUDIT ; dodavanje komentara u rjenik podataka. c Izrazi za kontrolu transakcije upravljaju promjenama uzrokovanim DML izrazima. Oni omoguuju: trajno potvrivanje transakcije naredba: COMMIT , vraanje baze u stanje prije izvoenja transakcije naredba: ROLLBACK , definiranje toke od koje se moe povratiti stanje baze naredba: SAVEPOINT , definiranje svojstva transakcije naredba: SET TRANSACTION . 3
d Izrazi za kontrolu sesija omoguuju upravljanje svojstvima sesije odreenog korisnika: mijenjanje vaee sesije izvoenjem odreene naredbe naredba: ALTER SESSION aktiviranje i deaktiviranje uloga za vaeu sesiju naredba: SET ROLE . e Izrazi za kontrolu sustava mijenjaju svojstva instance baze podataka. Jedina naredba je ALTER SYSTEM a omoguuje mijenjanje minimalnog broja dijeljenih servera i deaktiviranje sesije. f Ugraeni SQL izrazi spajaju DDL, DML i izraze za kontrolu transakcija u proceduralni program. Oni se koriste sa preprevodiocima precompilers baze podataka, a omoguavaju: definiranje, alociranje i otputanje kursora Kursori su drai ili imena podruja u memoriji u kojima se dre rastavljeni izrazi i ostale informacije za procesiranje izraza naredbe: DECLARE CURSOR, OPEN, CLOSE deklariranje imena baze podataka i spajanje na istu naredbe: DECLARE DATABASE, CONNECT dodjeljivanje imena varijablama, specificiranje dogaaja i pogreaka naredbe: DECLARE STATEMENT, DESCRIBE, WHENEVER rastavljanje i izvoenje SQL izraza, pretraivanje podataka iz baze naredbe: PREPARE, EXECUTE, EXECUTE IMMEDIATE, FETCH.
gdje je: lista atributa stupci atributi tablica relacija koji se ele prikazati u rezultatu. Vidljivo je da SELECT odgovara operaciji projekcije u relacijskoj algebri. lista tablica tablice relacije koje se rabe u pretraivanju, pa je FROM ekvivalentan
operaciji Kartezijeva proizvoda u relacijskoj algebri. uvjet predikat koji zadovoljavaju selektirane ntorke u rezultatu, pa je WHERE ekvivalentan operaciji selekcije u relacijskoj algebri.
Proizvodi
ifra Naziv Jedinica_mjere Koliina Cijena 342 Kruh Komad 32 4 Litra 452 6 456 Pivo 45 10 122 okolada Komad 121 okolada Komad 523 7 Litra 34 8 768 Ulje Uporabom naredbe SELECT prikazati nazive proizvoda koji se nalaze na skladitu. SELECT Naziv FROM Proizvodi
To je jednostavan upit koji ne rabi parametar WHERE parametar operacije selekcije u relacijskoj algebri pa je rezultat tog upita projekcija relacije Proizvodi na atribut Naziv Naziv je ime atributa koji oznauje naziv proizvoda . Rezultat je:
Proizvodi
Naziv okolada okolada Kruh Pivo Ulje
Rezultat nije prava projekcija jer postoje ntorke koje se ponavljaju. Ako se eli prava projekcija, onda upit treba imati slijedei oblik: SELECT DISTINCT Naziv FROM Proizvodi
Rezultat je:
Proizvodi
Naziv okolada Kruh Pivo Ulje 5
Prava projekcija je restriktivna jer smanjuje broj redaka. Rezultat upita je relacija jer su eliminirana ponavljanja istih ntorki. Njezina uporaba se preporua samo ako je to nuno. Prikazati ifre proizvoda i nazive proizvoda ija je cijena vea ili jednaka 5, a koliina vea od 30 jedinica. SELECT ifra, Naziv FROM Proizvodi 5 AND Koliina 30 WHERE Cijena Rezultat je:
Proizvodi
ifra Naziv 456 Pivo 122 okolada 121 okolada 768 Ulje
Prikazati nazive proizvoda koji poinju slovom u SELECT Naziv FROM Proizvodi WHERE Naziv LIKE 'u*' Rezultat je:
Proizvodi
Naziv Ulje
Ako se ele prikazati svi atributi relacije tablice , tada se ne moraju navoditi. Moe se jednostavno napisati SELECT *. Veoma je korisno uz ime atributa navesti i ime relacije, tablice zapisati atribut u obliku: ime_relacije.ime_atributa kojoj pripada jer je mogue postojanje istih imena atributa u vie relacija. Npr. relacija Dobavljaci sadri atribut Naziv, a i relacija Proizvodi sadri atribut s istim imenom Naziv. Zato je dobro u nazivu atributa pisati i ime relacije, tj. Dobavljaci.Naziv, odnosno Proizvodi.Naziv. Ako se eli odrediti redoslijed ntorki u relaciji rezultata, rabi se klauzula ORDER BY ime atributa redoslijed , ime_atributa redoslijed ... Redoslijed moe biti uzlazno navoenjem naredbe ASC ili silazno navoenjem naredbe DESC .
Primjer: Prikazati ifre proizvoda i nazive proizvoda ija je cijena vea ili jednaka 7, a kupljena koliina vea od 30 jedinica po rastuem redoslijedu ifre proizvoda.
SELECT ifra, Naziv FROM Proizvodi WHERE Cijena 7 AND Koliina 30 ORDER BY ifra ASC Rezultat je:
Proizvodi
AGREGATNE FUNKCIJE Agregatne funkcije se koriste za sumiranje podataka iz relacija: SUM, AVG, MIN, MAX, COUNT. SUM funkcija izraunava ukupnu vrijednosti pojedinih atributa. Prikazati ukupan broj proizvoda iz relacije Proizvodi SELECT SUM Koliina AS Ukupno FROM Proizvodi Rezultat je: Proizvodi Ukupno 1086
AVG funkcija izraunava zbrajanje vrijednosti pojedinih atributa. Prikazati srednju vrijednost cijene iz relacije Proizvodi SELECT AVG Cijena AS Srednja_cijena FROM Proizvodi Rezultat je:
Proizvodi
Srednja_cijena 7
MIN funkcija pronalazi najmanju vrijednosti pojedinih atributa. Prikazati naziv i cijenu proizvoda koji ima najmanju cijenu iz relacije Proizvodi SELECT Naziv, Cijena FROM Proizvodi WHERE Cijena SELECT MIN Cijena FROM Proizvodi Rezultat je:
Proizvodi
MAX funkcija pronalazi najveu vrijednosti pojedinih atributa. Prikazati najveu cijenu proizvoda iz relacije Proizvodi SELECT MAX Cijena AS Max_cijena FROM Proizvodi Rezultat je: Proizvodi Max_cijena 10
COUNT funkcija pronalazi ukupan broj ntorki redova u tablici po pojedinom kriteriju. Prikazati ukupno proizvoda na raspolaganju iz relacije Proizvodi SELECT COUNT Naziv AS BrojProizvoda FROM Proizvodi Rezultat je: Proizvodi BrojProizvoda 5
Prikazati ukupno razliitih proizvoda na raspolaganju iz relacije Proizvodi. SELECT COUNT DISTINCT Naziv AS BrojProizvoda FROM Proizvodi Rezultat je:
Proizvodi
BrojProizvoda 4
Prikazati ukupan broj ntorki odnosno redova u relaciji Proizvodi. SELECT COUNT * AS Ntorke FROM Proizvodi Rezultat je:
Proizvodi
Ntorke 5
GRUPIRANJE
Izraz GROUP BY se uglavnom koristi kao kombinacija sa agregatnim funkcijama kako bi se grupirali dobiveni rezultati. Dana je relacija Narudbe: Prikazati ime kupca i ukupnu cijenu po pojedinom kupcu SELECT Kupac, SUM Ukupna_cijena AS Ukupno FROM Narudbe GROUP BY Kupac Rezultat je: Kupac Ukupno Marko 796 Petar 256 Prikazati koliko je ukupno proizvoda narueno te grupirati po proizvodu SELECT Naziv, SUM Koliina AS Ukupno FROM Narudbe GROUP BY Naziv 9
Narudbe
ifra Naziv Koliina Ukupna_cijena Kupac 48 288 Marko 123 Kruh 12 96 Petar 454 Pivo 20 400 Marko 186 okolada 18 160 Petar 174 okolada 221 Ulje 9 108 Marko
Narudbe
Rezultat je:
Narudbe
Naziv Ukupno okolada 38 Kruh 48 Pivo 12 Ulje 9
10