34
Baze Baze podataka podataka Predavanja 1 Uvod u SQL Jezik relacione BP

Baze podataka

  • Upload
    nirav

  • View
    37

  • Download
    1

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

Page 1: Baze podataka

Baze podatakaBaze podataka

Predavanja 1

Uvod u SQL

Jezik relacione BP

Page 2: Baze podataka

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

Page 3: Baze podataka

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

Page 4: Baze podataka

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

Page 5: Baze podataka

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

Page 6: Baze podataka

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

Page 7: Baze podataka

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

Page 8: Baze podataka

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

Page 9: Baze podataka

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

Page 10: Baze podataka

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

Page 11: Baze podataka

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

Page 12: Baze podataka

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

Page 13: Baze podataka

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ć

Page 14: Baze podataka

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

Page 15: Baze podataka

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

Page 16: Baze podataka

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

Page 17: Baze podataka

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ć

Page 18: Baze podataka

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ć

Page 19: Baze podataka

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

Page 20: Baze podataka

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

Page 21: Baze podataka

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

Page 22: Baze podataka

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

Page 23: Baze podataka

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

Page 24: Baze podataka

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

Page 25: Baze podataka

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$;

Page 26: Baze podataka

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;

Page 27: Baze podataka

Upiti nad više tabela

Za kolone koje se nalaze u više tabele obavezno je navođenje ImeTabele.ImeKolone

Predavanja 27

Page 28: Baze podataka

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

Page 29: Baze podataka

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

Page 30: Baze podataka

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

Page 31: Baze podataka

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

Page 32: Baze podataka

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

Page 33: Baze podataka

Upiti sa podupitima (ugnježdeni upiti)

Definicija podupita: SELECT naredba koja se nalazi u sklopu WHERE i HAVING

klauzula

Predavanja 33

Page 34: Baze podataka

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');