Baze podataka. SQL Jezik relacione BP

Σχετικά έγγραφα
DISKRETNA MATEMATIKA - PREDAVANJE 7 - Jovanka Pantović

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET SIGNALI I SISTEMI. Zbirka zadataka

Osnovni primer. (Z, +,,, 0, 1) je komutativan prsten sa jedinicom: množenje je distributivno prema sabiranju

Kontrolni zadatak (Tačka, prava, ravan, diedar, poliedar, ortogonalna projekcija), grupa A

Doc. dr. sc. Markus Schatten. Zbirka rješenih zadataka iz baza podataka

numeričkih deskriptivnih mera.

3.1 Granična vrednost funkcije u tački

Ispitivanje toka i skiciranje grafika funkcija

PARCIJALNI IZVODI I DIFERENCIJALI. Sama definicija parcijalnog izvoda i diferencijala je malo teža, mi se njome ovde nećemo baviti a vi ćete je,

SISTEMI NELINEARNIH JEDNAČINA

Elementi spektralne teorije matrica

ELEKTROTEHNIČKI ODJEL

Pravilo 1. Svaki tip entiteta ER modela postaje relaciona šema sa istim imenom.

MATRICE I DETERMINANTE - formule i zadaci - (Matrice i determinante) 1 / 15

Iskazna logika 3. Matematička logika u računarstvu. novembar 2012

Zavrxni ispit iz Matematiqke analize 1

Računarska grafika. Rasterizacija linije

Osnovne teoreme diferencijalnog računa

XI dvoqas veжbi dr Vladimir Balti. 4. Stabla

III VEŽBA: FURIJEOVI REDOVI

IspitivaƬe funkcija: 1. Oblast definisanosti funkcije (ili domen funkcije) D f

Zadaci sa prethodnih prijemnih ispita iz matematike na Beogradskom univerzitetu

Pismeni ispit iz matematike Riješiti sistem jednačina i diskutovati rješenja sistema u zavisnosti od parametra: ( ) + 1.

PRAVA. Prava je u prostoru određena jednom svojom tačkom i vektorom paralelnim sa tom pravom ( vektor paralelnosti).

Teorijske osnove informatike 1

IZRAČUNAVANJE POKAZATELJA NAČINA RADA NAČINA RADA (ISKORIŠĆENOSTI KAPACITETA, STEPENA OTVORENOSTI RADNIH MESTA I NIVOA ORGANIZOVANOSTI)

IZVODI ZADACI ( IV deo) Rešenje: Najpre ćemo logaritmovati ovu jednakost sa ln ( to beše prirodni logaritam za osnovu e) a zatim ćemo

Svaki red se može jednoznačno odrediti (postoji primarni ključ)

Trigonometrija 2. Adicijske formule. Formule dvostrukog kuta Formule polovičnog kuta Pretvaranje sume(razlike u produkt i obrnuto

1. Pojam fazi skupa. 2. Pojam fazi skupa. 3. Funkcija pripadnosti, osobine i oblici. 4. Funkcija pripadnosti, osobine i oblici

Osnovne karakteristike: Sve se predstavlja relacijama (tabelama) Zasniva se na strogoj matematičkoj teoriji Minimalna redundansa podataka Jednostavno

MATEMATIKA 2. Grupa 1 Rexea zadataka. Prvi pismeni kolokvijum, Dragan ori

18. listopada listopada / 13

4.7. Zadaci Formalizam diferenciranja (teorija na stranama ) 343. Znajući izvod funkcije x arctg x, odrediti izvod funkcije x arcctg x.

Projektovanje informacionih sistema 39

Računarska grafika. Rasterizacija linije

Strukture podataka i algoritmi 1. kolokvij 16. studenog Zadatak 1

IZVODI ZADACI (I deo)

Program testirati pomoću podataka iz sledeće tabele:

RIJEŠENI ZADACI I TEORIJA IZ

Zadaci iz trigonometrije za seminar

M086 LA 1 M106 GRP. Tema: Baza vektorskog prostora. Koordinatni sustav. Norma. CSB nejednakost

Operacije s matricama

2 tg x ctg x 1 = =, cos 2x Zbog četvrtog kvadranta rješenje je: 2 ctg x

radni nerecenzirani materijal za predavanja R(f) = {f(x) x D}

Cauchyjev teorem. Postoji više dokaza ovog teorema, a najjednostvniji je uz pomoć Greenove formule: dxdy. int C i Cauchy Riemannovih uvjeta.

Apsolutno neprekidne raspodele Raspodele apsolutno neprekidnih sluqajnih promenljivih nazivaju se apsolutno neprekidnim raspodelama.

Sistemi veštačke inteligencije primer 1

7 Algebarske jednadžbe

PID: Domen P je glavnoidealski [PID] akko svaki ideal u P je glavni (generisan jednim elementom; oblika ap := {ab b P }, za neko a P ).

Verovatnoća i Statistika I deo Teorija verovatnoće (zadaci) Beleške dr Bobana Marinkovića

Neka su A i B proizvoljni neprazni skupovi. Korespondencija iz skupa A u skup B definiše se kao proizvoljan podskup f Dekartovog proizvoda A B.

2log. se zove numerus (logaritmand), je osnova (baza) log. log. log =

Klasifikacija blizu Kelerovih mnogostrukosti. konstantne holomorfne sekcione krivine. Kelerove. mnogostrukosti. blizu Kelerove.

21. ŠKOLSKO/OPĆINSKO/GRADSKO NATJECANJE IZ GEOGRAFIJE GODINE 8. RAZRED TOČNI ODGOVORI

(P.I.) PRETPOSTAVKA INDUKCIJE - pretpostavimo da tvrdnja vrijedi za n = k.

Riješeni zadaci: Nizovi realnih brojeva

Novi Sad god Broj 1 / 06 Veljko Milković Bulevar cara Lazara 56 Novi Sad. Izveštaj o merenju

I.13. Koliki je napon između neke tačke A čiji je potencijal 5 V i referentne tačke u odnosu na koju se taj potencijal računa?

INTELIGENTNO UPRAVLJANJE

KVADRATNA FUNKCIJA. Kvadratna funkcija je oblika: Kriva u ravni koja predstavlja grafik funkcije y = ax + bx + c. je parabola.

41. Jednačine koje se svode na kvadratne

5. Karakteristične funkcije


Βάσεις Δεδομένων (Databases)

SKUPOVI I SKUPOVNE OPERACIJE

Dijagonalizacija operatora

IZVODI ZADACI (I deo)

APROKSIMACIJA FUNKCIJA

Linearna algebra 2 prvi kolokvij,

4 Numeričko diferenciranje

OM2 V3 Ime i prezime: Index br: I SAVIJANJE SILAMA TANKOZIDNIH ŠTAPOVA

TRIGONOMETRIJSKE FUNKCIJE I I.1.

Pitanja i odgovori za drugi test

INTEGRALNI RAČUN. Teorije, metodike i povijest infinitezimalnih računa. Lucija Mijić 17. veljače 2011.

1 Afina geometrija. 1.1 Afini prostor. Definicija 1.1. Pod afinim prostorom nad poljem K podrazumevamo. A - skup taqaka

Trigonometrijske nejednačine

1 Promjena baze vektora

Skup svih mogućih ishoda datog opita, odnosno skup svih elementarnih događaja se najčešće obeležava sa E. = {,,,... }

Kaskadna kompenzacija SAU

Iskazna logika 1. Matematička logika. Department of Mathematics and Informatics, Faculty of Science, University of Novi Sad, Serbia.

Sume kvadrata. mn = (ax + by) 2 + (ay bx) 2.

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 6: SQL (Συζεύξεις, Εμφώλευση, Ομαδοποίηση) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

radni nerecenzirani materijal za predavanja

Univerzitet u Nišu Građevinsko-arhitektonski fakultet. Informatika2. 4. Ciklična algoritamska struktura 5. Jednodimenzionalno polje.

Algoritmi i strukture podataka - 1.cas

FTN Novi Sad Katedra za motore i vozila. Teorija kretanja drumskih vozila Vučno-dinamičke performanse vozila: MAKSIMALNA BRZINA

SOPSTVENE VREDNOSTI I SOPSTVENI VEKTORI LINEARNOG OPERATORA I KVADRATNE MATRICE

Σύνολα Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Dve karakteristike čine relacioni model još uvek najpopularnijim i najšire primenjivanim:

π π ELEKTROTEHNIČKI ODJEL i) f (x) = x 3 x 2 x + 1, a = 1, b = 1;

1 UPUTSTVO ZA IZRADU GRAFIČKOG RADA IZ MEHANIKE II

Betonske konstrukcije 1 - vežbe 3 - Veliki ekscentricitet -Dodatni primeri

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

8 Funkcije više promenljivih

Uvod u neparametarske testove

Prvi kolokvijum. y 4 dy = 0. Drugi kolokvijum. Treći kolokvijum

Deljivost. 1. Ispitati kada izraz (n 2) 3 + n 3 + (n + 2) 3,n N nije deljiv sa 18.

Pismeni ispit iz matematike GRUPA A 1. Napisati u trigonometrijskom i eksponencijalnom obliku kompleksni broj, zatim naći 4 z.

KOMUTATIVNI I ASOCIJATIVNI GRUPOIDI. NEUTRALNI ELEMENT GRUPOIDA.

Transcript:

Baze podataka SQL Jezik relacione BP

UPIT - SELECT - SQL je jezik veoma visokog nivoa (very-high-level language) Programer izbegava korišćenje komplikovanih manipulacija nad podacima (što je neophodno u jezicima kao što je C++, Java, itd.) Pogodnost SQL-a Upiti su veoma dobro optimizovani Upiti se efikasno izvršavaju

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

Principska šema za postavljanje upita je: SELECT koji atributi FROM iz kojih tabela WHERE uslov nad zapisima date tabele; UPIT - SELECT -

UPIT - SELECT - Tipičan SQL upit: SELECT A1, A2,..., An FROM r1, r2,...rm WHERE P gde su Ai atributi, ri relacije, a P je uslov selekcije (predikat) Navedeni upit je ekvivalentan sledećem upitu relacione algebre π A 1, A2,..., An(σ P (r1 r2... rn)) Rezultat SQL upita je opet relacija

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-Lista se zadaje kao jedan ili više R-Izraza, pored naziva kolone javljaju se i konstante

Prost upit nad jednom tabelom Klauzula FROM ( odakle ), specificira se ImeTabele. To je ime osnovne tabele ili pogleda nad kojim se vrši upit. 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.

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 (tj. kreirano sa CREATE TABLE) Kod upita se obično traži prikaz samo određenih kolona, ili prikaz svih kolona u redosledu koji je drugačije određen. Ovo odgovara operaciji projekcije, ali se ne eliminišu višestruka ponavljanja istih vrednosti

Prost upit nad jednom tabelom Primeri: Upiti sa dobijenim rezultatima Upit za prikaz cele tabele (simbol *) Ogovara restrikciji σ - kada nema uslova P SELECT * FROM Student ; Student BrInd Ime Prezime 1 Marko Marković 2 Petar Petrović 3 Aleksa Perić SELECT BrInd Ime Prezime 1 Marko Marković 2 Petar Petrović 3 Aleksa Perić

Tri iste naredbe! SELECT * FROM Student; SELECT BrInd, Ime, Prezime FROM Student; Prost upit nad jednom tabelom SELECT Student.BrInd, Student.Ime, Student.Prezime FROM Student; Student BrInd Ime Prezime 1 Marko Marković 2 Petar Petrović 3 Aleksa Perić SELECT BrInd Ime Prezime 1 Marko Marković 2 Petar Petrović 3 Aleksa Perić

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ć SELECT BrInd Ime Prezime 1 Aleksa Perić 2 Marko Marković 3 Petar Petrović 28.11.2006. Predavanja 11

Prost upit nad jednom tabelom Upit za prikaz samo jedne kolone iz tabele i bez eliminacije duplikata SELECT Fakultet FROM Student; Odgovara upitu relacione algebre π Fakultet (Student) Student 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 Fakultet PFB FIM FIM FTHM PFB PFB

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ć FIM SELECT 4 Marko Marić FTHM 5 Petar Lazić PFB 6 Jovan Marić PFB 28.11.2006. Predavanja Fakultet PFB FIM FTHM

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ć FIM 4 Marko Marić FTHM 5 Petar Lazić PFB 6 Jovan Marić PFB 28.11.2006. Predavanja SELECT Fakultet FIM FTHM PFB

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ć FIM 4 Marko Marić FTHM 5 Petar Lazić PFB 6 Jovan Marić PFB SELECT 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; Student 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 BrInd Ime Prezime 3 Aleksa Perić 2 Petar Petrović

Prost upit nad jednom tabelom U WHERE klauzuli se mogu koristiti logičke i aritmetičke operacije: SELECT BrInd, Ime, Prezime FROM Student WHERE Fakultet= FIM OR Fakultet= FTHM ORDER BY Ime; Student 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 BrInd Ime Prezime 3 Aleksa Perić 4 Marko Marić 2 Petar Petrović

Prost upit nad jednom tabelom Komanda SELECT može da sadrži aritmetičke izraze koji uključuju operacije, +,,, /, na konstantama ili atributima: SELECT SifP, NazivP, Cena 100 FROM Racun; Racun 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 SifP NazivP Cena 005 P1 180000,00 010 P2 30000,00 020 P3 25000,00 001 P3 110000,00 003 P3 60000,00 011 P1 70000,00

Prost upit nad jednom tabelom Pojedine vrednosti atributa mogu NULL vrednost Predikat IS NULL se koristi za proveru null vrednosti Npr: Naći sve šifre prouzvoda kod kojih je cena NULL SELECT SifP FROM Racun WHERE Cena IS NULL ; Racun SifP NazivP Kolicina Cena 005 P1 1 1800,00 010 P2 6 NULL 020 P3 5 250,00 001 P3 2 1100,00 003 P3 4 NULL 011 P1 3 NULL SELECT SifP 010 003 011

Prost upit nad jednom tabelom sa izvedenim rezultatom Podrazumeva se naredba upita SELECT nad jednom tabelom koja kao rezultat daje jedan red podataka koji su izvedeni iz svih redova tabele, koji zadovoljavaju zadati uslov SELECT lista takvog upita se sastoji iz jednog ili više izraza Zadavanje redosleda redova u rezultatu nema smisla (dobija se samo jedan red)

Prost upit nad jednom tabelom sa svodnim rezultatom Sintaksa za SELECT (prost upit nad jednom T sa svodnim rezultatom) SELECT G-Izrazi FROM ImeTabele [WHERE R-Predikat]; G-Izrazi: najčešće ih čine posebne SQL funkcije (svodne ili agregatne funkcije) Svodne funkcije: SUM (ImeKolone) Nalazi sumu svih ne-null vrednosti zadate kolone AVG (ImeKolone) Nalazi prosečnu vrednost svih ne- NULL vrednosti zadate kolone

Prost upit nad jednom tabelom sa izvedenim rezultatom MIN (ImeKolone) Nalazi minimalnu vrednost svih ne- NULL vrednosti zadate kolone MAX (ImeKolone) Nalazi maksimalnu vrednost svih ne-null vrednosti zadate kolone COUNT(*) Nalazi ukupan broj redova u tabeli COUNT([ALL DISTINCT] ListaKolona) Bez DISTINCT nalazi ukupan broj ne-null vrednosti zadate kombinacije kolona Sa DISTINCT nalazi ukupan broj različitih ne-null vrednosti zadate kombinacije kolona

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ć FIM 4 Marko Marić FTHM 5 Petar Lazić PFB 6 Jovan Marić PFB SELECT 6

Prost upit nad jednom tabelom sa izvedenim rezultatom Student 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 ; 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

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ć FIM 4 Marko Marić FTHM 5 Petar Lazić PFB 6 Jovan Marić PFB SELECT 1

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 P3 2 1100,00 003 P3 4 600,00 011 P1 3 700,00 SELECT 1800+300+250+1100...

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 P3 2 1100,00 003 P3 4 600,00 011 P1 3 700,00 SELECT 250 1800

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) SifP NazivP Kolicina Cena 005 P1 1 1800,00 010 P2 6 300,00 020 P3 5 250,00 001 P3 2 1100,00 SELECT 2500 1250 003 P3 4 600,00 011 P1 3 700,00

Prost upit nad jednom tabelom sa izvedenim rezultatom Rezultat bilo kog aritemitičkog izraza sa NULL je NULL Na primer: 10+NULL daje NULL Agregatne funkcije ignorišu NULL vrednosti (izuzev COUNT(*) Poređenje sa NULL daje unknown Npr: 10<NULL, NULL<>NULL, NULL=NULL

Prost upit nad jednom tabelom sa izvedenim rezultatom Istinosna logika sa unknown: OR: (unknown OR true) = true, (unknown OR false) = unknown (unknown OR unknown) = unknown AND: (true AND unknown) = unknown, (false AND unknown) = false, (unknown AND unknown) = unknown NOT: (NOT unknown) = unknown P is unknown je true ako je predikat P unknown Rezultat predikata komande WHERE se tretira kao false ako je unknown

Prost upit nad jednom tabelom sa izvedenim rezultatom Upit koji nema smisla: SELECT SifC, SUM(Dana) FROM Pozajmica; Ovde je SifC podatak na nivou jednog reda, a SUM(Dana) podatak sveden iz više redova Pozajmica (SifP,SifC,SifK,Dana)

Svodni upit nad jednom tabelom Prethodni primer: Želeo se prikaz sume trajanja pozajmica po šiframa članova. Dopuna: Prikazati samo podatke za članove za koje je npr. trajanje pozajmice >10 Postupak je sledeći: Od tabele Pozajmica formira se međurezultat sa kolonama (SifC i Dana) grupisane po SifC Formira se nova tabela sa jednom vrednošću za SifC i izračunate SUM (Dana) po SifC Prikazati redove koji zadovoljavaju traženi uslov

Svodni upit nad jednom tabelom SifP SifC SifK Dana 1 JJ0 004 5 2 PP0 007 2 3 JJ1 005 6 4 JJ0 008 7 5 PP0 002 4 6 JJ1 009 3 SifC Dana JJ0 5 JJ0 7 PP0 2 PP0 4 JJ1 6 JJ1 3 SifC Dana JJ0 12 PP0 6 JJ1 9 Rezultat JJ0 12 Uslov: SUM(Dana)>10 Potrebno je dodatno precizirati: Po kojim kolonama se vrši grupisanje, i koje svodne funkcije se traže unutar grupe Koji uslov se zadaje za uključenje svodnih redova u rezultat

Svodni upit nad jednom tabelom Sintaksa za SELECT za svodni upit nad jednom tabelom SELECT ListaKolona [ListaFunkcija] FROM ImeTabele [WHERE R-Predikat] GROUP BY ListaKolona HAVING G-Predikat [ORDER BY Element [DESC] {, Element [DESC]} ];

Svodni upit nad jednom tabelom WHERE, zadaje se uslov koji svaki red u tabeli ImeTabele mora da zadovolji GROUP BY, navodi se jedna ili više kolona po kojima se vrši grupisanje Kolone koje se navode ne moraju biti uz SELECT Kolene koje su uz SELECT moraju se naći uz GRUP BY HAVING, formira se uslov koji svaki red formiran svođenjem mora da zadovolji da bi bio uključen u rezultat Mogu da se jave kolone i funkcije koje nisu uz SELECT ORDER BY, mogu se kao Element navoditi samo kolone ili funkcije koje su navedene uz klauzulu SELECT

Svodni upit nad jednom tabelom SifP SifC SifK Dana 1 JJ0 004 5 2 PP0 007 2 3 JJ1 005 6 4 JJ0 008 7 5 PP0 002 4 6 JJ1 009 3 SifC Dana JJ0 5 JJ0 7 PP0 2 PP0 4 JJ1 6 JJ1 3 GROUP BY SifC, Dana SifC Dana JJ0 12 PP0 6 JJ1 9 HEAVING SUM(Dana)>10 Rezultat JJ0 12

Svodni upit nad jednom tabelom Primeri: Upit za prikaz šifara autora i broja naslova koje su napisali SELECT SifA, COUNT(*) AP0 1 FROM Je_Autor JN0 1 GROUP BY SifA ; DM0 2 ZP0 2 AP1 1 IT0 1

Primer Svodni upit nad jednom tabelom BrInd IdPred IdProf Ocena Sala Datum Vreme 100/2007 BP03 MV01 8 200/2007 BP03 MV01 7 100/2007 OOP02 RP00 6 150/2008 BP03 MV01 7 250/2008 OOP02 RP00 8 300/2006 RM03 MV01 7 100/2007 RM03 MV01 9 300/2006 RM03 MV01 8

Svodni upit nad jednom tabelom SELECT BrInd,AVG(Ocena) FROM Ispit GROUP BY BrInd; Ispit BrInd IdPred IdProf Ocena Sala Datum Vreme 100/2007 BP03 MV01 8 200/2007 BP03 MV01 7 100/2007 OOP02 RP00 6 150/2008 BP03 MV01 7 250/2008 OOP02 RP00 8 300/2006 RM03 MV01 7 100/2007 RM03 MV01 9 300/2006 RM03 MV01 8

Svodni upit nad jednom tabelom SELECT IdPred,AVG(Ocena) FROM Ispit GROUP BY IdPred; Ispit BrInd IdPred IdProf Ocena Sala Datum Vreme 100/2007 BP03 MV01 8 200/2007 BP03 MV01 7 100/2007 OOP02 RP00 6 150/2008 BP03 MV01 7 250/2008 OOP02 RP00 8 300/2006 RM03 MV01 7 100/2007 RM03 MV01 9 300/2006 RM03 MV01 8

Svodni upit nad jednom tabelom SELECT IdProf,AVG(Ocena) FROM Ispit GROUP BY IdProf; Ispit BrInd IdPred IdProf Ocena Sala Datum Vreme 100/2007 BP03 MV01 8 200/2007 BP03 MV01 7 100/2007 OOP02 RP00 6 150/2008 BP03 MV01 7 250/2008 OOP02 RP00 8 300/2006 RM03 MV01 7 100/2007 RM03 MV01 9 300/2006 RM03 MV01 8

Svodni upit nad jednom tabelom SELECT IdProf,IdPred,AVG(Ocena) FROM Ispit GROUP BY IdProf, IdPred; Ispit BrInd IdPred IdProf Ocena Sala Datum Vreme 100/2007 BP03 MV01 8 200/2007 BP03 MV01 7 100/2007 OOP02 RP00 6 150/2008 BP03 MV01 7 250/2008 OOP02 RP00 8 300/2006 RM03 MV01 7 100/2007 RM03 MV01 9 300/2006 RM03 MV01 8

Svodni upit nad jednom tabelom SELECT IdProf,IdPred,BrInd,AVG(Ocena) FROM Ispit GROUP BY IdProf, IdPred; Ispit BrInd IdPred IdProf Ocena Sala Datum Vreme 100/2007 BP03 MV01 8 200/2007 BP03 MV01 7 100/2007 OOP02 RP00 6 150/2008 BP03 MV01 7 250/2008 OOP02 RP00 8 300/2006 RM03 MV01 7 100/2007 RM03 MV01 9 300/2006 RM03 MV01 8 neispravno

Dekartov (Kartezijanov) proizvod Neka je zadata relacija r(r) i s(s), pri čemu je R S= Nakon Dekartovog proizvoda p=r s dobija se relacija p(p), gde je P=R S deg(p)=deg(r)+deg(s) card(p)=card(r) card(s)

Student BrInd Ime Prezime 100/2010 Marko Marković 200/2011 Petar Petrović Upis = Student Predmet Dekartov (Kartezijanov) proizvod Predmet Sifra SPRI01 SPRI02 BrInd Ime Prezime Sifra Naziv Naziv Informatika Matematika SPRI03 Engleski jezik 1 100/2010 Marko Marković SPRI01 Informatika 100/2010 Marko Marković SPRI02 Matematika 100/2010 Marko Marković SPRI03 Engleski jezik 1 200/2011 Petar Petrović SPRI01 Informatika 200/2011 Petar Petrović SPRI02 Matematika 200/2011 Petar Petrović SPRI03 Engleski jezik 1 SELECT * FROM Student, Predmet;

Upiti nad više tabela Ako se u SELECT naredbi navedu dve tabele obavezno se dešava Dekartov proizvod SELECT * FROM Student, Predmet; Drugačija sintaksa: SELECT * FROM Student CROSS JOIN Predmet; Dekartov proizvod nad 3 relacije (r1, r2, r3): SELECT * FROM r1 CROSS JOIN r2 CROSS JOIN r3;

θ spajanje Neka je zadata relacija r(r) i s(s), pri čemu je R S= Neka postoji atribut A iz R i atribut B iz S nad kojima je moguće izvršiti A θ B θ je operator poređenja; <,,=,>,

Linija Let Udaljenost AA251 1000 UX112 4000 CC222 11000 Avion Tip Dolet B747 15000 A320 7000 DC9 3000 θ spajanje Mogucnost = Linija >< Avion Dolet Udaljenost Let Udaljenost Tip Dolet AA251 1000 B747 15000 AA251 1000 A320 7000 AA251 1000 DC9 3000 UX112 4000 B747 15000 UX112 4000 A320 7000 CC222 11000 B747 15000

SELECT * FROM Linija, Avion WHERE Dolet Udaljenost; θ spajanje Drugačija sintaksa: SELECT * FROM Linija JOIN Avion ON Dolet Udaljenost; θ spajanje nad 3 relacije (r1, r2, r3): SELECT * FROM r1 JOIN r2 ON JoinCondition JOIN r3 ON Join Condition;

θ spajanje Kako pronaći linije i avione koji na tim linijama mogu leteti, ali samo za one linije na kojima je udaljenost veća od 3000km Dolet Udaljenost SELECT * FROM Linija, Avion WHERE Dolet Udaljenost AND Udaljenost 3000; Drugačija sintaksa: SELECT * FROM Linija JOIN Avion ON Dolet Udaljenost WHERE Udaljenost 3000;

Spoljašnje spajanje Zapis <105/2008, Nikola> neće se pojaviti u rezultatu zato što ne postoji ni jedan zapis koji zadovoljava uslov prirodnog spajanja sa tim zapisom Student BrInd Ime 100/2009 Marko 101/2009 Petar 105/2008 Nikola UpisaniPredmet BrInd Predmet 100/2009 Baze podataka 101/2009 Baze podataka 100/2009 Internet tehnologije Upis = Student >< UpisaniPredmet BrInd Ime Predmet 100/2009 Marko Baze podataka 100/2009 Marko Internet tehnologije 101/2009 Petar Baze podataka

Levo spoljašnje spajanje Svi zapisi relacije Student će se pojaviti u rezultatu Student BrInd Ime 100/2009 Marko 101/2009 Petar 105/2008 Nikola UpisaniPredmet BrIndSt Predmet 100/2009 Baze podataka 101/2009 Baze podataka 100/2009 Internet tehnologije Upis = Student *>< UpisaniPredmet BrInd = BrIndSt BrInd Ime BrIndSt Predmet 100/2009 Marko 100/2009 Baze podataka 100/2009 Marko 100/2009 Internet tehnologije 101/2009 Petar 101/2009 Baze podataka 105/2008 Nikola NULL NULL

Levo spoljašnje spajanje SELECT Student.*, UpisaniPredmet.*, FROM Student LEFT OUTER JOIN UpisaniPredmet ON BrInd = BrIndSt; Student UpisaniPredmet BrInd Ime BrIndSt Predmet 100/2009 Marko 101/2009 Petar 105/2008 Nikola 100/2009 Baze podataka 101/2009 Baze podataka 100/2009 Internet tehnologije Upis = Student >< UpisaniPredmet MatBr = MatBrSt BrInd Ime BrIndSt Predmet 100/2009 Marko 100/2009 Baze podataka 100/2009 Marko 100/2009 Internet tehnologije 101/2009 Petar 101/2009 Baze podataka 105/2008 Nikola NULL NULL

Desno spoljašnje spajanje Svi zapisi relacije ProfesorPredmet će se pojaviti u rezultatu StudentPredmet BrInd Ime Predmet 100/2009 Marko Baze podatka 101/2009 Petar Programiranje ProfesorPredmet IdProf PredmetProf MV Baze podataka DZ Programiranje AJ Baze podataka AJ Internet tehnologije MogucMentor = StudentPredmet >< *ProfesorPredmet Predmet = PredmetProf BrInd Ime Predmet IdProf PredmetProf 100/2009 Marko Baze podataka MV Baze podataka 100/2009 Marko Baze podataka AJ Baze podataka 101/2009 Petar Programiranje DZ Programiranje NULL NULL NULL AJ InternetTehnologije

SELECT StudentPredmet.*, ProfesorPredmet.*, Desno spoljašnje spajanje FROM StudentPredmet RIGHT OUTER JOIN PredmetProf StudentPredmet BrInd Ime Predmet ON Predmet = PredmetProf; 100/2009 Marko Baze podatka 101/2009 Petar Programiranje ProfesorPredmet IdProf MV DZ MogucMentor = StudentPredmet >< *ProfesorPredmet Predmet = PredmetProf AJ AJ PredmetProf BrInd Ime Predmet IdProf PredmetProf Baze podataka Programiranje Baze podataka 100/2009 Marko Baze podataka MV Baze podataka 100/2009 Marko Baze podataka AJ Baze podataka 101/2009 Petar Programiranje DZ Programiranje Internet tehnologije NULL NULL NULL AJ InternetTehnologije

Puno spoljašnje spajanje Svi zapisi iz obe relacije će se pojaviti u rezultatu StudentPredmet BrInd Ime Predmet 100/2009 Marko Baze podatka 101/2009 Petar Programiranje 105/2008 Nikola Zaštita IS ProfesorPredmet IdProf PredmetProf MV Baze podataka DZ Programiranje AJ Baze podataka AJ Internet tehnologije MogucMentor = StudentPredmet * >< *ProfesorPredmet Predmet = PredmetProf Ili SELECT * SELECT StudentPredmet.*, ProfesorPredmet.*, FROM StudentPredmet FULL OUTER JOIN PredmetProf ON Predmet = PredmetProf;

Puno spoljašnje spajanje Svi zapisi iz obe relacije će se pojaviti u rezultatu StudentPredmet BrInd Ime Predmet 100/2009 Marko Baze podatka 101/2009 Petar Programiranje 105/2008 Nikola Zaštita IS ProfesorPredmet IdProf PredmetProf MV Baze podataka DZ Programiranje AJ Baze podataka AJ Internet tehnologije MogucMentor = StudentPredmet * >< *ProfesorPredmet Predmet = PredmetProf BrInd Ime Predmet IdProf PredmetProf 100/2009 Marko Baze podataka MV Baze podataka 100/2009 Marko Baze podataka AJ Baze podataka 101/2009 Petar Programiranje DZ Programiranje NULL NULL NULL AJ InternetTehnologije 105/2008 Nikola Zaštita IS NULL NULL

Upiti nad više tabela Podrazumevaju spajanje tabela po nekom uslovu Iza FROM klauzule SELECT naredbe navodi se više tabela odvojenih zarezima Sintaksa: SELECT * {[ALL DISTINCT] R-Lista} FROM ImeTabele [NadimakTabele] {, } [WHERE R-Predikat] [ORDER BY ImeKolone [DESC] {, ImeKolone [DESC]} ];

Upiti nad više tabela Za kolone koje se nalaze u više tabele obavezno je navođenje ImeTabele.ImeKolone NadimakTabele.ImeKolone R-Predikat- navodi se uslov spajanja u formi uslova jednakosti vrednosti odgovarajućih kolona u tabelama Upit nad više tabela bez uslova spajanja daje kao rezultat Dekartov proizvod tih tabela

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 ;

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;

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

Klauzule WHERE i HAVING Izraz [NOT] BETWEEN Izraz1 AND Izraz2 ispituje da li je (ili nije) vrednost izraza u zadatim granicama. Ekvivalentno bi bilo: [NOT] Izraz>=Izraz1 AND Izraz<=Izraz2 Kolona IS [NOT] NULL ispituje da li je (ili nije) vrednost kolone NULL ZnakovniIzraz [NOT] LIKE ZnakovnaMaska Znakovna vrednost tipa CHARACTER Dva specijalna znaka (džokeri): _ bilo koji znak (može ih biti više), % bilo koji broj znakova

Klauzule WHERE i HAVING Izraz [NOT] IN (Konstanta {, Konstanta}) ispituje da li je (ili nije) vrednost izraza jednaka nekoj od navedenih konstanti (isti tip) Izraz {< <= = <> >= >} ANY (Konstanta {, Konstanta}) ispituje da li je (ili nije) vrednost izraza u navedenom odnosu sa bar jednom konstantom Izraz {< <= = <> >= >} ALL (Konstanta {, Konstanta}) ispituje da li je (ili nije) vrednost izraza u navedenom odnosu sa svim navedenim konstantama (zahteva se isti tip)

Klauzule WHERE i HAVING Primeri upotrebe: Upiti za RBP BIBLIOTEKA sa dobijenim rezultatima Upit koji daje šifre članova i ukupna trajanja pozajmica od 5 do 10 dana: SELECT SifC,SUM(Dana) FROM Pozajmica GROUP BY SifC HAVING SUM(Dana) BETWEEN 5 AND 10; Upit koji daje nazive svih naslova u kojima se nalazi reč jezik SELECT Naziv FROM Naslov WHERE Naziv LIKE %jezik% ;

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 ); Prethodni upit, uz upotrebu ANY forme SELECT SifK FROM Knjiga WHERE SifN ANY ( 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 );

Upiti sa podupitima Podupit (ugnježdeni upit) je SELECT-FROM-WHERE izraz zadat unutar drugog izraza. Definicija podupita: SELECT naredba koja se nalazi u sklopu WHERE i HAVING klauzula Izvršavanje podupita prethodi vrednovanju predikata u datim klauzulama

Upiti sa podupitima Klasifikacija podupita po načinu izvršavanja: Nekorelisani podupit njegovo izvršavanje ne zavisi od izvršavanja spoljnog upita; Izvršava se samo jednom na početku. Korelisani podupit njegovo izvršavanje zavisi od spoljnog upita; Izvršava se za svaki red tabele koju obrađuje spoljni upit Posebna forma prostog predikata: [NOT] EXISTS (R-Upit) Utvrđuje se ishod podupita. Ako R-Upit kao rezultat daje bar jedan red, EXISTS daje vrednost istina. U suprotnom je nije istina.

Upiti sa podupitima Primer 1: Sastaviti upit koji daje podatke o pozajmicama natprosečnog trajanja. 1) Određuje se prosek trajanja svih pozajmica 2) Trajanje svake pozajmice poredimo sa dobijenom srednjom vrednosti SELECT * FROM Pozajmica WHERE Dana > (SELECT AVG (Dana) FROM Pozajmica); Radi se o nekorelisanom podupitu

Upiti sa podupitima Primer 2: Sastaviti upit koji daje imena članova čije je ukupno trajanje pozajmica veće od 10 dana. Za svakog člana iz tabele Clan treba prema njegovoj šifri utvrditi da li je njegovo ukupno trajanje pozajmica iznad 10 SELECT Ime FROM Clan C WHERE 10 < (SELECT SUM (Dana) FROM Pozajmica WHERE SifC=C.SifC); Podupit je korelisan i izvršava se za svakog člana Spoljni SELECT određuje kolonu koja se koristi u podupitu

Upiti sa podupitima Primer 3: Sastaviti upit koji daje imena članova koji drže knjige. Ovo je primer za korišćenje IN forme predikata. Šifre članova koji drže knjige daje nekorelisani podupit SELECT Ime FROM Clan WHERE SifC IN (SELECT SifC FROM Drzi);

Upiti sa podupitima Primer 4: Sastaviti upit koji daje podatke o pozajmicama koje su trajale duže od svih pozajmica člana šifre PP0. Rešenje primenom ALL konstrukcije SELECT * FROM Pozajmica WHERE Dana > ALL (SELECT Dana FROM Pozajmica WHERE SifC= PP0 );

Unija, razlika i presek upita Primena skupovnih operatora na skupove redova koje daju pojedini upiti Upiti koji se kombinuju moraju zadovoljavati uslov unijske kompatibilnosti Definicija klauzula: UNION [ALL] unija dva upita sa eliminacijom identičnih, ako se ne naglasi ALL INTERSECT presek dva upita, ostaju samo oni redovi koji se nalaze u rezultatima oba upita EXCEPT razlika dva upita, od redova upita ispred except klauzule ostaju samo oni koji se ne nalaze u rezultatu upita iza te klauzule (MINUS)

Unija, razlika i presek upita Primer 1: Sastaviti upit koji daje šifre knjiga koje su bile u prometu Članovi ih drže kod sebe ili su ranije pozajmljivane. SELECT SifK FROM Drzi UNION SELECT DISTINCT SifK FROM Pozajmica;

Unija, razlika i presek upita Primer 2: Sastaviti upit koji daje naslove knjiga koje su kod članova, a ranije nisu pozajmljivane SELECT DISTINCT Naziv FROM Naslov N, Knjiga K WHERE N.SifN=K.SifN AND SifK IN (SELECT SifK FROM Drzi EXCEPT SELECT DISTINCT SifK FROM Pozajmica);

Pitanja???