Upload
gabriel-livingston
View
76
Download
0
Embed Size (px)
DESCRIPTION
Baze podataka. Uvod u SQL Jezik relacione BP. 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. - PowerPoint PPT Presentation
Citation preview
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
SQLStructured 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 3
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 4
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 5
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 6
SQL- sintaksa -
Separator naredbi:naredba1;naredba2;
FORMAT naredbi: Sledeće naredbe su ispravno napisane SELECT *
FROM studentWHERE brind ≤ 100;
SELECT * FROM student WHERE brind ≤ 100; SELECT *
FROM studentWHERE
BrInd ≤ 100;
Predavanja 7
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 8
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 9
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 10
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 11
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 12
Prost upit nad jednom
tabelom
Upit za prikaz cele tabele u željenom redosleduSELECT *
FROM StudentORDER BY Ime;
Predavanja 13
BrInd Ime Prezime
1 Marko Marković
2 Petar Petrović
3 Aleksa Perić
Student
SELECT
BrInd Ime Prezime
3 Aleksa Perić
1 Marko Marković
2 Petar Petrović
Prost upit nad jednom
tabelom
Upit za prikaz samo jedne kolone iz tabele i bez eliminacije duplikata SELECT Fakultet
FROM Student;
Predavanja 14
BrInd Ime Prezime Fakultet
1 Marko Marković PFB
2 Petar Petrović FIM
3 Aleksa Perić FIM
4 Marko Marić FTHM
5 Petar Lazić PFB
6 Jovan Marić PFB
Fakultet
PFB
FIM
FIM
FTHM
PFB
PFB
SELECT
Student
Prost upit nad jednom
tabelom Upit za prikaz samo jedne kolone iz tabele i sa eliminacijom
duplikata :SELECT DISTINCT Fakultet
FROM Student ;
Predavanja 15
BrInd Ime Prezime Fakultet
1 Marko Marković PFB
2 Petar Petrović FIM
3 Aleksa Perić FIM
4 Marko Marić FTHM
5 Petar Lazić PFB
6 Jovan Marić PFB
Fakultet
PFB
FIM
FTHM
SELECT
Student
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 ;
Predavanja 16
BrInd Ime Prezime Fakultet
1 Marko Marković PFB
2 Petar Petrović FIM
3 Aleksa Perić FIM
4 Marko Marić FTHM
5 Petar Lazić PFB
6 Jovan Marić PFB
Fakultet
FIM
FTHM
PFB
SELECT
Student
Prost upit nad jednom
tabelom
Upit za prikaz više kolona sa zadavanjem uslova:SELECT BrInd, Ime, Prezime
FROM Student WHERE Fakultet=‘FIM’;
28.11.2006. Predavanja 17
BrInd Ime Prezime Fakultet
1 Marko Marković PFB
2 Petar Petrović FIM
3 Aleksa Perić FIM
4 Marko Marić FTHM
5 Petar Lazić PFB
6 Jovan Marić PFB
SELECT
Student
BrInd Ime Prezime
2 Petar Petrović
3 Aleksa Perić
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;
28.11.2006. Predavanja 18
BrInd Ime Prezime Fakultet
1 Marko Marković PFB
2 Petar Petrović FIM
3 Aleksa Perić FIM
4 Marko Marić FTHM
5 Petar Lazić PFB
6 Jovan Marić PFB
SELECT
Student
BrInd Ime Prezime
3 Aleksa Perić
2 Petar Petrović
Prost upit nad jednom tabelom sa izvedenim rezultatom
Upit za prikaz ukupnog broja studenata (odgovara broju redova u tabeli Student)SELECT COUNT(*)
FROM Student ;
Predavanja 19
BrInd Ime Prezime Fakultet
1 Marko Marković PFB
2 Petar Petrović FIM
3 Aleksa Perić FIM
4 Marko Marić FTHM
5 Petar Lazić PFB
6 Jovan Marić PFB
SELECT 6
Student
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 ;
Predavanja 20
BrInd Ime Prezime Fakultet
1 Marko Marković PFB
2 Petar Petrović FIM
3 Aleksa Perić FIM
4 Marko Marić FTHM
5 Petar Lazić PFB
6 Jovan Marić PFB
SELECT 3
Student
Prost upit nad jednom tabelom sa izvedenim rezultatom
Upit za prikaz broja studenata koji su upisali FTHMSELECT COUNT(*)
FROM Student WHERE Fakultet=‘FTHM’;
Predavanja 21
BrInd Ime Prezime Fakultet
1 Marko Marković PFB
2 Petar Petrović FIM
3 Aleksa Perić FIM
4 Marko Marić FTHM
5 Petar Lazić PFB
6 Jovan Marić PFB
SELECT 1
Student
Prost upit nad jednom tabelom sa izvedenim rezultatom
Upit za prikaz sume cena svih proizvoda:SELECT SUM(Cena)
FROM Racun;
Predavanja 22
SifP NazivP Kolicina Cena
005 P1 1 1800,00
010 P2 6 300,00
020 P3 5 250,00
001 P3 2 1100,00
003 P3 4 600,00
011 P1 3 700,00
SELECT 1800+300+250+1100 ....
Racun
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;
Predavanja 23
SifP NazivP Kolicina Cena
005 P1 1 1800,00
010 P2 6 300,00
020 P3 5 250,00
001 P3 2 1100,00
003 P3 4 600,00
011 P1 3 700,00
SELECT 1800 250
Racun
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)
Predavanja 24
SifP NazivP Kolicina Cena
005 P1 1 1800,00
010 P2 6 300,00
020 P3 5 250,00
001 P3 2 1100,00
003 P3 4 600,00
011 P1 3 700,00
SELECT 2500 1250
Racun
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 27
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 OWHERE N.SifO=O.SifOORDER BY N.Naziv ;
Predavanja 28
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 29
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 30
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 31
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 32
Upiti sa podupitima (ugnježdeni upiti)
Definicija podupita: SELECT naredba koja se nalazi u sklopu WHERE i HAVING
klauzula
Predavanja 33
Upiti sa podupitima (ugnježdeni upiti)
Predavanja34
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');
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
INSERT
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
UPDATE
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
DELETE
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