Relacioni upitni jezici - University of Belgrade
Transcript of Relacioni upitni jezici - University of Belgrade
![Page 1: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/1.jpg)
Relacioni upitni jezici
•Praktični rezultat formalnih istraživanja RM
•Nadgradnja programskih jezika opšte namene
•Relaciona algebra
•Relacioni račun
•SQL-oliki
• Interaktivni / aplikativni
![Page 2: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/2.jpg)
Structured Query Language - SQL
• IBM istraživačka laboratorija, San Jose:
•SQUARE (1973), SEQUEL (1974), SEQUEL 2
(1976), SQL
•Standardi: 1986, 1989, 1992, 1999, 2003, 2006,
2008, 2011.
•DDL
•DML
•DCL
![Page 3: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/3.jpg)
SQL - standardi
• 1986: tabelarni model podataka, definicija sheme, pogleda i kursora
• 1989: referencijalni integritet i ugnježdenje SQL-a u Ada, C, COBOL, FORTRAN, Pascal i PL/I.
• 1992: spoljašnje spajanje, kaskadno ažuriranje i brisanje, skupovne operacije, definicija domena, novitipovi podataka, itd.
• 1999: regularni izrazi, rekurzivni upiti, trigeri, kontrolne strukture, novi tipovi, OO-svojstva
• 2003: svojstva vezana za XML
• 2006: integracija XML-a i XQuery-a u SQL
• 2008: najveće dopune u delu „Foundations“
• 2011: dalje dopune DML, DDL
![Page 4: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/4.jpg)
Structured Query Language – SQL:
DML•Primer: naslovi romana u izdanju “Prosvete”
SELECT NASLOV
FROM K, I, KI
WHERE OBLAST = ’roman’ AND K.K_SIF =
KI.K_SIF AND NAZIV = ‘Prosveta’ AND
I.I_SIF = KI.I_SIF
![Page 5: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/5.jpg)
SQL – DML
SELECT – pretraživanje
INSERT – unošenje
UPDATE – ažuriranje
DELETE – brisanje
(od standarda 2003):
MERGE – pripajanje
![Page 6: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/6.jpg)
SQL: pretraživanje
Jednostavni upitni blok:
SELECT lista-kolona
FROM ime-tabele
WHERE logički-izraz
![Page 7: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/7.jpg)
SQL: jednostavni upitni blok
SELECT I_SIF, STATUS
FROM I
WHERE DRZAVA = ‘Amerika’
![Page 8: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/8.jpg)
SQL: projekcija
SELECT K_SIF
FROM KI
![Page 9: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/9.jpg)
SQL: projekcija sa eliminacijom
duplikataSELECT DISTINCT K_SIF
FROM KI
![Page 10: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/10.jpg)
SQL: cela tabelaSELECT *
FROM I
isto što i
SELECT I_SIF, NAZIV, STATUS, DRZAVA
FROM I
![Page 11: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/11.jpg)
SQL: skalarni izraz u SELECT liniji
SELECT K_SIF,
I_SIF, IZDANJE,
’Tiraz u
hijadama=’,
TIRAZ/1000
FROM KI
![Page 12: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/12.jpg)
SQL: logički izraz u WHERE liniji
SELECT I_SIF
FROM I
WHERE DRZAVA=‘Srbija’
AND STATUS > 20
![Page 13: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/13.jpg)
SQL: BETWEEN u logičkom izrazu
SELECT I_SIF,
STATUS
FROM I
WHERE STATUS
BETWEEN 15 AND 30
![Page 14: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/14.jpg)
SQL: IN u logičkom izrazu
SELECT I_SIF,
STATUS
FROM I
WHERE STATUS IN
(20, 30)
![Page 15: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/15.jpg)
SQL: LIKE u logičkom izrazu
% 0 ili više
karaktera,
- 1 karakter
SELECT I_SIF, DRZAVA
FROM I
WHERE DRZAVA LIKE
‘%j%’
![Page 16: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/16.jpg)
SQL: IS NULL u logičkom izrazu
SELECT I_SIF, IZDANJE
FROM KI
WHERE K_SIF=‘k1’ AND
TIRAZ IS NOT NULL
![Page 17: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/17.jpg)
SQL: upiti spajanja – primer dve
tabele
SELECT *
FROM I, P
WHERE I.DRZAVA = P.DRZAVA
isto što i
SELECT I.*, P.*
FROM I, P
WHERE I.DRZAVA = P.DRZAVA
![Page 18: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/18.jpg)
SQL: primer upita spajanja - rezultat
![Page 19: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/19.jpg)
SQL: primer upita spajanja - 2
SELECT I.I_SIF, P.P_SIF
FROM I, P
WHERE I.DRZAVA = P.DRZAVA AND I.STATUS > 20
![Page 20: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/20.jpg)
SQL: primer upita spajanja – 2 - rezultat
![Page 21: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/21.jpg)
SQL: spajanje n (n>2) tabela
SELECT DISTINCT I.DRZAVA AS IDRZAVA, P.DRZAVA AS
PDRZAVA
FROM I, KI, KP,P
WHERE I.I_SIF = KI.I_SIF AND KI.K_SIF = KP.K_SIF AND
KP.P_SIF = P.P_SIF
![Page 22: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/22.jpg)
SQL: spajanje tabele sa samom sobom
Naći parove šifara izdavača iz iste države
(Naći parove šifara izdavača i pisaca iz iste države:
SELECT I.I_SIF, P.P_SIF
FROM I, P
WHERE I.DRZAVA = P.DRZAVA)
SELECT PRVI.I_SIF, DRUGI.I_SIF
FROM I PRVI, I DRUGI
WHERE PRVI.DRZAVA = DRUGI.DRZAVA
![Page 23: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/23.jpg)
SQL: spajanje tabele sa samom sobom -
rezultat
![Page 24: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/24.jpg)
SQL: spajanje tabele sa samom sobom –
verzija 2
SELECT PRVI.I_SIF, DRUGI.I_SIF
FROM I PRVI, I DRUGI
WHERE PRVI.DRZAVA = DRUGI.DRZAVA AND
PRVI.I_SIF < DRUGI.I_SIF
![Page 25: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/25.jpg)
SQL: spajanje tabele sa samom sobom –
verzija 2 - rezultat
![Page 26: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/26.jpg)
SQL: podupiti
•Jedno od osnovnih svojstava SQL-a
•Predstavljanje pojedinačne vrednosti – operacija
poređenja
•Predstavljanje skupa vrednosti (EXISTS, IN,
SOME, ANY, ALL)
![Page 27: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/27.jpg)
SQL: podupiti
- operacija poređenja
SELECT I_SIF
FROM I
WHERE DRZAVA=(SELECT DRZAVA
FROM I
WHERE I_SIF = ‘i1’)
![Page 28: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/28.jpg)
SQL: podupiti - IN operator
SELECT I.NAZIV
FROM I
WHERE I.I_SIF IN
(SELECT KI.I_SIF
FROM KI
WHERE KI.K_SIF = ‘k6’
![Page 29: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/29.jpg)
SQL: ekvivalentni upit spajanja
SELECT I.NAZIV
FROM I, KI
WHERE I.I_SIF = KI.I_SIF AND KI.K_SIF = ‘k6’
![Page 30: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/30.jpg)
SQL: podupiti – primer: rezultat
![Page 31: Relacioni upitni jezici - University of Belgrade](https://reader031.fdocuments.net/reader031/viewer/2022012504/617e43f05eee270604143af6/html5/thumbnails/31.jpg)
SQL: podupiti - kvantifikovano poređenje
SELECT NAZIV
FROM I
WHERE I_SIF = SOME
(SELECT I_SIF
FROM KI
WHERE K_SIF = ‘k6’)
• ANY, ALL