Download presentation
Presentation is loading. Please wait.
Published byGervais Wood Modified over 6 years ago
1
Baze podataka Uvod u SQL Jezik relacione BP Predavanja
2
Upiti (Queries) Koriste se za izdvajanje zapisa iz jedne ili više tabela i to po određenom kriterijumu kojim rešavamo neki konkretan problem. Često se koriste kao izvori podataka za obrasce i izveštaje. Bazirani na SQL-u
3
SQL Structured Query Language
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 Predavanja
4
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
5
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
6
SQL - sintaksa - select prezime from osoba where ime = ‘Marko’;
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
7
SQL - sintaksa - SELECT * FROM student WHERE brind ≤ 100;
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
8
UPIT - SELECT - Koje podatke tražimo kao rezultat,
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
9
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
10
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 ne uklanja istovetne redove, DISTINCT – suprotno. Podrazumeva se ALL. R-Lista se zadaje kao jedan ili više R-Izraza, pored naziva kolone javljaju se i konstante Predavanja
11
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
12
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
13
Prost upit nad jednom tabelom
Upit za prikaz cele tabele u željenom redosledu SELECT * FROM Student ORDER BY Ime; Student BrInd Ime Prezime 1 Marko Marković 2 Petar Petrović 3 Aleksa Perić BrInd Ime Prezime 3 Aleksa Perić 1 Marko Marković 2 Petar Petrović SELECT Predavanja
14
Prost upit nad jednom tabelom
Upit za prikaz samo jedne kolone iz tabele i bez eliminacije duplikata SELECT Fakultet FROM Student; Student BrInd Ime Prezime Fakultet 1 Marko Marković PFB 2 Petar Petrović FIM 3 Aleksa Perić 4 Marić FTHM 5 Lazić 6 Jovan Fakultet PFB FIM FTHM SELECT Predavanja
15
Prost upit nad jednom tabelom
Upit za prikaz samo jedne kolone iz tabele i sa eliminacijom duplikata : SELECT DISTINCT Fakultet FROM Student ; Student BrInd Ime Prezime Fakultet 1 Marko Marković PFB 2 Petar Petrović FIM 3 Aleksa Perić 4 Marić FTHM 5 Lazić 6 Jovan Fakultet PFB FIM FTHM SELECT Predavanja
16
Prost upit nad jednom tabelom
Upit za prikaz samo jedne kolone iz tabele i sa eliminacijom duplikata , a u željenom redosledu: SELECT DISTINCT Fakultet FROM Student ORDER BY Fakultet ; Student BrInd Ime Prezime Fakultet 1 Marko Marković PFB 2 Petar Petrović FIM 3 Aleksa Perić 4 Marić FTHM 5 Lazić 6 Jovan Fakultet FIM FTHM PFB SELECT Predavanja
17
Prost upit nad jednom tabelom
Upit za prikaz više kolona sa zadavanjem uslova: SELECT BrInd, Ime, Prezime FROM Student WHERE Fakultet=‘FIM’; Student BrInd Ime Prezime Fakultet 1 Marko Marković PFB 2 Petar Petrović FIM 3 Aleksa Perić 4 Marić FTHM 5 Lazić 6 Jovan BrInd Ime Prezime 2 Petar Petrović 3 Aleksa Perić SELECT Predavanja
18
Prost upit nad jednom tabelom
Upit za prikaz dve kolone sa zadavanjem uslova, a u željenom redosledu: SELECT BrInd, Ime, Prezime FROM Student WHERE Fakultet=‘FIM’ ORDER BY Ime; Student BrInd Ime Prezime Fakultet 1 Marko Marković PFB 2 Petar Petrović FIM 3 Aleksa Perić 4 Marić FTHM 5 Lazić 6 Jovan BrInd Ime Prezime 3 Aleksa Perić 2 Petar Petrović SELECT Predavanja
19
Prost upit nad jednom tabelom sa izvedenim rezultatom
Upit za prikaz ukupnog broja studenata (odgovara broju redova u tabeli Student) SELECT COUNT(*) FROM Student ; Student BrInd Ime Prezime Fakultet 1 Marko Marković PFB 2 Petar Petrović FIM 3 Aleksa Perić 4 Marić FTHM 5 Lazić 6 Jovan SELECT 6 Predavanja
20
Prost upit nad jednom tabelom sa izvedenim rezultatom
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 ; Student BrInd Ime Prezime Fakultet 1 Marko Marković PFB 2 Petar Petrović FIM 3 Aleksa Perić 4 Marić FTHM 5 Lazić 6 Jovan SELECT 3 Predavanja
21
Prost upit nad jednom tabelom sa izvedenim rezultatom
Upit za prikaz broja studenata koji su upisali FTHM SELECT COUNT(*) FROM Student WHERE Fakultet=‘FTHM’; Student BrInd Ime Prezime Fakultet 1 Marko Marković PFB 2 Petar Petrović FIM 3 Aleksa Perić 4 Marić FTHM 5 Lazić 6 Jovan SELECT 1 Predavanja
22
Prost upit nad jednom tabelom sa izvedenim rezultatom
Upit za prikaz sume cena svih proizvoda: SELECT SUM(Cena) FROM Racun; Racun SifP NazivP Kolicina Cena 005 P1 1 1800,00 010 P2 6 300,00 020 P3 5 250,00 001 2 1100,00 003 4 600,00 011 3 700,00 SELECT Predavanja
23
Prost upit nad jednom tabelom sa izvedenim rezultatom
Upit za prikaz minimalne i maksimalne cene iz računa: SELECT MIN(Cena), MAX(Cena) FROM Racun; Racun SifP NazivP Kolicina Cena 005 P1 1 1800,00 010 P2 6 300,00 020 P3 5 250,00 001 2 1100,00 003 4 600,00 011 3 700,00 SELECT Predavanja
24
Prost upit nad jednom tabelom sa izvedenim rezultatom
Upit za prikaz sume i proseka cena za proizvod P1: SELECT SUM(Cena), AVG(Cena) FROM Racun WHERE NazivP= ‘P1’; Primedba: rezultat AVG funkcije preuzima tip podataka od argumenta (tip kolone) Racun SifP NazivP Kolicina Cena 005 P1 1 1800,00 010 P2 6 300,00 020 P3 5 250,00 001 2 1100,00 003 4 600,00 011 3 700,00 SELECT Predavanja
25
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$;
26
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 zaposlenih FROM radnik GROUP BY brod$, posao HAVING count(*)>1;
27
Upiti nad više tabela ImeTabele.ImeKolone
Za kolone koje se nalaze u više tabele obavezno je navođenje ImeTabele.ImeKolone Predavanja
28
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
29
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 {<|<=|=|<>|>=|>} Izraz2 ispituje da li su vrednosti navedenih izraza u zadatom odnosu Predavanja
30
Klauzule WHERE i HAVING
Izraz [NOT] BETWEEN Izraz1 AND Izraz2 ispituje da li je (ili nije) vrednost izraza u zadatim granicama. Kolona IS [NOT] NULL ispituje da li je (ili nije) vrednost kolone NULL Dva specijalna znaka (džokeri): ‘?’ bilo koji znak, ‘*’ bilo koji broj znakova Predavanja
31
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
32
Klauzule WHERE i HAVING
Upit koji daje šifre knjiga koje odgovaraju naslovima šifara “RBP0” i “RK00” SELECT SifK FROM Knjiga WHERE SifN IN (‘RBP0’,’RK00’); Upit koji daje šifre naslova za sve knjige osim za one sa šiframa ‘001’, ‘002’, ‘003’ SELECT DISTINCT SifN FROM Knjiga WHERE SifK <> ALL (‘001’,’002’, ‘003’); Predavanja
33
Upiti sa podupitima (ugnježdeni upiti)
Definicija podupita: SELECT naredba koja se nalazi u sklopu WHERE i HAVING klauzula Predavanja
34
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
35
SQL naredbe ažuriranja
Deo SQL jezika kojim se vrši izmena u tabelama čine tri naredbe: INSERT: naredba za unošenje novih redova u tabelu UPDATE: naredba za izmene redova u tabeli DELETE: naredba za uklanjanje redova iz tabele Naredbe ažuriranja se uvek odnose na jednu tabelu Predavanja 35
36
INSERT u koju tabelu ubacujemo, za koje kolone dajemo vrednosti,
Uz ovu naredbu mora se navesti: u koju tabelu ubacujemo, za koje kolone dajemo vrednosti, vrednosti koje ubacujemo. Sintaksa naredbe: INSERT INTO ImeTabele (ListaKolona) VALUES (ListaKonstanti); Ako nije navedena ListaKolona iza ImeTabele ubacuju se vrednosti za sve kolone Predavanja 36
37
UPDATE u kojoj tabeli se vrše izmene,
Uz ovu naredbu mora se navesti: u kojoj tabeli se vrše izmene, za koje kolone u redu menjamo vrednosti, pod kojim uslovima menjamo vrednosti. Sintaksa naredbe UPDATE koja sadrži sve navedene elemente: UPDATE ImeTabele SET atribut1=vrednost1, atribut2=vrednost2, WHERE lista uslova; Predavanja 37
38
DELETE iz koje tabele se vrši uklanjanje,
Uz ovu naredbu mora se navesti: iz koje tabele se vrši uklanjanje, pod kojim uslovima se uklanja neki red. Sintaksa naredbe: DELETE FROM ImeTabele WHERE lista uslova Predavanja 38
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.