You are on page 1of 10

dr.sc.

O Oliver Juki, v.pred. Ivan n Hei, dipl.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

SQL Structured Query Language


Razvoj SQLa poinje 1974. godine kada se pojavljuje lanak autora D. D. Chamberlaina i R. F. Boycea u kojemu oni opisuju strukturni upitni jezik za pretraivanje podataka nazvan SEQUEL. Godine 1975. Boyce, Chamberlain i M. Hammer predstavljaju koncept jezika SQUARE koji je koristio matematike izraze, za razliku od engleskih termina koje je koristio SEQUEL. Uskoro SQUARE mijenja ime u SEQUEL2 i taj jezik je koriten u razvoju prvog prototipa relacijskog sustava za upravljanje bazama podataka, nazvanog System R razvijenog u laboratorijima IBM a. Kasnije jezik mijenja ime u SQL. Standardni SQL je relacijski potpun jer za svih pet osnovnih relacijskih operator SPAJANJE, RAZLIKA, MNOENJE, RESTRIKCIJA i PROJEKCIJA postoje semantiki ekvivalentne SQL naredbe. SQL je standardiziran od strane ISO International Standardization Organisation i ANSI instituta American National Standards Institute i danas se rabi u veini relacijskih sustava baza podataka. SQL spada u neproceduralne jezike, to znai da korisnik pomou njega definira to eli dobiti, a ne kao e to dobiti. Za razliku od klasinih, tzv. proceduralnih programskih jezika, SQL nema If...Then...Else konstrukciju za ispitivanje uvjeta, niti ima konstrukciju za logiku strukturu petlje Do...While ili For... On sadri konstrukcije sline relacijskoj algebri ili raunu koje su osnove jezika za rukovanje podacima , naredbe opisa baze podataka jezik za opis podataka , naredbe za povezivanje SQLa s nekim standardnim programskim jezikom CURSOR operacije , kao i naredbe za definiranje zatite i integriteta baze podataka, upravljanje konkurentnim obradama i oporavak baze podataka. SQL izraz predstavlja skup odgovarajuih SQL rijei koje zajedno tvore funkcionalnu cjelinu. 2

Kao osnovne osobine SQLa mogu se izdvojiti sljedee:


Neproceduralni jezik Englishlike jezik. Koristi rijei kao to su: select odaberi , insert dodaj , delete obrii kao dio naredbe. U jednom trenutku ee obrauje skup slogova nego jedan slog tablice Mogu ga koristiti korisnici razliitog profila: administratori baze podataka, aplikativni programeri i sami korisnici baze podaka. Osigurava naredbe za razliite zadae ukljuujui : upite nad podacima, dodavanje, mijenjanje i brisanje redaka u tablicama, kreiranje, mijenjanje i brisanje objekata sheme, kontrolu pristupa bazi podataka i objektima sheme, konzistentnost baze podataka.

SQL izrazi mogu se razvrstati u nekoliko skupina :


a b c d e f

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.

DOHVAANJE PODATAKA IZ RELACIJA


Veoma je esta uporaba SQLa za pretraivanje dohvaanje podataka u tablicama. Najee se rabi sljedei oblik, tj. naredba SELECT:

SELECT All/DISTINCT lista atributa FROM lista tablica WHERE uvjet


GROUP BY ime atributa HAVING dodatani uvjet ORDER BY ime atributa redoslijed , ime_atributa redoslijed ...

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.

Dana je relacija Proizvodi:

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

ifra Naziv 121 okolada 122 okolada 768 Ulje

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

Naziv Cijena Kruh 4

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

Rezultat je 4 iz razloga to se proizvod okolada pojavljuje dva puta. 8

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

You might also like