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

Baze podataka

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

Baze podatakaBaze podataka

Predavanja 1

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

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