You are on page 1of 39

Baze podataka

Uvod u SQL
Jezik relacione BP

Predavanja

Upiti (Queries)
Koriste

se za izdvajanje zapisa iz jedne ili


vie tabela i to po odreenom kriterijumu
kojim reavamo neki konkretan problem.
esto se koriste kao izvori podataka za
obrasce i izvetaje.
Bazirani na SQL-u

SQL
Structured Query Language

Strukturni upitni jezik za RBP


Razvio ga je IBM u okviru projekta System R
Danas je SQL ugraen u sve vodee SUBP
ANSI standard American National Standards Institute
Razvoj SQL-a traje i danas

Predavanja

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 raunu n-torki

Predavanja

SQL

SQL sadri naredbe za:


definisanje relacija (shema)
auriranje podataka (unos, izmena, brisanje)
postavljanje upita
sortiranje i formatiranje ispisa
aritmetike operacije nad podacima
definisanje pogleda (view)
kontrolu sigurnosti
itd....
SQL podrava 3 osnovne funkcije BP: definicije, manipulacije i
kontrolu

Predavanja

SQL
- sintaksa

SQL ne pravi razliku izmeu velikih i malih slova (case insensitive).


Sledee 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 protee
u vie redova */
Za nazive (imena) se ne smeju koristiti rezervisane rei

Predavanja

SQL
- sintaksa

Separator naredbi:
naredba1;
naredba2;
FORMAT naredbi: Sledee naredbe su ispravno napisane

SELECT *
FROM student
WHERE brind 100;
SELECT * FROM student WHERE brind 100;
SELECT *
FROM
student
WHERE
BrInd
100;
Predavanja

UPIT
- SELECT

Najznaajnija i najee koriena SQL naredba za manipulaciju


podacima
Kod svakog upita zadajemo (u principu):

Koje podatke traimo kao rezultat,


Iz kojih tabela to traimo,
Koji uslov treba da zadovolje podaci, da bi bili ukljueni u
rezultat
U kom redosledu elimo prikaz podataka

Predavanja

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 vie izraza odvojenih zarezima
(R-lista)

Predavanja

Prost upit nad jednom


tabelom

Sintaksa
SELECT * {[ALL DISTINCT] R-Lista}
FROM ImeTabele
[WHERE R-Predikat]
[ORDER BY ImeKolone [DESC]
{, ImeKolone [DESC]} ];
* - Specijalni sluaj R-liste, kada u rezultat elimo da ukljuimo sve
kolone tabele
ALL iz rezultata ne uklanja istovetne redove,
DISTINCT suprotno. Podrazumeva se ALL.
R-Lista se zadaje kao jedan ili vie 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 logiki izraz izraunljiv nad svakim pojedinim redom
tabele.
Rezultat upita se dobija samo za one vrednosti R_Predikata
koje daju istinitosnu vrednost.
Najee je to relacioni izraz (>,<,=,) sa kolonama, a sa
desne strane moe se javiti i konstanta
ORDER BY daje eljeni redosled prikaza rezultata. Podrazumeva
se rastui redosled (ASC). U suprotnom se navodi DESC uz
odgovarajuu kolonu. Uvek je poslednja klauzula u SELECT bloku.

Predavanja

11

Prost upit nad jednom


tabelom

Najjednostavniji mogui 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 obino trai prikaz samo odreenih kolona, ili prikaz
svih kolona u redosledu koji je drugaije odreen.

Predavanja

12

Prost upit nad jednom


tabelom

Upit za prikaz cele tabele u eljenom redosledu


SELECT *
FROM Student
ORDER BY Ime;

Student
BrInd

Ime

Prezime

BrInd

Ime

Prezime

Marko

Markovi

Aleksa

Peri

Petar

Petrovi

Marko

Markovi

Aleksa

Peri

Petar

Petrovi

SELECT

Predavanja

13

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

Fakultet

Marko

Markovi

PFB

PFB

Petar

Petrovi

FIM

FIM

Aleksa

Peri

FIM

Marko

Mari

FTHM

FTHM

Petar

Lazi

PFB

PFB

Jovan

Mari

PFB

SELECT

Predavanja

FIM

PFB

14

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

Marko

Markovi

PFB

Petar

Petrovi

FIM

Aleksa

Peri

FIM

Marko

Mari

FTHM

Petar

Lazi

PFB

Jovan

Mari

PFB

Fakultet

SELECT

PFB
FIM
FTHM

Predavanja

15

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

Marko

Markovi

PFB

Petar

Petrovi

FIM

Aleksa

Peri

FIM

Marko

Mari

FTHM

Petar

Lazi

PFB

Jovan

Mari

PFB

Fakultet

SELECT

FIM
FTHM
PFB

Predavanja

16

Prost upit nad jednom


tabelom

Upit za prikaz vie kolona sa zadavanjem uslova:


SELECT BrInd, Ime, Prezime
FROM Student
WHERE Fakultet=FIM;

Student
BrInd

Ime

Prezime

Fakultet

Marko

Markovi

PFB

Petar

Petrovi

FIM

Aleksa

Peri

FIM

Marko

Mari

FTHM

Petar

Lazi

PFB

Jovan

Mari

PFB

28.11.2006.

SELECT

Predavanja

BrInd

Ime

Prezime

Petar

Petrovi

Aleksa

Peri

17

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

Marko

Markovi

PFB

Petar

Petrovi

FIM

Aleksa

Peri

FIM

Marko

Mari

FTHM

Petar

Lazi

PFB

Jovan

Mari

PFB

28.11.2006.

SELECT

Predavanja

BrInd

Ime

Prezime

Aleksa

Peri

Petar

Petrovi

18

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

Marko

Markovi

PFB

Petar

Petrovi

FIM

Aleksa

Peri

FIM

Marko

Mari

FTHM

Petar

Lazi

PFB

Jovan

Mari

PFB

SELECT

Predavanja

19

Prost upit nad jednom


tabelom sa izvedenim
rezultatom
Upit za prikaz broja fakulteta na koje su upisani studenati
(odgovara broju razliitih vrednosti kolone Fakultet u tabeli
Student)
SELECT COUNT(DISTINCT Fakultet)
FROM Student ;

Student
BrInd

Ime

Prezime

Fakultet

Marko

Markovi

PFB

Petar

Petrovi

FIM

Aleksa

Peri

FIM

Marko

Mari

FTHM

Petar

Lazi

PFB

Jovan

Mari

PFB

SELECT

Predavanja

20

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

Marko

Markovi

PFB

Petar

Petrovi

FIM

Aleksa

Peri

FIM

Marko

Mari

FTHM

Petar

Lazi

PFB

Jovan

Mari

PFB

SELECT

Predavanja

21

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

1800,00

010

P2

300,00

020

P3

250,00

001

P3

1100,00

003

P3

600,00

011

P1

700,00

SELECT

Predavanja

1800+300+250+1100 ....

22

Prost upit nad jednom


tabelom sa izvedenim
rezultatom

Upit za prikaz minimalne i maksimalne cene iz rauna:


SELECT MIN(Cena), MAX(Cena)
FROM Racun;

Racun
SifP

NazivP

Kolicina

Cena

005

P1

1800,00

010

P2

300,00

020

P3

250,00

001

P3

1100,00

003

P3

600,00

011

P1

700,00

SELECT

Predavanja

1800

250

23

Prost upit nad jednom


tabelom sa izvedenim
rezultatom

Racun

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

1800,00

010

P2

300,00

020

P3

250,00

001

P3

1100,00

003

P3

600,00

011

P1

700,00

SELECT

Predavanja

2500

1250

24

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)

Prikai koje poslove obavlja vie od 1 radnika unutar svakog


odeljenja:
SELECT brod$, posao, count(*) AS broj zaposlenih
FROM radnik
GROUP BY brod$, posao
HAVING count(*)>1;

Upiti nad vie tabela

Za kolone koje se nalaze u vie tabele obavezno je navoenje

ImeTabele.ImeKolone

Predavanja

27

Upiti nad vie 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

28

Klauzule WHERE i
HAVING

Predikati to su relacioni izrazi, koji se mogu kombinovati


Predikati: prosti i sloeni
Prost predikat: elementarni logiki izraz izraunljiv nad svakim redom
neke tabele
Sloen predikat: formira se od prostih, primenom logikih operatora
AND, OR i NOT
Forme prostih predikata:
Izraz1 {<|<=|=|<>|>=|>} Izraz2
ispituje da li su vrednosti navedenih izraza u zadatom odnosu

Predavanja

29

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 (dokeri):
? 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 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

32

Upiti sa podupitima
(ugnjedeni upiti)

Definicija podupita:

SELECT naredba koja se nalazi u sklopu WHERE i HAVING


klauzula

Predavanja

33

Upiti sa podupitima
(ugnjedeni 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

34

SQL naredbe
auriranja

Deo SQL jezika kojim se vri izmena u tabelama ine tri naredbe:
INSERT: naredba za unoenje novih redova u tabelu
UPDATE: naredba za izmene redova u tabeli
DELETE: naredba za uklanjanje redova iz tabele

Naredbe auriranja 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 vre izmene,


za koje kolone u redu menjamo vrednosti,
pod kojim uslovima menjamo vrednosti.
Sintaksa naredbe UPDATE koja sadri 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 vri uklanjanje,
pod kojim uslovima se uklanja neki red.
Sintaksa naredbe:
DELETE FROM ImeTabele
WHERE lista uslova

Predavanja

38

You might also like