340 likes | 548 Views
Baze podataka. Uvod u SQL Jezik relacione BP. SQL S tructured Q uery L anguage. Strukturni upitni jezik za RBP Razvio ga je IBM u okviru projekta System R Danas je SQL ugrađen u sve vodeće SUBP ANSI standard American National Standards Institute Razvoj SQL-a traje i danas. SQL.
E N D
Baze podataka Uvod u SQL Jezik relacione BP Predavanja
SQLStructured Query Language Strukturni upitni jezikza RBP Razvio ga je IBM u okviru projekta System R Danas je SQL ugrađen u sve vodeće SUBP ANSI standardAmerican National Standards Institute Razvoj SQL-a traje i danas Predavanja
SQL • Svaki programski jezik obuhvata podatke i manipulacije nad tim podacima • SQL-jezik: • Objekti manipulacije su relacije • Rezultati manipulacija su relacije • Terminologija: • relacija tabela • n-torka red (vrsta) • Vrednosti u n-torkama za jedan atribut kolona • SQL se zasniva na relacionom računu n-torki Predavanja
SQL • SQL sadrži naredbe za: • definisanje relacija (shema) • ažuriranje podataka (unos, izmena, brisanje) • postavljanje upita • sortiranje i formatiranje ispisa • aritmetičke operacije nad podacima • definisanje pogleda (view) • kontrolu sigurnosti • itd.... • SQL podržava 3 osnovne funkcije BP: definicije, manipulacije i kontrolu Predavanja
SQL- sintaksa - • SQL ne pravi razliku između velikih i malih slova (case insensitive). Sledeće dve naredbe su jednake: • select prezime from osoba where ime = ‘Marko’; • SELECT prezime FROM osoba WHERE ime = ‘Marko’; • Komentari: • -- ovo je komentar • /* ovo je komentar koji se proteže u više redova */ • Za nazive (imena) se ne smeju koristiti rezervisane reči Predavanja
SQL- sintaksa - • Separator naredbi:naredba1;naredba2; • FORMAT naredbi: Sledeće naredbe su ispravno napisane • SELECT * FROM student WHERE brind≤ 100; • SELECT * FROM student WHERE brind≤ 100; • SELECT * FROM student WHERE BrInd ≤ 100; Predavanja
UPIT- SELECT - • Najznačajnija i najčešće korišćena SQL naredba za manipulaciju podacima • Kod svakog upita zadajemo (u principu): • Koje podatke tražimo kao rezultat, • Iz kojih tabela to tražimo, • Koji uslov treba da zadovolje podaci, da bi bili uključeni u rezultat • U kom redosledu želimo prikaz podataka Predavanja
Prost upit nad jednom tabelom Podrazumeva se naredba upita SELECT, nad jednom tabelom Kao rezultat daje niz redova (ili jedan ili nijedan) koji zadovoljavaju eventualno zadati uslov SELECT lista – podrazumeva se specifikacija podataka u rezultatu upita Specifikacija – zadata jednim ili sa više izraza odvojenih zarezima (R-lista) Predavanja
Prost upit nad jednom tabelom Sintaksa SELECT * {[ALL DISTINCT] R-Lista} FROM ImeTabele [WHERE R-Predikat] [ORDER BY ImeKolone [DESC] {, ImeKolone [DESC]} …]; *- Specijalni slučaj R-liste, kada u rezultat želimo da uključimo sve kolone tabele ALL– iz rezultata neuklanja istovetne redove,DISTINCT– suprotno. Podrazumeva se ALL. R-Listase zadaje kao jedan ili više R-Izraza, pored naziva kolone javljaju se i konstante Predavanja
Prost upit nad jednom tabelom • Klauzula FROM (“odakle”), specificira se ImeTabele. To je ime osnovne tabele. Ovo je obavezna klauzula. • R_Predikat , uslov prikazivanja rezultata, • to je logički izraz izračunljiv nad svakim pojedinim redom tabele. • Rezultat upita se dobija samo za one vrednosti R_Predikata koje daju istinitosnu vrednost. • Najčešće je to relacioni izraz (>,<,=,…) sa kolonama,a sa desne strane može se javiti i konstanta • ORDER BY – daje željeni redosled prikaza rezultata. Podrazumeva se rastući redosled (ASC). U suprotnom se navodi DESC uz odgovarajuću kolonu. Uvek je poslednja klauzula u SELECT bloku. Predavanja
Prost upit nad jednom tabelom • Najjednostavniji mogući SQL upit je u formi:SELECT * FROM ImeTabele; • Ova naredba prikazuje sve redove tabele čije je ime navedeno iza FROM klauzule • U svakom redu prikazuju se vrednosti svih kolona, onim redom kako je to zapisano u datoteci • Kod upita se obično traži prikaz samo određenih kolona, ili prikaz svih kolona u redosledu koji je drugačije određen. Predavanja
Prost upit nad jednom tabelom Student SELECT Upit za prikaz cele tabele u željenom redosleduSELECT * FROM StudentORDER BY Ime; Predavanja
Prost upit nad jednom tabelom Student SELECT Upit za prikaz samo jedne kolone iz tabele i bez eliminacije duplikata SELECT FakultetFROM Student; Predavanja
Prost upit nad jednom tabelom Student SELECT Upit za prikaz samo jedne kolone iz tabele i sa eliminacijom duplikata :SELECT DISTINCT FakultetFROM Student; Predavanja
Prost upit nad jednom tabelom Student SELECT Upit za prikaz samo jedne kolone iz tabele i sa eliminacijom duplikata , a u željenom redosledu:SELECT DISTINCT FakultetFROM StudentORDER BY Fakultet ; Predavanja
Prost upit nad jednom tabelom Student SELECT Upit za prikaz više kolona sa zadavanjem uslova:SELECT BrInd, Ime, PrezimeFROM StudentWHERE Fakultet=‘FIM’; Predavanja
Prost upit nad jednom tabelom Student SELECT Upit za prikaz dve kolone sa zadavanjem uslova, a u željenom redosledu:SELECT BrInd, Ime, PrezimeFROM StudentWHERE Fakultet=‘FIM’ ORDER BY Ime; Predavanja
Prost upit nad jednom tabelomsa izvedenim rezultatom Student SELECT 6 Upit za prikaz ukupnog broja studenata (odgovara broju redova u tabeli Student)SELECT COUNT(*)FROM Student ; Predavanja
Prost upit nad jednom tabelomsa izvedenim rezultatom Student SELECT 3 Upit za prikaz broja fakulteta na koje su upisani studenati (odgovara broju različitih vrednosti kolone Fakultet u tabeli Student)SELECT COUNT(DISTINCT Fakultet)FROM Student ; Predavanja
Prost upit nad jednom tabelomsa izvedenim rezultatom Student SELECT 1 Upit za prikaz broja studenata koji su upisali FTHMSELECT COUNT(*)FROM Student WHERE Fakultet=‘FTHM’; Predavanja
Prost upit nad jednom tabelomsa izvedenim rezultatom Racun SELECT 1800+300+250+1100 .... Upit za prikaz sume cena svih proizvoda:SELECT SUM(Cena)FROM Racun; Predavanja
Prost upit nad jednom tabelomsa izvedenim rezultatom Racun SELECT 1800 250 Upit za prikaz minimalnei maksimalnecene iz računa:SELECT MIN(Cena), MAX(Cena)FROM Racun; Predavanja
Prost upit nad jednom tabelomsa izvedenim rezultatom Racun SELECT 2500 1250 • Upit za prikaz sume i proseka cena za proizvod P1:SELECT SUM(Cena), AVG(Cena)FROM RacunWHERE NazivP= ‘P1’; • Primedba: rezultat AVG funkcije preuzima tip podataka od argumenta (tip kolone) Predavanja
Klauzula GROUP BY (grupisanje slogova na osnovu nekog kriterijuma) • Prikazi najmanju,najvecu,srednju platu i broj zaposlenih po odeljenjima:SELECT MIN(plata) AS najmanja, MAX(plata) AS najveca, ROUND(AVG(plata),2) AS srednja, COUNT(*) AS broj, brod$ FROM RADNIK GROUP BY brod$;
Klauzula HAVING (uslovi u okviru grupa) • Prikaži koje poslove obavlja više od 1 radnika unutar svakog odeljenja:SELECT brod$, posao, count(*) AS broj zaposlenihFROM radnik GROUP BY brod$, posao HAVING count(*)>1;
Upiti nad više tabela • Za kolone koje se nalaze u više tabele obavezno je navođenje • ImeTabele.ImeKolone Predavanja
Upiti nad više tabela Primeri: Upit koji daje nazive naslova i nazive njihovih oblasti (spajaju se tabele Naslov i Oblast po uslovu jednakosti kolona SifO)SELECT N.Naziv, O.Naziv FROM Naslov N, Oblast O WHERE N.SifO=O.SifO ORDER BY N.Naziv ; Predavanja
Upiti nad više tabela Upit koji daje šifre i nazive naslova knjiga koje članovi drže kod sebe (spajaju se tabele Drzi, Knjiga i Naslov po dva uslova jednakosti kolona koja se kombinuju sa AND)SELECT DISTINCT N.SifN, Naziv FROM Drzi D, Knjiga K, Naslov N WHERE D.SifK=K.SifK AND K.SifN=N.SifN; Predavanja
Klauzule WHERE i HAVING Predikati – to su relacioni izrazi, koji se mogu kombinovati Predikati: prosti i složeni Prost predikat: elementarni logički izraz izračunljiv nad svakim redom neke tabele Složen predikat: formira se od prostih, primenom logičkih operatora AND, OR i NOT Forme prostih predikata:Izraz1 {<|<=|=|<>|>=|>} Izraz2ispituje da li su vrednosti navedenih izraza u zadatom odnosu Predavanja
Klauzule WHERE i HAVING Izraz [NOT] BETWEEN Izraz1 AND Izraz2ispituje da li je (ili nije) vrednost izraza u zadatim granicama. Kolona IS [NOT] NULLispituje da li je (ili nije) vrednost kolone NULL Dva specijalna znaka (džokeri): ‘?’ bilo koji znak, ‘*’ bilo koji broj znakova Predavanja
Klauzule WHERE i HAVING Upit koji daje nazive svih naslova u kojima se nalazi reč “jezik”SELECT Naziv FROM Naslov WHERE Naziv LIKE *jezik*; Predavanja
Klauzule WHERE i HAVING Upit koji daje šifre knjiga koje odgovaraju naslovima šifara “RBP0” i “RK00”SELECT SifK FROM KnjigaWHERE SifN IN (‘RBP0’,’RK00’); Upit koji daje šifre naslova za sve knjige osim za one sa šiframa ‘001’,‘002’,‘003’SELECT DISTINCT SifN FROM KnjigaWHERE SifK <> ALL (‘001’,’002’, ‘003’); Predavanja
Upiti sa podupitima (ugnježdeni upiti) • Definicija podupita: • SELECT naredba koja se nalazi u sklopu WHERE i HAVING klauzula Predavanja
Upiti sa podupitima (ugnježdeni upiti) Izlistati spisak imena zaposlenih koji rade na Dorcolu. SELECT RADNIK.ime, RADNIK.[brod$] FROM RADNIK WHERE (((RADNIK.[brod$])=(SELECT odeljenje.[brod#] FROM ODELJENJE WHERE mesto='Dorcol'))); Predavanja