39
1 МОDЕLI I BАZЕ PОDАТАKА Uvod u web okruženje SQL Korišteni materijali i reference http://www.hdonweb.com/programiranje/xampp-instalacija-apache-web-servera-za-mysql-i-php http://hr.wikipedia.org/wiki/Apache_%28webserver%29 http://www.portalalfa.com/1/Html/uvod.htm http://php.com.hr/66 http://phptutorial.odlican.net/nestoophpu.php http://www.w3schools.com/sql/sql_intro.asp http://www.elitesecurity.org http://www.darkopetrovic.com/eucenje_tut_phpmyadmin.php http://sistemac.srce.unizg.hr/index.php?id=35&no_cache=1&tx_ttnews[tt_news]=527 http://www.etfos.unios.hr/upload/OBAVIJESTI/obavijesti_strucni/306Predavanja2.pdf http://www2.fsr.ba/internet/pri/pripreme07-PHP.pdf http://alas.matf.bg.ac.rs/~mi06085/zadatak1.html http://poincare.matf.bg.ac.rs/~nenad/rbp/4.Uvod_u_relacione_baze.pdf http://poincare.matf.bg.ac.rs/~nenad/rbp/3.Relaciona_algebra_i_racun.pdf http://poincare.matf.bg.ac.rs/~gordana/FINALE.pdf http://www.gimeko.edu.rs/wp-content/uploads/2011/12/SqlPriru%C4%8Dnik.pdf MySQL 5.6 Reference Manual http://www.gimeko.edu.rs/wp-content/uploads/2011/12/SqlPriru%C4%8Dnik.pdf

МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

1  

МОDЕLI I BАZЕ PОDАТАKА

Uvod u web okruženje SQL

Korišteni materijali i reference http://www.hdonweb.com/programiranje/xampp-instalacija-apache-web-servera-za-mysql-i-php http://hr.wikipedia.org/wiki/Apache_%28webserver%29 http://www.portalalfa.com/1/Html/uvod.htm http://php.com.hr/66 http://phptutorial.odlican.net/nestoophpu.php http://www.w3schools.com/sql/sql_intro.asp http://www.elitesecurity.org http://www.darkopetrovic.com/eucenje_tut_phpmyadmin.php http://sistemac.srce.unizg.hr/index.php?id=35&no_cache=1&tx_ttnews[tt_news]=527 http://www.etfos.unios.hr/upload/OBAVIJESTI/obavijesti_strucni/306Predavanja2.pdf http://www2.fsr.ba/internet/pri/pripreme07-PHP.pdf http://alas.matf.bg.ac.rs/~mi06085/zadatak1.html http://poincare.matf.bg.ac.rs/~nenad/rbp/4.Uvod_u_relacione_baze.pdf http://poincare.matf.bg.ac.rs/~nenad/rbp/3.Relaciona_algebra_i_racun.pdf http://poincare.matf.bg.ac.rs/~gordana/FINALE.pdf http://www.gimeko.edu.rs/wp-content/uploads/2011/12/SqlPriru%C4%8Dnik.pdf MySQL 5.6 Reference Manual http://www.gimeko.edu.rs/wp-content/uploads/2011/12/SqlPriru%C4%8Dnik.pdf

Page 2: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

2  

Uvod:Potrebniprogramiiprogramskookruženje Prije početka izrade dinamičkih web sajtova, odnosno projektovanja baza u web okruženju potrebno je obezbjediti programsko okruženje. Mi ćemo pokušati da se upoznamo sa radom sa MySQL sistemom. Kao preduslov za rad sa MySQL-om potrebno je da se upoznamo sa PHP-om. Za rad u PHP-u poželljno je bar elementarno poznavanje HTML-a, a mi ćemo koristiti MS WebExpresion sa kreiranje okruženje u kome ćemo ugraditi PHP. Da bismo mogli da izradjujemo dinamičke web sajtove neophodno je da imamo instaliran php, podignut web server i istaliranu neku od baza podataka (u našem slučaju koristićemo mySQL). Postoje gotovi web server paketi koji nam omogućavaju da na veoma jednostavan način instaliramo sve što nam je potrebno za nesmetan razvoj php aplikacija na lokalnom računaru. Mi ćemo koristiti u XAMPP integrisanoj formi. OsnovneosobineWebservera Web server je računarski program odgovoran za prihvatanje HTTP (Hypertext Transfer Protocol) zahtjeva od web klijenata, znanih kao web browser-i, i opsluživanje HTTP odgovora sa opcionalnim sadržajem kao što su HTML dokumenti, vezani objekti, slike, itd... Web serverom se naziva i računar na kojem se vrti program opisan gore, ali ćemo u daljnjim razmatranjima pod web serverom podrazumijevati računarski program ili skup programa i usluga.

odnos web servers i database servera

Web serveri razlikuju u detaljima, od programa do programa, ali najvažnija karakteristika je da koriste HTTP protokol. HTTP: svaki web server program prihvata HTTP zahtjeve od klijenta i daje HTTP odgovore. HTTP odgovori se sastoje obično od HTML dokumenata, ali to može biti i bilo koji dokument, slika, itd... Ako se desi greška prilikom opsluživanja zahtjeva web server mora poslati broj i opis greške krajnjem korisniku; U praksi web serveri implementiraju i sljedeće funkcije: -· Autorizacija: zahtjev za korisničkim imenom i lozinkom prije nego se dozvoli pristup dijelu ili cijelom resursu; -Rukovanje sa statičkim ili dinamičkim sadržajima podržavajući jedno ili više interfejsa: SSI, CGI, SCGI, FastCGI, JSP, PHP, ASP, ASP.NET, ServerAPI kao što je NSAPI ili ISAPI, itd... -HTTPS podrška (SSL ili TLS) za sigurnu šifriranu konekciju na port 443 umjesto uobičajenog porta 80; -koriste tzv. princip logiranja (Logging): obično web serveri imaju mogućnost prikupljanja detaljnih informacija o zahtjevima klijenata i odgovorima servera u tzv. log dokumente koji koriste web urednicima za statističke analize

Page 3: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

3  

· Komprimiranje sadržaja (npr. gzip kodiranje) da se smanji veličina odgovora; · Virtualni hosting za opsluživanje mnogo web stranica korištenjem jedne IP adrese; Apache(webserver) Apache je naziv platforme web servera (ali isto tako i programske grupe: team-a open source koji razvija software servera, tipa multi-platform) koji radi na različitim operativnim sistemima UNIX-Linux, Windows. KratkaistorijarazvojaApacheservera Projekt Apache nastaje 1995. godine, a distribucija (termin distribucija koristi se u značenju verzija)ca 1.0 izlazi 1995. U razdoblju samo jedne godine njegova popularnost nadilazi onu NCSA (National Center for Supercomputing Application) odnosno servera iz kojeg proizlazi i sam Apache. 2.0 Apache izlazi za vrijeme konferencije ApacheCon, održane 2000. u Orlandu, Florida. Velika popularnost ovog softwarea je dokaz njegove kvalitete iako spada u open-source, prema istraživanjima Netcrafta 2005., od 75 miliona web stranica, oko 52 miliona koriste Apache web-server Oktobra 2006. godine brojke rastu na 60 milona odnosno (60,32%) ukupno postojećih web stranica. XAMPP Postoje "paketi" softwarea kao sto je Xampp koji se osnivaju na Apache serveru koji objedinjuju aplikacije potrebne za razvoj dinamičnih web stranica razvijenih u PHP programskom jeziku. XAMPP je programski paket koji služi za imitiranje WEBHOST-servera ali na na lokalnom računaru (za podršku PHP programskom jeziku ). Da biste instalirali XAMPP neophodno je da na mreži pronađete instalacioni fajl (potrežite na adresi: http://www.apachefriends.org/en/xampp-windows.html) Mi ćemo instalirati XAMPP na WINDOWS operativnom sistemu. Postoji instalacija i za LINUX.

Nakon downloada pokrenite program. Nakon prokretanja programa pojavljuje se prozor za izbor jezika. Za početak izaberite standardnu procedury (Yes/Next)

Page 4: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

4  

Sljedeći korak je izbor lokacije na kojoj želite da instalirate XAMPP. Izaberite C:\ root direktorijum i kliknite NEXT. Nakon izbora lokacije ostaje da obavimo još neka podešavanja. Tu nam se nudi opcija da XAMPP instaliramo kao servis.

Nakon završene instalacije XAMPP paketa program ce vam ponuditi opciju za otvaranje XAMPP control panela. Izaberite opciju YES.

Čestitamo, uspešno ste instalirali XAMPP. Na sljedećoj slici vidimo da su Apache i MySql instalirani kao servis, što znači da se aktiviraju odmah nakon paljenja vaseg računara.

Page 5: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

5  

TestiranjeXAMPPinstalacije Nakon što ste uspesno instalirali XAMPP možete početi da razvijate php aplikacije na svom računaru. Otvorite web browser (npr. mozzila firefox) i u navigation toolbar unesite adresu http://localhost. Nakon što ste ovo uradili potrebno je da dobijete sljedeći prozor odnosno da pristupite XAMPP web aplikaciji na svom računaru.

Ukoliko ste dobili sličan rezultat znači da je instalacija uspješno obavljena.

Page 6: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

6  

UvoduHTML Da bi nastavili sa radom trebamo znati osnovne HTML-a. Da bi mogli nastaviti sa radom daćemo osakaćeni uvid u HTML okruženje. HTML je programski jezik koji se koristi za kreiranje dokumenata na World Wide Web-u. HTML se koristi za stvaranje hipertekstualnih datoteka (datoteka koje sadržavaju linkove). HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad savladamo osnove HTML-a možemo prijeći na proučavanje nekog naprednijeg korišćenja i dizajniranja u HTML-u. Kada "surfamo" Internetom i naiđemo na neku zanimljivu stranicu , a ne znamo kako je napravljena, njen izvorni HTML kod možemo pogledati ako u liniji menija odaberemo: View / Source (ili View / Page Source). Ovo je najbolji način da naučimo neke nove stvari. Sve što nam je potrebno da bi napravili jednu Web stranice praktično već imamo na računaru. To je prije svega jedan najobičniji tekst editor kao što je Notepad. Umjesto Notepada preporučujem Notepad++. Slijedeća stvar koja nam je neophodna je Web Browser (preporuka IE ili Firefox) Osnovnadeklaracijatipadokumenta <!DOCTYPE> deklaracija na početku html dokumenta omogućava web browseru da prikaže web stranicu ispravno, tj da dokument prepozna kao HTML. U današnjim html dokumentima najčešće se koristi deklaracija: <!DOCTYPE html> odnosno za verziju XHTML 1.0 Transitional: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/ xhtml1/DTD/xhtml1-transitional.dtd"> Napomena: Deklaracija nije obavezna, ali se preporučuje. HTMLkomande HTML komande se pišu u vidu tzv. tag - ova. Jedan tag je u komanda koja govori našem browseru što i kako napraviti tj. na koji način prikazati sadržaj naših stranice. HTML tagovi su "case insensitive" tj. svejedno je da li ih pišemo malim ili velikim slovima. Tagovi se pišu unutar oznaka "<" i ">" (bez znakova navoda) HTML elementi najčešće dolaze u paru, kao <big> i </big>. Prvi element nazivamo početni element, a drugi završni element. Završni element ima isti naziv kao i početni uz razliku što se ispred elementa umeće kosa crta (slash) Tag: <html>. Ovaj tag se nalazi na početku svakog HTML dokumenta i on govori našem browseru da je datoteka koju je upravo počeo učitavati baš HTML dokument i da kao takvog treba i prikazati. Na kraj HTML dokumenta se stavlja završni HTML tag:</html>. Ovaj tag govori browseru da je to kraj našeg HTML dokumenta. Većina tagova ima i početni i završni tag. Završni tag se dobiva dodavanjem znaka "/" i označava mjesto na kojem prestaje djelovanje početnog taga. Postoje i tagovi kod kojih ne moramo stavljati završni tag kao sto je recimo tag <br> koji služi za prelazak u novi red (o ovom tagu ćemo govoriti kasnije u dijelu o formatiranju teksta).

Page 7: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

7  

StrukturaHTMLdokumenta Svaki HTML dokument se sastoji od dva dijela: zaglavlja (head) i tijela (body). Zaglavlje se odvaja tagovima <head> i </head>, a tijelo dokumenta tagovima: <body> i </body>. Sve ono što napišemo u zaglavlju dokumenta neće se prikazati u prozoru browsera već obično služi samo da pruži neke informacije o našoj stranici. Tako ćemo u okviru našeg zaglavlja svakako staviti tagove: <title> i </title> između kojih ćemo staviti naslov naše stranice. To nije naslov koji će se pojaviti u tijelu naše stranice već onaj naslov koji se pojavljuje u naslovnoj liniji browsera. Pogledajmo naslovnu liniju našeg browsera - ispred imena browsera vidjećemo da piše: "Uvod u HTML". To je zato što smo u zaglavlju ovog dokumenta napisli: <title>Uvod u HTML</title> S druge strane sve ono što napišemo između tagova <body> i </body> predstavljat će tijelo našeg dokumenta i pojavit će se kao sadržaj naše web stranice u prozoru browsera (kao što je tekst koji upravo čitamo). Dakle, svaki HTML dokument mora imati slijedeću strukturu: <html> <head> <title>Ovdje stavimo naziv Web stranice</title> </head> <body> Ovdje unesimo sve ono što želimo da se vidi u stranici </body> </html>

kod HTML dokumenta Vizuelna predstava strukture HTML dokumenta KreiranjeHTMLkodakorišćenjemNotepada Sad je vrijeme da napravimo prvu web stranicu. Otvorimo novi dokument u Notepad-u i upišimo gornju strukturu HTML dokumenta u kojem ćemo staviti naslov po želji (npr. naše osobno ime), a između body tagova stavimo neki tekst (npr. "Moj prva Web stranica"): <html> <head> <title>Milan</title> </head> <body> Moj prva Web stranica </body> </html> Sad snimimo ovaj dokument. U File - Save as dijalog prozoru prvo odaberemo folder u kojem ćemo usnimiti naš Web stranicu. U polje File name upišimo ime naše prve stranice, a kao ekstenziju otkucajmo .htm ili .html (npr. "prva.htm"). U padajućoj listi Save as type odaberimo All Files. Stisnite OK i naša prva html stranica je spremna da je otvori u naš web browser. Ako smo sve ispravno napravili u naslovnici našeg web browsera bi trebalo stajati: Milan, a u prozoru browsera bi trebali vidjeti tekst: Moja prva Web stranica. Mi ćemo u daljem radu uglavnom koristiti WebExpresion za kreiranje HTML dijelova koda. Detalji i pravila potrebna za HTML kodovanje nisu predmet našeg interesovanja, ali su nešto što se podrazumjeva. Preporuka je da instališete i naviknete se na okruženje WebExp. , što će vam bitno olakšati rad, ali moguće

Page 8: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

 

je da koristi Kreiranje Gore je objaSad ćemo to

Pokrenemo Exp

U nju upišemtekst

ite i neki dru

HTMLkoda

ašnjeno kakoo objasniti ka

Web

Iz mkao

mo

ugi program (

au MS Web

o se u Notepaao to uraditi

menija File izo prvi mod iz

(Adobe Drea

b Expresion

adu kreira HTu MS Web E

zaberemo HTzaberemo De

Izbo

amweaver), p

TML stranicExpresion.

TML esign i dobije

or modov

pa čak i samo

ca.

emo praznu s

va

o Notepad.

stranicu

Page 9: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

9  

Promjenimo mod i izaberemo Code da vidimo šta smo uradili (šta je za nas uradio Web Exp

Zapamtimo stranicu i prokrenemo je (pogledamo) u našem browseru. Klijentskiiserverskiskriptjezici Jedan od pravaca razvoja bazira se na razvoju specijalizovanih programskih jezika klijentskih skript jezika, koji omogućavaju da se izvorni programski kod umetne u HTML Veb stranice, i zatim interpretira i izvršava u okviru Veb pregledača. Jezici ovog tipa su JavaScript (kasnije standardizovan kao ECMAScript), JScript, Visual Basic Script, . . . Klijentski skriptovi mogu da reaguju na akcije korisnika (pokrete miša, unos sa tastature...) i da na osnovu toga menjaju i prilagodavaju sadržaj Veb stranice u koju su umetnuti. Kako bi ovo moglo da se realizuje, neophodno je da postoji način da se iz skript jezika pristupi elementima stranice i u ovom cilju razvijen je objektni model dokumenta (DOM). DOM omogućava da skriptovi vide Kombinovanje HTML-a, CSS-a sa JavaScript-om korišćenjem DOM-a, ponekad se naziva dinamičkih HTML-om (Dynamic HTML - DHTML). Za razliku od klijentskih skriptova, koji su se u obliku izvršnog ili kompajliranog koda prenosili na klijentsku mašinu i na njoj izvršavali, serverski skriptovi predstavljaju programe koji se izvršavaju na serverskoj mašini i rezultat njihovog rada (najčešće u obliku formirane Veb stranice) se šalje klijentu gde se prikazuje. Za razliku od slučaja klijentskih skriptova kada je klijent morao da bude osposobljen da izvršava preneti program (npr. da pregledač poseduje mogućnost izvršavanja JavaScript koda, da je na klijentu instaliran JRE i slično), da bi klijent mogao da koristi serverske skriptove, potrebno je načešće samo da ima elementarne mogućnosti komuniciranja HTTP protokolom i prikazivanja HTML stranica.

Page 10: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

 

Medutim, onajčešće koapsolutnu dDva su domCGI i modu Principr Korisnički bKako to sveKada korisnnalazi pošalkao što su sŠta se zaprskriptu? Tasadržaj kojiSama PHP osnovi HTMdefiniramo HTML dijelJedan od os(HTML dioWebExpresolakšavaju d Mojaprva Kada instali U Microsof

Primjetite dnaslov stran

ovaj put, servorišćeni jezicdominaciju naminantna načiuli Veb serve

radaPHPa

browseri ne re skupa ondanik u svom plje korisnikulike, zvukovavo događa da web serv se šalje koriskripta mož

ML osnovu uHTML dije

lova treba svsnovnih princo) odredimo ss) pa onda direktan rad

phpstrani

iramo sve što

ft Expression

da je osnovnanice itd.

verska mašinci za pisanje a ovom poljuina za izvrša

era odnosno C

a

razumiju PHa funkciniše?pretraživaču

u tu stranicu vi itd.)

kada neki ker na kojemuisniku (i kojiže imati na ru koju je ubaelove. U svavesti na razumcipa kojim siu nekom Wtaj kod pr

u PHP-u.

ica

o nam je potr

n Web iz men

a struktura H

na mora da buskriptova na

u imao progrvanje skriptoCommon Ga

HP (niti ASP, pozove nek

i ona se učit

korisnik u svu se nalazi ti njegov browrazličite načiačen PHP dioakom slučajumnu mjeru.i možemo ola

WYSIWYG erekopiramo

rebno krećem

nija File bira

HTML dokum

10 

ude u moguća strani serveramski jezik ova od straneateway Interf

, niti CGI,...)

ku HTML strta u browser

vom internetta skripta powser razumijine isprepleto. Moguće jeu skripta mo

akšati rad u editoru (Mau PHP. Ne

mo s izradom

amo New i od

menta već tu

ćnosti da izvera su PHP, Perl. e Veb serverface (CGI) i A

).

ranicu tada w(i to prvo H

t browseru pčne izvršavae). tene PHP i He isto tako daora imati na

PHP-u i kojcromedia Deki "pametn

m stranica.

daberemo PHZa ime dokuDokument ćproba1 u m(to je mapa zavisno kojOvo treba zmjesto u konašeg web sgod radite nnovu mapu U MicrosofView

u: postoje tag

ršava skriptoASP.NET, J

a: Apache mod

web server nTML kod pa

pozove nekuati tu skriptu

HTML dijela je čitava sk

astavak PHP

i se proporučDreamweaver

iji" HTML

HP. umenta predćemo odmahapi servera zappserv/wwu instalaciju

zapamtiti: maoje stavljamoservera. Zbogneki novi prounutar te ma

ft Expression

govi za zagla

ove. U današJSP i Python

duli.

na kojemu sa tek onda os

u PHP (ili Au, a skripta k

love. Mogućkripta u php-

P, a broj izm

čuje je da izgr, Microsoft

editori om

dlažem primjh snimiti i to za objavljivan

ww, ili mapa xu ste odabraliapa www ili o svoje stranig bolje organojekt napravape. n Webu se pr

avlje i tijelo

šnje vrijeme,n. Nekada je

e ta stranicastali sadržaji

ASP ili CGI)kreira HTML

će je imati u-u a u njemu

mjena PHP i

gled stranicet FrontPage-

mogućavaju i

er1.php. u novu mapunje dokumenxampp/htdo). htdocs je ce i to je roonizacije, kad

vite za njega

rebacite u Co

dokumenta,

, e

a i

) L

u u i

e -i

u nata cs,

ot d

ode

,

Page 11: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

 

Najčešći naSvaki PHP Primjera rad

<?phpecho"?>

Snimite strhttp://localhŠta se zaprKad god u bzapravo znaunutar mapenapravili (/pŠta se dogoKad smo msu čisti HTMizvršio, nareAko u svomtraga PHP-Gornji primnavesti i razZa ilustracijecho"<br>OvOvaj put smkažu naredbkako se zadAko bismo tagova i sveTo je moguNaučili smaIsto tako na

Još jedn

ačin rada s PHdio započinjdi, unutar bp "PHP ispis:

ranicu. Pokrhost/proba1/pravo dogodilbrowseru zatači da pokreće AppServ (iproba1/primjdilo na serve

mi u browseruML i nalazeedba echo znm web brow-u, tu je sam

mjer nije jedizličite HTMLju malo ćemovo je link na s

mo unutar nabi echo da tu

daje link HTMbili ekstrem

e elemente stće, no najčeš

ao kako napraučili smo ka

nu ilustraciju

HP-om je take sa oznakomody tagova

moja prva

renite web bprimjer1.phplo? tražite stranicćete stranicu ili mapi htdojer1.php). eru? u zatražili prie se izvan <?nači ispiši, odwseru poglemo čisti HTMini način kaL tagove i njo obogatiti nstranice školearedbe echo uu nije kraj onML-om).

mni u takvoj utranice ispisašće nije baš praviti i kako sako provjeriti

u rada PHP:

mjesto (u

Jez

kav da u postm <?php a zaubacite slijed

stranica";

browser. U p i vaša prva

cu čija adreslokalno sa se

ocs unutar ma

ikaz te strani?php i ?> tadnosno dodajdate HTML

ML. ko se može ihove dodatn

naš prvi primj: <a href=\" hubacili i linknoga šta ona

upotrebi PHPati naredbompraktično. spremiti phpi šta smo to z

unutar body

zičak za izbo

11 

tojeću HTMLavršava sa ozdeću struktur

adresnu trakstranica je p

sa počinje saervera na vaape xampp).

ice, server jeagova poslaoaj HTML dokL kod (desn

koristiti PHne argumente

mjer i unutar http://www.gk. Primjetite a treba ispisa

P-a, tad bismm echo.

p stranicu. zapravo napr

strukture) gd

r Code View

L strukturu uznakom ?>. ru:

ku napišite:red vama!

a http://localhšem računaluOstatak adre

prepoznao do je odmah bkumentu. ni klik > Vie

HP. Unutar ne kako bismotagova <?phimnazijabanjaznakove \ is

ati već da on

mo cijelu stra

ravili uz pom

dje se ubacuj

-a

ubacimo PHP

host (primjetu. Ta adresa ese je putanja

da je riječ o pbrowseru, a o

ew Source)

navodnika nao imali kontrhp i ?> dodatialuka.org \"> spred navodnna treba ispis

anicu mogli

moć lokalno i

e PHP kod

P dijelove.

tite: nema wwodgovara ma do stranice

php stranici, ono unutar t

vidjet ćete

aredbe echo rolu nad izglti slijedeću na link </a>"; nika. Oni namsati navodni

staviti unuta

instaliranog

ww!) to api www

e koju smo

djelove kojitih tagova je

da nema ni

mi možemoedom teksta.aredbu:

m trebaju jerke (sjetite se

ar <?php i ?>

web servera.

i e

i

o .

r e

>

.

Page 12: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

12  

SQL SQL (Structured Query Language) je relacioni upitni jezik (ANSI i ISO standard). Relacije se kreiraju jednom naredbom i odmah su dostupne, što ga čini jednostavnim za korišćenje. Uniforman je jer se svi podaci i rezultati operacija prikazuju u vidu tabele i omogućava interaktivno i klasično programiranje. Sve do verzije SQL:1999 ovaj jezik je bio neproceduralan1, odnosno njime se specificiralo ŠTA, a ne i KAKO nešto treba uraditi. Novije verzije SQL-a imaju mogućnosti proceduralnog jezika, naročoto PL/SQL. Kombinovanjem naredbi jezika treće generacije i SQL-a omogućava, sa jedne strane korišćenje proceduralnih karakteristika jezika treće generacije (sekvenca, selekcija, iteracija, procedura, podprograma), a sa druge strane pristup podacima u bazi podataka pomoću SQL-a Do sada su baze podataka bile korišćene iz programskih jezika “miksanjem” naredbi programskog jezika i upitnog jezika. I mi ćemo koristiti ovaj pristup koristeći MySQL i PHP. IstorijatTvorac SQL-a je Chamberlin, a nastao je u IBM-u 1974. godine, na istom mestu gdje je E. F. Kod 1970 definisao osnovne koncepte relacionog modela podataka. Jezik se u početku zvao SEQUEL (Structured English Query Language) i predstavljao je programski interfejs (API) za System R, prototipski sistem za upravljanje bazom podataka (SUBP) koji se razvijao kao dio istraživačkog projekta pod istim nazivom. Pojava komercijalnih relacionih sistema uvećala je značaj i ubrzala proces standardizacije relacionog upitnog jezika. Prva etapa tog procesa završila se 1986. godine usvajanjem SQL-a kao standardnog relacionog upitnog jezika. Ta prva verzija SQL standarda je poznata pod nazivom SQL-86. Njom su standardizovane osnovne karakteristike SQL-a kao deklarativnog relacionog upitnog jezika. MeÄ‘utim, mnoge bitne karakteristike jezika ostale su nestandardizovane. To je dovelo do revizija standarda, koji je usvojen 1989. godine i kojom su standardizovane karakteristike koje se odnose na očuvanje integriteta baze podataka i povezivanje sa klasičnim programskim jezicima. Ta verzija SQL standarda poznata je pod nazivom SQL-89. 1992. godine usvojena je sljedeća bitna revizija standarda, poznata pod nazivom SQL-92 ili SQL-2, kojom je SQL zaokružen kao programski jezik, a obim standarda uvećan šest puta u odnosu na polaznu verziju. Naredna verzija SQL standarda usvojena je 1999. godine. Iako su početne verzije SQL-a bile prilično jednostavne, bliske korisniku i u velikoj mjeri deklarativne za SQL:1999 se može reći da je kompleksan, proceduralno/deklarativan jezik i da je označio prekretnicu i omogućio masovnu upotrebu SQL-a Postoje različite verzije SQL jezika Iako je SQL je ANSI (American National Standards Institute) standard.. SQL:2003 Standard SQL:2003 se popularno naziva standardom ispravljanja grešaka standarda SQL:1999 (“bugfix release” - revizija standarda SQL:1999), osim u domenu podrške XML-u. Uprkos tome, ovaj standard ima i niz novih rješenja, a glavna su:

• Novi tipovi podataka Uklonjeni su BIT i BIT VARYING tipovi zbog nedostatka podrške u implementacijama, a dodata su tri nova tipa: BIGINT, MULTISET, XML.

• Proširenja SQL-rutina Definisane su funkcije koje proizvode tabele, a mogu da budu zadate nekim ne-SQL jezikom ili SQL izrazom. Na primer, funkcija weather, napisana u C-u ili, funkcija DEPTEMPS realizovana u SQL-u; Novi MERGE iskaz je, pored INSERT, UPDATE, DELETE iskaza, još jedan iskaz ažuriranja u SQL-u.

• OLAP - Online analytic processing (OLAP) se koristi u poslovanju za analizu velikih kolicina podataka da bi se otkrile cinjenice i trendovi koji mogu da uticu na poslovne odluke. Operator CUBE omogucuje agregiranje podataka po više dimenzija (npr.datum, mesto, kategorija) u jednom upitu.

• Operator WINDOW omogucuje primenu agregatnih funkcija na "pokretni prozor" kroz kolekciju podataka. • Multimedija SQL Standard je proširen posebnim ali blisko povezanim standardom ‘‘SQLMultimedia and Application

Packages’’ koji se često naziva SQL/MM. SQL:2006 SQL:2006 je samo dopuna standarda SQL:2003 koja se odnosi na podršku XML-u u bazama podataka. Preciznije, ISO/IEC 9075-14:2006 definiše kako se SQL koristi zajedno sa XML-om. Definiše načine za importovanje i skladištenje XML podataka u SQL bazi podataka, kako se manipuliše njima u bazi podataka i kako se objavljuju (publikuju) XML podaci i konvencionalni SQL podaci u XML obliku. SQL:2006 obezbjeđuje mogućnost integracije (u aplikaciji) SQL koda i XQuery, XML upitnog jezika (W3C), kao i konkurentni pristup "običnim" SQL podacima i XML dokumentima. Trenutno preivlađujuća i važeća je verzija propisana standardima ISO / IEC 9075-1: 2008, koji propisuje minimalne zahtjeve sa dodacima ISO / IEC 9075-2: 2008; ISO / IEC 9075-11: 2008koji propisuju dodatke (ekstenzije).

1 proceduralni program predstavlja niz naredbi programskoga jezika čiji unaprijed utvrđeni slijed opisuje uzastopne korake transformacije ulaznih podataka u tražene rezultate; i odgovara mogićnosti formalzaciije i zapis algoritma  

Page 13: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

 

U SQL su ukfunkcionalnosupravljačkim sDva osnovna (ugrađeni SQ Bez obzira kojglavnih koman Relacion Relaciona aRelaciona arelacija (oRelacioni oUniju, PrjesKasnije su Dodatni opna atribute rpo kolonamMinimalni

ključeni koncept jezika, u SQstrukturama klanačina su dire

QL).

ju verziju i distndi (kao što su

nalgebrai

algebra algebra je f

objekata) smoperatori: Csek, Razliku,dodati oper

peratori: RErelacije A, E

ma. skup opera

pti objektne teQL je uvedenaasičnih programektno (interak

tribuciju SQL-aSELECT, UPD

irelacion

familija algemještenih uodd je origin, (Prirodno) Sratori: Renam

ENAME - proEXTEND - p

tora sadrži:

ehnologije, meha proceduralna

msih jezika. SQLktivno) korišće

a koristil,i svi SDATE, DELETE

niračun

bri sa dobrou relacionojnalno predložSpajanje, Dijme, Semijoinomjena nazivproširuje rela

restrikciju, Re

13 

hanizam trigeranadgradnja S

L-1999 standardenje SQL-a i p

SQL jezici su uE, INSERT, WH

o zasnovanoj bazi podžio 8 operatojeljenje; n, Extend, Suva relacije, Saciju novim a

projekciju, elacioni oper

a, rekurzija i pSQL-a, koju ugd definiše više

povezivanje SQ

uglavnom u sklaHERE) i ponaša

om semantikdataka i zora: Restrikc

ummarize. SEMIJOIN -atributom, SU

proizvod, utori

proceduralna pglavnom čine načina korišćen

QL-a sa klasič

adu s ANSI staaju se na sličan

kom koja seza definisanciju (selekciju

Spajanje relaUMMARIZE

uniju, razliku

proširenja. Da upravljačke st

nja SQL-a. čnim program

andardom, svi in način.

e koristi za nje upita u), Projekcij

acija A i B pE - omoguća

ku.

bi se povećalaruktrure slične

mskim jezicima

imaju sličan set

modeliranjenad njima.

ju, Proizvod,

projektovanoava sabiranje

a e

a

t

e . ,

o e

Page 14: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

 

Osobina darelaciono zAko su u lisSvrha relapodataka, drelacija, defRelacioni rRelacioni rarelacionog mPostoje dvij

• raču• raču

Predikatski vrijednostim Opseg prompripadaju tovrijednosti kNeka je x pkvantifikato

: 'za : 'po

Relacioni rkoje je pred

FORALEXIST

Kvantifikac Relacioni rpripadnosti.Sintaksa ovRANGE OFRETRIEVE[WHERE<u

D

a su i argumzatvorenje. sti navedeni cione algeb

definisnje prfinisanje pravračun ačun je opismodela podaje varijante: un orijentisanun orijentisan

račun: Predma funkcija d

mjenljivih: porkama iz tihkoje pripadajpredikat. Ta

ora: a svaki', ostoji'.

račun torki:dikat tačan. PLL V (p),

TS V (p). cija i rad sa s

račun dome. 

vog računa seF <promenljiE <promenljiuslovni izraz

ijeljenje

menti i rezu

svi atributi rre: pisanje ostora za ažvila zaštite; o

san, neprocedataka za obra

n ka torkaman ka domeni

dikat je istinidaje izraz koj

promjenljivah relacija, prju tim domen

ada se skup

: slobodne i Postoje dva k

lobodnim i v

na: opseg va

e u literaturi piva> IS <tabeiva>.<imeatrz>]

ultat primjen

elacije A tadrelacionih i

žuriranje podosnova za op

duralan jezikadu podataka

a i ma - osnova

itosno vrjednji se naziva p

a torki ima opromjenljiva nima. svih x takav

vezane promkvantifikatora

vezanim pro

aženja promj

prikazuje na ele>

ributa>

14 

ne bilo kog

da je projekciizraza koji dataka, definptimizaciju

k, logički eka i zasnovan j

a za QBE.

nosna funkcipredlog koji

pseg iz skupdomena ima

v da je P ta

mjenljive. Ka:

omenljivim su

mjenljivih su

različite nač

relacionog

ija identitet.se koriste zanisanje praviupita.

kvivalent relje na predika

ija sa argumemože da bud

pa navedeniha opseg iz sk

ačno za x oz

Korišćenjem p

u u skladu sa

domeni a ne

čine

Unija

operatora ta

a definisanjeila integritet

acione algebatskom račun

entima, i kadde tačan ili n

h relacija i dokupa naveden

značava sa {

promjenljivih

a pravilima p

e relacije, mo

a

akođe relacij

e prostora zata, definisanj

bre ako se pnu.

da se argumenetačan.

opuštene vrijenih domena

{x | p(x)} i

h torki traže

predikatskog

oguće je def

je se naziva

a dohvatanjeje izvedenih

posmatra dio

enti zamjene

jednosti kojei dopuštene

postoje dva

e se torke za

računa.!

finisati uslov

a

e h

o

e

e e

a

a

v

Page 15: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

 

ili RANGEVA<promenljiv[WHERE<u Uslov je tačA=x tačno Na primjer, ISPIT {INDEKID_PREDMETima vrijednost Algebra i raSQL ima o Jezik je relamože da se SQL je rela(restrikciju,

3VLlogik Zašto nedo’...datum ro Očigledna jnačin vrši oCodd je prenepoznata, Očigledno algebre na N

• DefBod

AR <promenlva>.<imeatriuslovni izraz

čan ako posto

KS INDEKS(20TA ID_PREDMt tačno akko po

ačun su semasobine i alge

aciono komppredstavi i uaciono komp projekciju, p

ka(troval

ostajuće vriođenja nepozn

je potreba dobrada takvedložio korišvrijednost nij

često postojNULL-e: finisanje opedovi su NUL

ljiva> RANGibuta> z>]

oji torka u re

0110456), META(1001)} stoji torka u isp

antički ekvivebre i račun

pletan ako je u jeziku. pletan jer poproizvod, un

lentnalog

ijednosti? nat...’ ; ’...iz

da se indikavih podatakašćenje 4-valije primjenlji

ji PROBLE

eracije selekcLL, što da rad

GES OVER <

elaciji R takv

pitu koja ima vr

valentni. Nekna.

moćan isto k

ostoje SQL iniju, razliku).

gika)

U svakodnez izborne jed

ator o nedoa. Tako se dlentne logikeiva, vrijedno

MI SA NU

cije: ako ispitdimo?

15 

<tabela>

va da je za sv

rijednost 20110

ki upitni jezic

kao i algebra

izrazi za sva.

evnoj praksidinice XX ne

ostatku vrijedolazi do višee jer postojeost ne postoji

ULL-ama, i

tujemo neku

vaki konkreta

0456 za atribut i

ci su više zas

a, tj. ako bilo

aki od 5 prim

i se često jadostaju poda

ednosti čuvaevalentnih loe dvije vrste i.

to problemi

u osobinu zap

an par poređ

indeks i 1001 za

snovani na al

o koja relacij

mitivnih ope

avlja problemaci...’

a u bazi, i dogika u relaci

nedostajućih

sa proširenj

pisa, kao Bod

đenje

a atribut id_pre

lgebri, a neki

ja predstavlji

eratora relaci

m nedostatk

da se na odionom modeh vrijednost

njem operaci

dovi > 40, i z

edmeta

i na računu -

iva u algebri

ione algebre

ka podataka:

dgovara-jućielu. ti: vrijednost

ija relacione

za neki zapis

-

i

e

:

i

t

e

s

Page 16: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

 

• Defili n

• Dod• Da

ope Najčešći prumjesto uologiku odno Kada nema će se procjeOvo je idejrezultat provSQL pri prnetačno ili n3VL logika

• tačn• neta• nep

Operatori: • I (A• ILI • NE

Ponekad (rjfalse=0, trNOT(x)=1AND(x,y) OR(x,y) = Bazeire Ako ste propodataka. Bazu podataodređene naFizička reprU logičkomBaza podatorganizacijiusluge, posprogramimaRelacione bRelaciona bstandardnogEntitet (Enrazlikujemo Šta je relacEntitet možizmeđu dvaJedan red taKolona u to

finisanje prene? datni problemli da ih uklj

eracije ponaš

ristup prihvaobičajene bosno 3VL log

NULL-a, usenjivati i kao ja za provjervjere uslova imjeni WHEnedefinisanoa: tri vrijednono, ačno i

poznato.

AND), (OR), i (NOT).

eđe) se korisrue=1, unk-x, = min(x,y)max(x,y)

elacioneb

očitali (i dje

aka je zbirkamjere kao štrezentacija b

m smislu bazataka je skupi , i ona sadrlovni partnea u kojima sebaze podatakbaza podatakg (opšteg) relntity) Svaku na osnovu o

cija? žemo definis

a ili više entitabele predstaoj tabeli ili po

sjeke i razlik

mi za SQL: dučimo u račuaju kada je a

aćen i u prakbinarne-Bulogiku.

slovi se procj treća vrijednru uslova u istina.

ERE klauzulo. Test za nulosti:

sti i notacija:known=1/2

,

baze‐osno

elimično shv

ka informacito je pretraži

baze podatakaa podataka sap povezanih rži podatke keri i sl.). Pode obrađuju, aa su danas n

ka se sastoji lacionog mo

realnu činjosobina: Atrib

sati kao objeteta. avlja jednu n-olje (field) od

ke dviju rela

da li tretirati un (suma, sr

argument NU

ksi je korišćove (dvo-vrij

jenjuju kao inost -‘nedefiWHERE kl

e na tabelu ll: IS [NOT]

,

ovniterm

atili) predho

ija koje se oivanje,sortiraa se sastoji oastoji se od v

podataka kkoji se sastojdaci u bazi pa pristup njimajčešće korišod skupa ra

dela baza pojenicu ili pobuta.

ekat o kome ž

-torku ili jeddgovara jedn

16 

acija: jesu li d

NULL-e kaorednja vrijedULL?

enje 'nedostijednosne) lo

istina (true) iinisano’, ili ‘lauzuli SQL

eliminiše svNULL.

iniipojm

odno poglavl

organizovananje i obradaod dviju ili vivećeg broja okoji se nalazje iz različitipodataka slu

ma je kontrolštene baze poazličitih relaodataka. ojavu, bez o

želimo da sa

dnu pojavu renom atributu

dva zapisa <

o duplikate? dnost, ...) i ak

tajuće vrijeogike upotri

ili neistina (fnepoznato’) SELECT-a

ve redove za

movi

lje daćemo j

ne u tabele i a podataka. iše datoteka nobjekata-tabeze u nekom ih objekata nuže za jednuisan. odataka.

acija (tabela)

obzira na su

akupljamo in

elacije, što od(osobini) tip

<Jovan,NULL

ko da, kako?

dnosti' (NUijebiti troval

false), ali ako. : Biće vraće

a koje se izra

oš neke poj

u druge vrs

na disku. ela, indeksa,i

informacionnekog poslov ili više apli

. Tabela odg

uštinu naziv

nformacije, ta

dgovara jednpa entiteta.

L> i <Jovan

? Kako da se

ULL. Za proclentnu (tro-v

o NULL-e po

eni jedino za

az u WHER

jmove za rad

ste objekata

itd. nom sistemuvnog sistemaikacija, i ne

govara pojm

vamo entiteto

ada je relaci

noj pojavi tip

,NULL> isti

e aritmetičke

cjenu uslovavrijednosnu)

ostoje, uslov

apisi gdje je

RE ima izraz

d sa bazama

a zbog tačno

u,tj. u nekoja (npr. raznezavisni su o

mu relacije iz

om. Entitete

ija opis veze

pa entiteta.

i

e

a )

v

e

z

a

o

j e o

z

e

e

Page 17: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

 

Definicija ta(field) okaraKada se deftabelama kopodataka br Baza podatDB se možeTabela (Tapodataka - pSlog (zapis)sa podacimaPolje (FieldPrimjer: u te

RReToADŠeKPr

Primjer koji

Relacija iparelacija ne mtabeli su ure

abele se u krakteriše nizofinišu sve taboje su u vezrine i o integr

taka (Databae sastojati od ble) Grupa s

polja. ) (Record) Jea, u opštem sld) Pojedinačnelefonskom im

Relacioni moelacija orka tribut omen atributema relacije

Kardinalnost rimarni ključ

i ilustruje ek

ak nije isto štmože, redovieđene u redo

rajnjoj liniji om osobina. Nbele na osnovzi. Peciznijeritetu (tačnos

ase DB) Grupsamo jedne taslogova poda

edinstveni zalučaju, različ

ni podatak - stmeniku su četiri

del

ta

č ekviv

kvivalencije i

to i tabela (ni u tabeli su uosljedu slijev

i svodi na toNeke od tih ovu relacione e, naznačavasti) baze pod

pa tabela podabele (najčešataka. Svi sl

apis (vrsta) uitoga tipa. tavka u slogui polja: prezim

Baza podTabela Vrsta (redKolona Tip podatOpis tabebroj torkiatribut (ili

valencija: Re

iz gornje tabe

na kakve smouređeni u red

va udesno, do

17 

o da se definiosobina je nešeme, potreb

a se preko kdataka.

dataka koje sće to nije sluč

logovi su isto

u tabeli koji s

u. me, ime, adresa

dataka

d u tabeli)

tka kolone sele i i kombinacijaelacioni mod

ele

o mi navikli) jdosljedu od vok za relaciju

iše lista fieldeophodno odbno je još us

kojih polja s

sadrže srodnečaj). o organizova

se sastoji od

a i telefonski br

skup važećih v

a atributa) kojadel-Baza pod

jer tabela mvrha ka dnu,u to ne važi.

d-ova jedne tadrediti, neke spostaviti i vsu tabele u v

e podatke.

ane grupe

više polja

roj.

vrijednosti (tip

a jedinstveno dataka

ože da sadrž dok za relac

tabele i da sese mogu i „p

veze (relationvezi, da se

pova)

identifikuje ta

ži duplirane rciju to ne važ

e svako poljepreskočiti". nships) među

unutar baze

abelu

redove dok ži, kolone u

e

u e

Page 18: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

18  

Definiciju baze podataka nazivamo relacionom šemom baze podataka jer se sastoji od naziva relacija i popisa atributa koji ulaze u sastav relacija. Relacija se sastoji od redova i kolona (atributa). Atribut je svojstvo koje koje posjeduje neki entitet. Skup atributa čijim se podacima može identfiikovati svaki red se naziva primarni ključ. Referencijali integritet je odnos između primarnog ključa (npr. kupca) i vanjskog ili stranog ključa (npr. šifra dobavljača).

Praktični primjeri

Zadatak1:IzborrelacijaAko je neophodno projektovati bazu podataka koja se odnosi na preduzeće, prepoznati entitete i njihova svojstva, koje ćete predstaviti relacijama u relacionom modelu, odnosno tabelama u bazi podataka. Rješenje: Pretpostavimo da preduzeće ima više radnika, i za svakog od njih treba čuvati informacije: ime, matični broj, stručna sprema, datum rođenja, pol, plata, adresa. Neka je preduzeće organizovano u sektore (sektor ima naziv, broj). Podaci o radnicima preduzeća se mogu predstavljaju relacijom/tabelom RADNIK sa atributima LIME (lično ime), SSL (srednje slovo), PREZIME, MBR (matični broj), DATRODJ (datum rođenja), POL, PLATA i ADRESA. Niže je prikazana jedna instanca relacije RADNIK (tabela RADNIK) i jedna instanca relacije ODELJENJE (tabela SEKTOR). RADNIK

LIME SSL PREZIME MBR DATRODJ POL PLATA ADRESA Ivana S Gocić 123456 15-10-87 Ž 17000 Niška 4 Milan I Savić 234567 01-03-57 M 32000 Humska 2 Ana P Rodić 666777 03-12-50 Ž 27000 Savska 34 Pera K Kostić 555333 31-12-53 M 43000 Čairska 3

SEKTOR

BRSEK NAZIV SEKTORA SBROJ 40 projektovanje 60 proizvodnja 80 razvoj

Zadatak 2: Domeni atributa Identifikovati domene atributa relacije RADNIK iz prethodnog primjera. Rješenje : Domeni nekih atributa relacije RADNIK su prikazani u sljedećoj tabeli:

Atribut Domen Značenje Definicija domena LIME Imena Osoba Skup mogućih imena osoba Niz karaktera, dužine do 15. PREZIME Prezime Osoba Skup mogućih prezimena osoba Niz karaktera, dužine do 15. MBR Maticni Broj Skup mogućnih matičnih brojeva

radnika Cijeli brojevi, napr. opsega 111111-999999*

DATRODJ Datum Rodjenja Moguće vrijednosti za datume rođenja zaposlenih u preduzeću

Datum, opseg, od 01-JAN-44 nadalje

POL Pol Pol radnika Karakter (1), vrednost M i Ž PLATA PlataRadnika Moguće vrednosti plata radnika Broj, opseg od minLD do 40000.00, gdje je

minLD minimalni republički lični dohodak ADRESA AdresaRadnika Moguće adrese radnika preduzeća Niz karaktera (30)

Page 19: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

19  

SQLnaredbe Iako se naziva upitnim jezikom. SQL ima naredbe za sveobuhvatan rad s relacionom bazom podataka. SQL je nazvan jezikom iako on nije potpun programski jezik. Npr. u njemu se uobičajeno ne nalazi If...Then...Else konstrukcija za ispitivanje uslova, a nema ni konstrukciju za logičku strukturu petlje Do...While ili For...Next. SQL je uglavnom zasnovan na relacionom računu, s time da je matematička notacija zamijenjena naredbama (ključnim-rezervisanim riječima) nalik na govorni engleski jezik. Upit se postavlja fleksibilnom naredbom SELECT. Rezultat upita se shvata kao nova privremena relacija, izvedena iz stalnih. Najćešće se SQL razvrstava na tri kategorije naredbi:

1. Naredbe za definisanje podataka (Data Definition Statements) omogućavaju definisanje resursa i logičkog modela relacione baze podataka:

CREATE TABLE – kreiranje fizičke tabele baze podataka, CREATE VIEW – kreiranje virtuelne imenovane tabele, “pogled”, CREATE INDEX – kreiranje indeksa nad jednom ili više kolona tabele ili pogleda, ALTER TABLE – izmjena definicije tabele, izmjena, dodavanje ili uklanjanje kolone (atributa), DROP TABLE – uklanjanje tabele iz baze podataka, DROP VIEW – uklanjanje pogleda iz baze podataka.

2. Naredbe za rukovanje podacima (Data Manipulation Statements) omogućavaju ažuriranje podataka u širem smislu (izmjenu, dodavanje i brisanje) i izvještavanje (pribavljanje novih informacija) iz baze podataka:

SELECT – pristup podacima i prikaz sadržaja baze podataka, INSERT – unošenje podataka, dodavanje redova u tabelu, Sintaksa: INSERT INTO tabela (kolone)VALUES (podaci); Primjeri: INSERT INTO artikli (naziv, cijena)VALUES ('Špageti', 5); INSERT INTO godine (godina, opis)VALUES (YEAR(NOW()), 'godina izbora');DELETE – brisanje podataka, izbacivanje redova iz tabele, Sintaksa: DELETE FROM tablica WHERE uslov; Oprez!!! Nemojte zaboraviti WHERE uvjet jer će inače svi podaci biti izbrisani! Primjer: DELETE FROM artikli WHERE id=20; UPDATE – ažuriranje, izmjena vrijednosti podataka u koloni. Sintaksa: UPDATE tabela SET kolona=podatak, ...WHERE uslov; Primjer: UPDATE artikli SET cijena=500 WHERE id=1;

3. Naredbe za upravljanje bezbjednošću podataka (Data Control Functions) omogućavaju oporavak, konkurentnost, sigurnost i integritet relacione baze podataka:

GRANT – dodjela prava korišćenja tabele drugim korisnicima od strane vlasnika tabele, (sva prava ALL, svim korisnicima PUBLIC) REVOKE – oduzimanje prava korišćenja tabele drugim korisnicima, BEGIN TRANSACTION – početak transakcije koji se može završiti jednom od dvije naredne naredbe:

COMMIT WORK – prenos dejstva transakcije na bazu podataka, ROLLBACK WORK – poništavanje dejstva transakcije na bazu podataka.

SQL po standardu 1999 razvrstava SQL naredbe u sljedećih 7 kategorija:

1. Naredbe za šemu baze podataka (SQL-schema statements) - za kreiranje, izmenu i izbacivanje šema i objekata šema (CREATE, ALTER, DROP)

2. Naredbe za podatke (SQL-data statements) - za prikaz i ažuriranje podataka baze (SELECT, INSERT, UPDATE, DELETE)

Page 20: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

20  

3. Naredbe za transakcije (SQL-transaction statements) - za startovanje, završavanje i postavljanje parametara za transakcije (COMMIT, ROLLBACK)

4. Naredbe za kontrolu (SQL-contol statements), koje se koriste za kontrolu izvršavanja sekvence SQL naredbi (CALL, RETURN)

5. Naredbe za konekcije (SQL-connection statements) - za uspostavljanje i prekidanje SQL konekcije (CONNECT, DISCONNECT)

6. Naredbe za sesije (SQL-session statements) - za postavljanje default vrijednosti i drugih parametara SQL sesije (SET) 7. Naredbe za dijagnostiku (SQL-diagnostic statements) - signalizuju izuzetke u SQL rutinama (GET DIAGNOSTIC)

SintaksaSQLnaredbi Upoznavanje sa sintaksom i sematikom2 pojedinog programskog jezika znači ustvari učenje pisanja programskog koda-programiranja. Ovdje ćemo dati samo uvodne napomene kako da pišete programske naredbe i promjenjive. SQL spada u takozvane no-case-sensitive programske pakete, što znači da se naredbe, ključne riječi, imena objekata i varijabli mogu pisati i malim i velikim slovima, a da sistem pri tome ne pravi razliku među njima. Međutim, i pored toga, zbog preglednosti napisanog programa, preporučljivo je dosljedno koristiti mala i velika slova. SQL naredbe po pravilu se završavaju interpunkcijskim znakom (;) Između bilo koje riječi se može preći u novi red. SQL nije case sensitive, ali imena tabela jesu! Ako neka tabela sadrži ime neke ključne riječi, potrebno ju je označiti sa specijalnim navodnikom: ` . (AltGr+7 na tastaturi) . Jednostavnosti radi, te navodnike, odnosno takav sadržaj treba izbjegavati.

Jednostruki navodnici se koriste za oznaku stringova. Primjer: SELECT 'Hello\nworld! :)';

Pun naziv objekta specificira se u obliku: <naziv kataloga>, <naziv šeme>, <naziv objekta> Osnovne (ne i jedine) naredbe SQL-a koje se koriste u manipulisanju podacima u relacionoj bazi podataka omogućavaju definisanje, korišćenje i zaštitu podataka. Formalno SQL jezik je podijeljen na nekoliko jezičkih elemenata odnosno kategorija naredbi:

1. Upiti (Queries), koji vraćaju podatke na osnovu određenih kriterijuma. Ovo je najvažniji element SQL.

2. Klauzule (Clauses), koje su sastavni dijelovi izjava i upita. (U nekim slučajevima klauzule su opcione).

3. Izrazi (Expressions), koji mogu da proizvedu ili skalarnu vrijednost ili tabele koje se sastoje od kolona i redova sa podacima.

4. Predikata (Predicates), koji se koriste za ograničavanje efekata izjava i upita, ili za promene toka programa.

5. Izjave (Statements), koje mogu da kontrolišu transakcije, protok programa, veza, ili dijagnostiku. Sve ove kategorije ćemo analizirati u poglavlju SQL upiti, jer korišćenje klauzula, izjava i predikata omogućava kreiranje i realizaciju upita.

2 semantika – skup pravila koja daju odgovor na pitanje što znači neka naredba  sintaksa – pravila koja određuju pripada li skup simbola jeziku ili ne 

7

Page 21: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

 

Struktur Definisanje

• Dom• Ind• Kat• Šem• Tab

Definisanje model baze što smo oba

Znači prije baze, potom Domen Domeni se prost, korisnUobičajeno -Predefinis-Semantičkdomenima ui nazivaju sSemantički Mada je iz dnešto širi po

SQL podrždefinisane udefinisan (S

1. broj2. nizo3. nizo4. datu

raSQL‐a

strukture SQmena eksa taloga ma bela

strukture znpodataka n

avili prije neg

nego što prm ćemo defini

definišu kanički definisje da se dom

sane domeneke domene, ugrađujući uemantički. Sdomeni su adefinicije vidojam, pojedn

Do

žava osam ugrađene - SRBR, PRBRjevi (numberove karakteraove bitova (bumi (dates),

QL znači def

nači da smoastao je na go smo pristu

ristupimo defisati element

ao skupovi ian imenovan

meni podijelee, domeni kokoje korisn

u definiciju nSemantički dapstraktni tipdljivo da se pnostavljeno

omen = tip po

predefinisansistemski pr

R, ...i neki drrs), a (character bit strings),

finisanje:

o ranije kreirosnovu analupili izradi m

finisanju strte SQL-a. An

iz kojih atribn objekat. e na: oji postoje u jnik definiše eko ograničeomeni se jošovi podatakapod domenomćemo smatra

odataka

nih domenaredefinisane,rugi). Ugrađ

strings),

21 

rali model blize problemamodela baze.

rukture baze naliza i izrad

buti relacije

jezicima baznad predefin

enje i dajući š nazivaju i aa, odnosno om podrazumati da je:

a; osam tipo, a po potređeni SQL dom

baze podataka kojeg želim

neophodno da modela su

e uzimaju sv

za podataka.nisanim ili pim na taj nn

apstraktnim ibjekti koje d

mjeva

ova podatakaebi se iz njihmeni su:

ka koji nam mo rješiti up

je uraditi anu temelj SQL

voje vrijedn

prethodno dačin određenili korisnički

definiše koris

a je mogućeh mogu izve

je to omogupotrebom baz

nalizu i napL-a.

nosti. Domen

definisanim sno značenje zi definisanimsnik.

e koristiti kaesti-definisat

ućio. A opetze podataka.

raviti model

n je u SQL-u

semantičkimzbog čega se

m domenima.

ao unaprijedti korisnički

t

l

u

m e .

d i

Page 22: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

22  

5. vremena (times), 6. kombinacija datuma i vremena (timestamps), 7. intervali godina/mjesec (year/month intervals), 8. intervali dan/vrijeme (day/time intervals).

Num

erički tipovi

Tačni

INTEGER (INT)

SMALLINT

NUMERIC

DECIMAL (DEC)

Približni

REAL

DOUBLE PRECISION

FLOAT

Tekstualni tipovi

CHARACTER (CHAR)

CHARACTER VARYING (CHAR VARING, VARCHAR)

CHARACTER LARGE OBJECT(CHAR LARGE OBJECT, CLOB)

Binarni tipovi

BIT

BIT VARYING

BINARY LARGE OBJECT (BLOB)

Datum

ski tipovi

DATE

TIME

TIMESTAMP

TIME WITH TIMEZONE

TIMESTAMP WITH TIME ZONE

Intervalni tipovi Godina-mesec

INTERVAL YEAR

INTERVAL MOUNTH

INTERVAL YEAR TO MOUNTH

Dan-vreme(neki iz grupe)

INTERVAL DAY

INTERVAL DAY TO HOUR

INTERVAL HOUR TO MINUTE

Kreiranjedomena(definisanjetipovapodataka) Postoje tri osnovne naredbe za definisanje domena:

• CREATE DOMAIN • ALTER DOMAIN • DROP DOMAIN (RESTRICT, CASCADE)

Domen se kreira naredbom: CREATE DOMAIN <naziv domena> [AS] <predefinisani tip> [DEFAULT <Vrijednost>] [[CONSTRAINT <naziv ograničenja>] CHECK (<ograničenje>)] .. Definicija domena se mijenja naredbom ALTER : ALTER DOMAIN <naziv domena> SET DEFAULT <Vrijednost> | DROP DEFAULT | ADD [CONSTRAINT <naziv ograničenja>] CHECK (<ograničenje>) | DROP CONSTRAINT <naziv ograničenja> Domen se uništava naredbom: DROP DOMAIN <naziv domena>

Page 23: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

23  

Indeksi Indeksi su strukture podataka koje olakšavaju i čine efikasnijim pristup podacima baze. Vrijednosti indeksiranih kolona mogu biti jedinstvene (primarni ključ) ukoliko se pri kreiranju izabere varijanta UNIQUE. CREATE [UNIQUE] INDEX <naziv indeksa> ON (<naziv tabele> ( <naziv kolone1> [, <naziv kolone2>, ..]) ; Izbacivanje indeksa se vrši naredbom: DROP INDEX <naziv indeksa> Šema Šema je kolekcija tabela, pogleda, domena, tvrdnji (assertions). Šema predstavlja kolekciju svih objekata koji dijele isti prostor imenovanja. Šema može sadržati jednu ili više tabela, a svaka tabela može pripadati logički tačno jednoj šemi. Svaki objekat (tabela, pogled, itd.) pripada tačno jednoj šemi. Pod pripadnošću se ne podrazumjeva fizička pripadnost, već hijerarhijska veza u kojoj, na primjer, šema sadrži nula ili više tabela, a svaka tabela logički pripada tačno jednoj šemi.

Šema se može pretstaviti dijagramima relacija entiteta:

Ali šema se može pretstaviti i u tekstualnom obliku na sledeći način: Kupci (BrojKupaca, Ime, Adresa, Grad) Porudžbine (BrojPorudžbine, BrojKupca, Iznos, Datum) Primarni ključevi su na primjer boldovani a spoljni ključevi na primjer podvučeni.

Šema se kreira naredbom: CREATE SHEMA <naziv šeme> Izbacivanje šeme može biti CASCADE - izbacuje šemu i objekte iz nje ili RESTRICT - brisanje šeme koja je prazna i ostvaruje se naredbom: DROP SHEMA <naziv šeme> CASCADE | RESTRICT Katalog Katalog je imenovana kolekcija šema baze podataka u SQL-u. Baza podataka, pored podataka, sadrži i metapodatke, odnosno tzv “Rjecnik podataka” (Data Dictionary, Data Directory, Catalog). Katalog baze podataka opisuje posmatranu bazu podataka (strukturu baze, pravila očuvanja integriteta podataka, prava korišćenja i slično i možemo ga shvatiti da je "baza podataka o bazi podataka".

Page 24: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

24  

Katalog je kolekcija šema. U katalogu postoji i informaciona šema (INFORMATION_SCHEME), katalog u užem smislu riječi, u kojoj se daju informacije o svim šemama u katalogu. Svaki katalog sadrži šemu sa nazivom INFORMATION_SCHEMA, koja predstavlja rječnik podataka. Nju čini skup pogleda, odnosno sistemskih tabela, koje sadrže sve bitne informacije o SQL okruženju. Sadržaj sistemskih tabela se automatski održava. U SQL standardu ne postoje naredbe za kreiranje i uništavanje kataloga. Način njihovog kreiranja i uništavanja je implementaciono-definisan (implementation-defined), odnosno prepušten je vlasnicima softverskih proizvoda koji implementiraju SQL okruženje. Pun naziv objekata šeme ima tri komponente, razdvojene tačkama: naziv kataloga, naziv šeme i naziv objekta. Ako je posmatrani objekat tabela, tada se njen pun naziv specificira na sledeći način: <naziv kataloga>.<naziv seme>.<naziv tabele>. Objekti šeme se mogu referencirati sa eksplicitnim ili implicitnim nazivom kataloga i šeme: FROM <naziv tabele> -- nekvalifikovan naziv FROM <naziv seme>.<naziv tabele>-- djelimično kvalifikovan naziv FROM <naziv kataloga>.<naziv seme>.<naziv tabele>-- potpuno kvalifikovan naziv model objekti-veze za relacioni katalog: Klaster je kolekcija kataloga.

Tabele Tabele predstavljaju dvodimenzionalne matrice čiji redovi predstavljaju naziv i svojstvo objekata smještenog u tabelu, a kolone objekata izražena odgovarajučim tipom podataka. Uz pomoć jedne n-torke opisan je jedan objekat. Kreiranjetabela Podaci se u SQL-u čuvaju se i prikazuju u obliku tabela. Svaka kolona tabele ima ime i tip podatka (domen). Red je najmanja jedinica podatka koja se može uneti u tabelu ili izbrisati iz nje. U SQL-u koriste se:

1. Bazna tabela - vrsta tabele za čuvanje svih SQL podaka. može biti: Perzistentna3 tabela CREATE TABLE <naziv tabele> (<naziv kolone1> <tip podatka> NOT NULL], <naziv kolone> <tip podatka> [NOT NULL], ..) Globalna privremena tabela CREATE GLOBAL TEMPORARY TABLE <naziv tabele> (<naziv kolone1> <tip podatka> [ NOT NULL], <naziv kolone> <tip podatka> [ NOT NULL], . .) ; Kreirana lokalna privremena tabela CREATE LOCAL TEMPORARY TABLE <naziv tabele> (<naziv kolone1> <tip podatka> [ NOT NULL], <naziv kolone> <tip podatka> [ NOT NULL], . .) ; Deklarisana lokalna privremena tabela DECLARE LOCAL TEMPORARY TABLE MODULE <naziv tabele> (<naziv kolone1> <tip podatka> [NOT NULL], <naziv kolone> <tip podatka> [ NOT NULL], . .) ;

3 Podaci koji se čuvaju i nakon prestanka rada određenog programa kome pripadaju i nazivaju se perzistentni podaci 

Page 25: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

25  

2. Izvedena tabela - predstavlja rezultat izvršavanja upita.

3. Tabela pogleda - predstavlja rezultat poziva imenovanog upita (pogleda). Kasnije u sklopu MySQL više ćemo se baviti konkretnim primjerima, pa ipak u sklopu upoznavanja sa principima SQL-a često ćemo davati primjere, pa tako i ovdje: Kako u SQL-u kreirati tablicu? Primjer 1 CREATE TABLE osoba ( maticni broj NVARCHAR(15), ime NVARCHAR(15) NOT NULL, prezime NVARCHAR(15) NOT NULL, ulica NVARCHAR(25), mjesto NVARCHAR(15) DEFAULT ‘Banja Luka’ PRIMARY KEY (maticni broj) );

Primjer2 CREATE TABLE grad ( pbr SMALLINT, naziv VARCHAR(50), CONSTRAINT grad_pk PRIMARY KEY(pbr) );

Izmjenadefinicijetabele

• Dodavanje nove kolone ALTER TABLE <naziv tabele> [ADD COLUMN] <definicija kolone> ;

• Izmena postojeće kolone ALTER TABLE <naziv tabele> [ALTER COLUMN] <naziv kolone> SET DEFAULT <Vrijednost> | DROP DEFAULT;

• Izbacivanje kolone iz tabele ALTER TABLE <naziv tabele> DROP [COLUMN] <naziv kolone> ;

• Dodavanje ili izbacivanje ograničenja na Vrijednosti ALTER TABLE <naziv tabele> ADD [CONSTRAINT <naziv ograničenja> ] <ograničenje tabele> | DROP CONSTRAINT <naziv ograničenja> ; Izbacivanjetabele

• Brisanje sadržaja tabele DELETE TABLE <naziv tabele>;

• Brisanje tabele i njenog sadržaja DROP TABLE <naziv tabele>; Za razliku od DELETE koja izbacuje samo n-torke iz relacije, ova naredba izbacuje i de finiciju relacije pa relacija i njena relaciona šema više ne postoji.

Funkcije SQL podržava rad sa funkcijama. Daćemo najčešću podjelu SQLfunkcija po kategorijama funkcija:

1. Aritmetičke funkcije, 2. Znakovne funkcije, 3. Agregatne funkcije

Page 26: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

 

AritmetičkKoriste se z

SQL dozvorezultat predetaljno obrPrimjer 1. SQL> seleround(mifrom cijenwhere ka

Primjer 2. SQL> sele5*exp(1+cfrom cijenwhere ka

ke(matemaza realizaciju

oljava korišćetraživanja mraditi Select,

ect proizvon_cijena,0)na taloska_cij

ect proizvocos(min_cijna taloska_cij

atičke)funku standardnih

enje matemamogu prikaz pa zasad sam

d_id, )

ena>5;

d_id, jena/3)) Fu

ena>50;

kcijeh matematičk

atičkih funkczati rezultati mo pogledajt

unkcija

26 

kih operacija

cija u SELE izračunavante, a kasnije

IzlazPRO-----100100104104 IzlazPRO-----100100104104

nad numerič

ECT i WHERnja nekog mdetaljno ana

z: OIZVOD_ID ------- -----890 46 890 41 352 38 352 41

z: OIZVOD_ID ------- -----890 5.1469890 24.639352 36.924352 22.672

čkim tipom p

RE klauzulammatematičkogalizirajte prim

ROUND(MI-------------

FUNKCIJA ----- 974 969 4397 2254

podataka.

ma. Na taj ng izraza. K

mjere koji slij

IN_CIJENA-

način se kaoasnije ćemojede:

A,0)

o o

Page 27: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

27  

Funkcijezaradsatekstualnimpodatacima–znakovnefunkcije Koriste se pri radu sa stringovima -tekstualnim tipom podataka. Funkcija OPIS LEFT(<string>,X) Kao rezultat daje X „najljevijih“ znakova stringa. RIGHT(<string>,X) Kao rezultat daje X „najdesnijih“ znakova stringa. UPPER(<string>) Pretvara sadržaj cijelog stringa u velika slova. LOWER(<string>) Pretvara sadržaj cijelog stringa u mala slova. INITCAP(<string>) Pretvara sadržaj stringa tako da je svaka riječ sa početnim velikim slovom. LENGTH(<string>) Kao rezultat daje broj znakova u stringu. <string>||<string> Spaja dva stringa u jedan string, pri čemu iza prvog odmah slijedi drugi string.

LPAD(<string>,X,'*') Dodaje stringu sa lijeve strane onoliko znakova * (ili znak naveden unutar apostrofa) koliko je potrebno da bi se dobio string dužine X znakova.

RPAD(<string>,X,'*') Dodaje stringu sa desne strane onoliko znakova * (ili znak naveden unutar apostrofa) koliko je potrebno da bi se dobio string dužine X znakova.

SUBSTR(<string>,X,Y) Izdvaja Y znakova iz stringa počevši od pozicije X.

NVL(<kolona>,<vrijednost>) Zamjenjuje sve vrijednosti NULL u koloni <kolona> vrijednostima <vrijednost

Funkcijeagregacije Kao posebnu kategoriju obično se izdvajaju funkcije koje obavljaju agregaciju, mada se one mogu shvatiti i kao kombinacija znakovnih i matematičkih funkcija. Funkcije agregacije su dobile naziv po tome što vrše agregaciju rezultata upita. Korišćenje ovih funkcija je jednostavno, pošto se navode u listi kolona SELECT klauzule koje se prikazuju. U najosnovnijem obliku agregatne funkcije vraćati će skalarnu vrijednost, a sintaksa je sljedeća: SELECT AgregatnaFunkcija(atribut) FROM tabela Korišćenje ovih funkcija je jednostavno, pošto se navode u listi kolona SELECT klauzule koje se prikazuju. Daćemo tabelarni pregled najčešće korišćenih: Funkcija Opis-značenje AVG(obl) srednja vrijednost SUM(obl) suma svih obeležja MIN(obl) minimalna vrijednost MAX(obl) maksimalna vrijednost COUNT({*|[DISTINCT]obl}) broj pojavljivanja ABS(broj) apsolutna vrijednost MOD(br1, br2) br1 po modulu br2 POWER(br, e) br na e-ti stepen UPPER(str) u velika slova SUBSTRing(str, pos [, d]) podstring od str, sa poz. pos CONCAT(str1, str2, str3, ...) konkatenacija stringova YEAR(obl) vraća godinu iz datuma Daćemo dva primjera za ilustraciju funkcija agregacije (sa istom primjedbom uz mat. f-je; postaće jasnije nakon analize Select upita) Pr. 1. Napiši upit koji određuje maksimalnu, minimalnu, prosečnu i ukupnu platu svih radnika:

SELECT MAX(Plata) AS MaxPlata, MIN(Plata) AS MinPlata, AVG(Plata) AS ProsPlata, SUM(Plata) AS UkPlata FROM RADNIK;

Pr 2. Pomoću funkcije COUNT odredi broj vrsta u rezultujućoj tabeli. SELECT COUNT(*) AS PlataSaBonusom FROM RADNIK;

Page 28: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

 

SQLupit Osnova SQL Realizuje se

SELECFROMWHER

Naredba upključnih rij

1. SEL2. FR

Klaosn

3. WH Klauzule SE

KlauzulaS SELECT -operacija PRKlauzula SEopcije:

ALDI* taizrAtab

KlauzulaF FROM - deFROM možzadatih od sKlauzula FRspecificiratiKvalifikacioračunu.

ti–nared

L-a je upit.

e kao blok ob

CT < lista aM < lista relRE < kvalif

pita SELECTječi klauzulaLECT - defiOM - defin

auzula FROMnovu kriterijuHERE - defin

ELECT i FR

SELECT

- definiše lisROJEKCIJEELECT spe

LL - u rezulISTINCT - - rezultujuća

abela.* - rezuraz - ime koS pseudonimbeli

FROM

efiniše tabeleže da uključistrane korisnROM specifi način spajanonim izrazom

beupita

blika:

atributa> lacija> fikacioni izr

T je jedna oda: iniše listu ko

niše tabele izM može da uuma zadatih oniše predikat

ROM su obav

stu kolona kE. ecificira kolo

tujućoj tabeliz rezultujuć

a tabela ukljuultujuća tabeolone ili funkm - novo ime

e iz kojih se pi jednu ili viš

nika ficira tabele inja tabela m zadaju se u

az>

d najkomple

lona koje će z kojih se pruključi jednod strane kort na osnovu k

vezne, a WHE

koje će biti

one koje treb

li prikazuju sće tabele izbaučuje sve kolla uključuje

kcije nad koloe kolone ili fu

pribavljaju pše opcionih J

iz kojih se pr

uslovi selekc

28 

eksnijih nared

biti uključenribavljaju po

nu ili više oprisnika. koga se ogra

ERE nije.

uključene u

ba uključiti

se sve vrste kacuju se dupllone tabele ilsve kolone s

onama koja ćfunkcije nad

podaci za potJOIN klauzu

ribavljaju po

cije i spajanja

Pri

dbi SQL pro

ne u rezultujodaci za pot

pcionih JOIN

aničava broj v

u rezultujuću

u rezultujuć

koje zadovoljlikati vrsta li tabela iz kospecificirane će biti uključkolonama ko

trebe generisula za povezi

daci. Ukolik

a, odnosno is

imjer primjen

ogramskog je

uću tabelu trebe generisN klauzula z

vrsta u rezult

u tabelu. Li

u tabelu. M

javaju naved

ojih se pribavtabele čena u rezultuoje im se dod

anja rezultujivanje tabela

ko se navede

skazi slični is

ne Select upi

ezika i sadr

sanja rezultuza povezivan

tujućoj tabel

istom atribut

Mogu se koris

deni predikat

vljaju podaci

ujuću tabeludeljuje u rezu

juće tabele. Ka na osnovu k

više tabela p

skazima u re

ita

rži veći broj

ujuće tabele.nje tabela na

li.

ta zadaje se

stiti sljedeće

t

i

ultujućoj

Klauzula kriterijuma

potrebno je

elacionom

j

. a

e

e

Page 29: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

 

PrimjerSENajjedn

Analiziraćem

Pretpostavim

SELFRO

Rezultat ovo

Da objasnimtražili ste ktabela ne sazarezom (;) Opšti oblik SELECT IFROM ImDa biste dobSELECT *

KlauzulaW WHERE - rezultata eli Klauzula Wuključene sa

ELECT/FROnostavniji upi

mo tabelu ko

mo da hoćemLECT Ime, OM TabelaAog upita u ba

mo sada šta skolone pod nadrže razma.

naredbe SELmeKoloneeTabele; bili sve kolo

* FROM Im

WHERE

definiše preiminiše sve v

WHERE specamo one vrst

OMupitait bez selekcij

oja sadrži jed

mo da vidite Prezime, AAdresaRadnazu podataka

ste upravo unazivom Imeake – ona se

LECT kojome, ImeKolo

ne neke tabemeTabele;

edikat na osnvrste za koje

cificira uslovte-kolone, koRelacioni oLogički opeOperator BEOperator INOperator LIOperator IS

ije izdvaja sa

dinstveni mat

adrese svih zdresa, Gradnika; a je

uradili: tražilie, Prezime, Ae moraju nav

m se dobijaju ne, ...

ele bez navođ

novu koga sespecificirani

v na osnovu koje zadovoljaperatori eratori ETWEEN

N IKE

S NULL

29 

amo kolone..

atični broj gra

zaposlenih. Kd, Republik

i ste sve podAdresa, Gradvesti kao jed

svi redovi u

đenja svih im

e ograničavai predikat ne

koga se kreiravaju specifi

.ostavlja one

ađana, imena

Koristimo nka

datke u tabeld, Republikadna riječ, kao

u tabeli je:

mena kolona,

a broj vrsta u vraća vrijed

ra rezultujućicirani uslov.

e koje su nav

a, prezimena

aredbu SELE

i TabelaAdrea. Obratite pao i da se nar

koristite:

u rezultujućojdnost TRUE.

ća tabela. U r U uslovu se

vedene, a izba

a i adrese zap

ECT:

esaRadnika ažnju da imeredba završa

oj tabeli. Ova.

rezultujuću te mogu javiti

acuje ostale.

poslenih:

– preciznije,ena kolona iava tačkom i

a klauzula iz

tabelu će bitii:

, i i

z

i

Page 30: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

 

Relacionio Klauzula W

Primjerije Upite ćemo

Ukoliko želSELECT IDFROM TABWHERE PLObratite pažone zaposleKao rezulta

Isti tip oper

SEL

Ova naredbGeneralno, se pojavljuj Važno! Funrezultat fuodnosno nakPogledajte S

SEL

operatori

WHERE SQL= Je<> N< M

ednostavne

postavljati z

lite da dobijeDRADNIKABELAPRIMALATA >= 50žnju da se koene koji zarađat dobijamo:

racije može sLECT IDRA

FROM T

a prikazuje Iu slučaju teke u naredbi n

nkcije agregunkcija agregkon obrade pSQL upit kojLECT Ime,

FROM RWHER

L podržava šeednako ije jednako (

Manje od

euslovnese

za sljedeću ta

ete ID brojevA

ANJARADN0000; oristi znak (ređuju više od

se primeniti nADNIKA TABELAPRIWHERE PO

ID brojeve svkstualnih kolnavedite unu

gacije nije mgacija izračupredikta kojiji se NE MOPrezime, PlRADNIK

RE Plata > A

est relacionih

(različito)

elekcije(SE

abelu:

ve onih zapos

NIKA

elacione ope50,000, ili je

Opis klauzu(operacija k(netačno)).

na tekstualne

MANJARADOLOŽAJ = 'rvih rukovodiona, koristite

utar apostrofa

moguće koriunava nakon

je zadata u WOŽE IZVRŠITlata

AVG(Plata)

30 

h operatora k

ELECT/FRO

slenih koji za

eratore) >= (ednako 50,00

ule WHERE,koja kao rezu

e kolone:

DNIKA rukovodilacilaca. e operatore ja (').

istiti u WHšto se odre

WHERE klaTI i koji će G

koji imaju sle> Ve<= Ma>= Ve

OM/WHERE

arađuju preko

(veće ili jedn00, i to prika

, odnosno deultat daje vre

c';

ednako ili ra

ERE klauzuede vrste kojauzuli. GENERISAT

edeće značenjeće odanje ili jednaeće ili jednak

)

o 50.000, ko

nako), pošto sazano zajedno

o PLATA >=dnost True (t

azličito, i oba

uli. To je poje ulaze u sa

TI GREŠKU

nje:

ako od ko od

oristite sljede

smo željeli do.

= 50000, naztačno) ili Fal

avezno cijeli

osljedica činastav rezultu

U:

ću naredbu:

da izdvojimo

ziva se uslovlse

tekst koji

njenice da seujuće tabele,

v

e ,

Page 31: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

31  

KlauzulaORDERBY ORDER BY - koristi se za sortiranje rezultujuće tabele. Korisnici specificiraju kolone po kojima se vrši sortiranje kao i smjer sortiranja. Klauzula ORDER BY specificira redosljed prikazivanja vrste rezultujuće tabele, sortiranjem po vrijednosti nekih kolona u rastući (ASC) (predefinisana vrijednost) ili opadajući redosljed (DESC). Ukoliko klauzula ODER BY nije navedena vrste u rezultujućoj tabeli su poređane po slučajnom principu i ne postoji nikakva garancija da će isti upit uvijek generisati rezultujuću tabelu čije su vrste poređane na isti način. Primjer pokazuje SQL upit koji prikazuje podatke o radnicima i sortira ih prema prezimenu u opadajućem i rastućem redosljedu. SELECT * FROM RADNIK ORDER BY Prezime;

KlauzulaGROUPBY Grupisanje se obavlja prema jednom ili više atributa iz relacije (ili više relacija ukoliko su navedene u FROM clause). GROUP BY clause sadrži popis atributa ili izraza prema kojima se obavlja grupisanje. GROUP BY - grupiše vrste koje u određenim kolonama imaju identične vrijednosti. Grupisanje se obavlja tako da se n-torke koje imaju jednake vrijednosti atributa navedenih u listi za grupisanje, kombiniraju u zajednicku grupu. Za svaku dobivenu grupu u rezultatu se pojavljuje samo jedna n-torka. Primjer:

SELECT sifPred FROM rezervacija, dvorana WHERE rezervacija.oznDvorana = dvorana.oznDvorana GROUP BY sifPred

Postavljanjeuslovanadgrupomzapisa–Havingklauzula Za postavljanje uslova nad grupom zapisa koristi se HAVING clause. HAVING - definiše predikat na osnovu koga se elimišu vrste nakon što je klauzula GROUP BY primjenjena na rezultujuću tabelu. Dok se uz pomoć WHERE clause izdvajaju one n-torke koje će formirati grupe definisane u GROUP BY clause, HAVING clause služi za postavljanje uslova kojeg dobivene grupe moraju zadovoljiti da bi se pojavile u rezultatu. Za razliku od WHERE dijela naredbe, u HAVING dijelu naredbe dozvoljeno je koristiti agregatne funkcije. U HAVING dijelu naredbe dozvoljeno je koristiti samo one atribute koji se nalaze u GROUP BY listi. Atributi koji se ne nalaze u GROUP BY listi smiju se koristiti jedino kao argumenti agregatnih funkcija. Primjer: ispis šifri predmeta i broja položenih ispita, ali samo onih predmeta za koje je položeno više od dva ispita.

SELECT sifPred, COUNT(*) FROM ispit WHERE ispit.ocjena > 1 GROUP BY sifPred HAVING COUNT(*) > 2

Page 32: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

 

WHERE dioGROUP BYkoje imaju jHAVING dkojima je brtaj uslov.

Logičkiop SQL omogBETWEENslučajevimaPrioritet log

1. NO2. AN3. OR

Logički opeNOT se navNa primjer Primjer1 SELECT *FROM RADWHERE PPrimjer3 SELECT *FROM RADWHERE P

o naredbe odY lista odredjednaku šifru

dio naredbe oroj ntorki, tj.

peratori

gućava korišN koji oma. gičkih operat

OT ND R

eratori AND vodi na počer, NOT A =

DNIK rezime = "

DNIK rezime = "

dređuje koje duje strukturuu predmeta uodređuje koje COUNT(*)

šćenje standmogućavaju

tora je sledeć

i OR se korietku logičkogB je validni

Petrović";

Petrović" O

n-torke će fou grupa tj. p

ulaze u jednue od nastalih veci od dva

dardnih logičjednostavnij

ći:

iste na standg izraza, a ne

WHERE u

PSFW

OR Prezime

32 

ormirati gruppo kojim atriu grupu).

grupa ce bita). Ispisuje se

čkih operatoje korišćenj

dardni način. e ispred operaslov, ali A N

Primjer2 SELECT * FROM RADWHERE Pr

e = "Jovano

SlGRnaSEFRWGRHA U je nako

pe (samo polibutima se ob

ti prihvacenee po jedan za

ore AND, Oje prethodn

Međutim, koatora poređe

NOT = B nij

DNIK rezime = "P

ović";

ika pokazujeROUP BY i aredbe ELECT sifPrROM ispit

WHERE ispit.ROUP BY siAVING COU

HAVING dkorstiti uslo

ačin kao što oriste u WH

oženi ispiti).bavlja grupis

kao rezultatapis za svaku

OR i NOTno navedeni

od SQL-a, lonja. e.

Petrović" AN

e povezanostHAVING di

red, COUNT

ocjena > 1 ifPred UNT(*) > 2

dijelu naredove sa podu

o se HERE clause

. sanje n-torki

t (samo one gu grupu koja

T, ali i opeih operatora

ogički operat

ND Plata >

t WHERE, ijela SELEC

T(*)

dbe dozvoljeupitima na i

e.

i (sve ntorke

grupe u zadovoljava

eratore IN ia u nekim

tor negacije

= 40000;

T

eno isti

e

i m

Page 33: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

33  

OperatorIN Operator IN zamenjuje višestruku upotrebu operatora OR i = . Operator NOT IN prikazuje sve vrste osim onih određenih IN listom. Primjer: Korišćenjem operatora IN izdvajaju se samo radnici koji se prezivaju Petrović ili Jovanović. SELECT * FROM RADNIK WHERE Prezime IN ("Petrović","Jovanović"); Naredni upit pribavlja podatke o svim radnicima osim onih koji se prezivaju Petrović ili Jovanović. SELECT * FROM RADNIK WHERE Prezime NOT IN ("Petrović","Jovanović");

OperatorBETWEEN Operator BEETWEEN zamjenjuje višestruku upotrebu operatora AND i =. Ovaj operator omogućava ispitivanje da li je vrijednost atributa/kolone u zadatom opsegu. Primjer: Za prikazivanje podataka o radnicima čija je plata u opsegu od 30000 do 40000 (uključujući i granice opsega) možemo iskoristiti operator BETWEEN

SELECT * FROM RADNIK WHERE Plata BETWEEN 30000 AND 40000;

ili bez korišćenja BETWEEN SELECT * FROM RADNIK WHERE Plata>=30000 AND Plata<=40000;

OperatorLIKE Operator LIKE omogućava poređenje vrijednosti kolone sa zadatim šablonom. Kod definisanja šablona koristi se procenat (%) i znak pitanja (?). Procenat (%) predstavlja bilo koji mogući znak (broj, slovo, interpunkcijski znak) ili skup znakova. Znak pitanja (?) zamenjuje samo jedan znak. Primjer: SELECT * FROM RADNIK WHERE Prezime LIKE "J*"; Za nalaženje svih radnika koji sadrže slovo "J" negdje u prezimenu mogao bi se koristiti šablon "*J*". Obratite pažnju da se ne pravi razlika između malih i velikih slova. Operator NOT LIKE prikazuje sve vrste koje ne odgovaraju prethodno datom opisu, tj. za prethodni slučaj, sve radnike koji nemaju slovo "J" u svom prezimenu.

OperatorISNULL Operator IS NULL se koristi za poređenje sa NULL vrijednostima. Treba voditi računa da se na NULL vrijednosti ne može primjeniti ni jedan relacioni operator. Može se samo proveravati da li kolona ima NULL vrijednost ili nema.

Page 34: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

34  

Primjer koji pokazuje SQL upit koji izdvaja podatke o svim radnicima kojima nije definisan datum rođenja odnosno datum rođenja ima NULL vrijednost. SELECT * FROM RADNIK WHERE DatRodj IS NULL; AritmetičkefunkcijeuSelectuWhereklauzulama SQL dozvoljava korišćenje matematičkih funkcija u SELECT i WHERE klauzulama. Na taj način se kao rezultat pretraživanja mogu prikazati rezultati izračunavanja nekog matematičkog izraza. Aritmetičke funkcije se mogu primjenjivati i u WHERE klauzuli. Primjer: SELECT Ime, Prezime, Plata + 5000 AS PlataSaBonusom

FROM RADNIK WHERE Plata + 5000 > 40000;

Selektivno spajanje dva niza operatorom & SQL jezik koristi operator & koji omogućuje spajanje dva znakovna niza. Primjer SELECT Ime & " " & SSlovo & " " & Prezime AS [Ime i prezime radnika] FROM RADNIK; U ovom primjeru izvršili smo spajenje imena i prezimena zaposlenih. Da ne bi došlo do spajanja riječi ubacili smo jedan prazan znak - blanko ('' '') između riječi.

Page 35: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

35  

Spojevi(Joins) Jedna od najvećih prednosti jezika SQL je njegova mogućnost da spaja i manipuliše podacima koji se nalaze u više različitih izvornih tabela. U velikoj većini slučajeva upiti se ne izvršavaju samo nad jednom tabelom, već nad više njih koje je potrebno na neki od načina, spojiti. Da nema ove mogućnosti, trebali bi smo da sve moguće podatke stavimo u jednu jedinu tabelu. i tako bismo ostali bez relacionog modela. Pri objašnjenju upita sreli smo se sa potrebom spajanje dve ili više tabela. SQL to realizuje sa naredbom JOIN. Najčešće se koristi kao podupit u izrazu FROM. Spajanje tabela se obično vrši na osnovu kolona koje sadrže isti tip podataka. Najčešće spajanje je između primarnog ključa jedne tabeli i stranog ključa druge tabele tj. tzv. "foreign relationship" između tabla.

Postoje četiri tipa JOIN operacije, ali je tzv. unutrašnje spajanje ili "INNER JOIN" najčešće korišćeno. INNER JOIN - spajanje dvije tabele koje imaju zajedničke vrijednosti u nekim od svojih kolona. Primjera radi, možemo spojiti tabele Radnici i Plate, jer tabela "Plate" ima sifru radnika.

SELECT Radnici. Prezime, Radnici. Ime, Radnici. Odeljenje, Plate. Iznos FROM Radnici INNER JOIN Plate ON Radnici. RadnikID = Plate. RadnikID

OUTER JOIN - Postoji "LEFT OUTER JOIN" i "RIGHT OUTER JOIN" tj. lijevo i desno vanjsko spajanje. Recimo da imamo sledeći primjer:

SELECT Korisnici. ImeKompanije, Korisnici. BrojTelefona, Narudzbe. DatumNarudzbe FROM Korisnici LEFT JOIN Narudzbe ON Customers. KorisnikID = Narudzbe. KorisnikID

U ovom primjeru rezultat pretraživanja će sadržati sve korisnike, bez obzira da li imaju nula, jednu ili vise narudžbi. Korisnici sa vise narudžbi biće prikazani u rezultujućoj tabeli onoliko puta koliko narudžbi imaju. CROSS JOIN je takođe poznato kao Kartazijanski-Dekartov proizvod. Rezultat koji dobijemo je kombinacija svih vrsta jedne tabele sa svim vrstama druge tabele. Primjera radi, možemo napraviti novu tabelu spajanjem tabela "Studenti" i "Ispiti".

SELECT Studenti. StudentID, Kursevi. KursID FROM Studenti AS s CROSS JOIN Kursevi AS k

Primjetite da ON iskaz nije koristen. SELF JOIN je slučaj kada spajamo kolonu samu sa sobom. Recimo da imamo tabelu "Radnici" koja ima ključ "RadnikID". Želimo da napravimo listu svih radnika, sa imenima njihovih menadžera. Naravno, menadžer je takođe u tabeli "Radnici".

SELECT e1. Prezime AS "Prezime", e1. Ime AS "Ime", e2. Prezime AS "Menadzer" FROM Radnici e1 INNER JOIN Radnici e2 ON e1. MenadzerID = e2. RadnikID

Page 36: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

36  

Osnovneklauzuleograničenjeintegritetakolone Unutar SQL-a postoje mnogobrojna ograničenja za ograničenje integriteta a za početak ćemo navesti pet osnovnih koja omogućavaju ograničenje vrijednosti kolone koje sprječava narušavanje integriteta podataka tako da onemogućuje unos podataka koji ne zadovoljavaju pretopstavljene vrijednosti. Najjednostavnije je vršiti očuvanje integriteta definišući vtijdnosti kolona:

1. NOT NULL – u koloni nije dozvoljena NULL 2. UNIQUE – u koloni nije dozvoljeno ponavljanje iste vrijednosti 3. PRIMARY KEY – kolona je primarni ključ, nije dozvoljena NULL vrijednost niti ponavljanje

vrijednosti 4. CHECK (Predikat) – svaka vrijednost u koloni mora da zadovolji uslov zadat logičkim izrazom

Predikat. U izrazu se ne mogu navoditi druge kolone 5. DEFAULT=Konstanta – ako se prilikom unošenja jednog reda podataka u tabelu za kolonu ne

zada vrijednost, podrazumjeva se Konstanta

Page 37: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

 

PrimjersloAnaliziraćem

Ko je kupDa biste dob

SEL

Obratite pažFROM nareU klauzuli Wograničava Drugo, obrauslova IDKnameštaja jeRezultat ovo Koristeći za

SELE

Međutim, k Napravite s

SELFROWHOR

Ko je poruNapravite use daju samkomada nam

oženogupimo bazu koj

io stolicu? bili imena onLECT PREZI

FROM VWHERE

žnju na sledeedbe SELECWHERE primizbor na oneatite pažnju k

KUPCA = IDVe stolica (zboog upita su d

apis sa tačkaECT VLASN VLASN FROM WH AND

kako su u tab

spisak svih vLECT DISTIOM ANTIKVHERE IDPRODER BY PR

učio nešto šupit koji prikmo one porudmeštaja):

itaa sadrži tri ta

nih koji su kuIMEVLASNIVLASNICIAE IDKUPCA

eće činjeniceCT. mjetite da use koji su kupikako se uspoVLASNIKAog operatora dva imena: S

ama da bisteNICIANTIKNICIANTIKM VLASNICIHERE ANTIKD KOMADNelama imena

vlasnika po INCT IDPROVITETI, VLAODAVCA = EZIMEVLAS

što se nudi?kazuje prezimdžbine koje

abele:

upili stolicu,IKA, IMEVLANTIKVITET = IDVLASN

e o ovom upit

slov KOMADili (a u našemstavlja odno

A. Samo ako AND), prikaimonović, B

e izbjegli dvoKVITETA.PKVITETA.IANTIKVITE

KVITETI.IDKAMEŠTAJA

a kolona razl

abecednomODAVCA, PASNICIANTIIDVLASNIKSNIKA, IME

? mena onih vlse mogu zad

37 

koristite ovaLASNIKA TA, ANTIKVNIKA AND

tu: obje tabe

DNAMEŠTAm primjeru, sos između kose podudarajazaće se ime

Boban i Filipo

osmislenost, PREZIMEVMEVLASN

ETA, ANTIKKUPCA = V = 'stolica';ičita, ovo nij

m redu prezimREZIMEVLAIKVITETA KA EVLASNIKA

lasnika koji sdovoljiti (to

aj upit:

VITETI KOMADNAM

ele koje su u r

AJA = 'stolicstoga posedujlona sa ID brju ID brojeviena iz tabele.ović, Sima

ispred imenaLASNIKA, IKA

KVITETI VLASNICIAN; je bilo beoph

mena. ASNIKA, IM

;

su poručili njest, postoji

MEŠTAJA =

relaciji naved

ca' ju) stolicu. rojevima iz di u tabelama

a kolona mož

NTIKVITETA

hodno.

MEVLASNIKA

nešto i njihovprodavac ko

= 'stolica';

edene su u kl

dve tabele upi kupljen ko

žete pisati im

A.IDVLASNI

A

vu porudžbinoji je vlasnik

lauzuli

potrebom omad

mena tabela:

IKA

nu, pri čemuk poručenog

u g

Page 38: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

 

SELECT VLFROM PORWHERE PO

AND

Ovo kao rez

Ima nekoliko s1. "Pre2. VL

prefWHrazli

3. Obraosigpoda

4. Najvza INAntitoj vrealinampripa

5. Obraslučakolospoljjedn

Ko je kupioNa primer, pcijene svih kSELECT ID

FROWH

Podupit izračutog iznosa.

L.PREZIMEVRUDŽBINE OR.IDVLASND POR.ŽELJ

(SELECFROM A

zultat daje:

stvari na koje trezime" i "Poruči POR su pseudfiksi svih imen

HERE jer obe taičite kolone IDVatite pažnju na

gurava da se spatke (prezime). važnije, AND uN). Ono što se ikviteti jer nemvraćenoj listi koizuje kupovinom

meštaja koji se uada tom vraćenatite pažnju takaj. Pored toga,

ona. To znači ljašnjoj klauzulina kolona, a mo

o skup antikprikažimo kukupljenih an

DKUPCA OM ANTIKVHERE CENA

(SELECFROM A

unava prosječnu

VLASNIKA POR, VLASNIKA = VL.JENIKOMAD

CT KOMAD ANTIKVITE

reba obratiti pažen komad" u redonimi; to su n

na kolona u upiabele imaju koVlasnika iz dvea redosljed tabepisak prikazuje

u klauzuli WHEovim postiže je

ma klauzule WHomada nameštajm od drugog vl

upoređuje sa svanom skupu iz tabkođe da se u ovo kada se koristda ne možete i WHERE sa jeguća podudarno

kvitet? upce koji su

ntikviteta):

VITETI > CT AVG(CENANTIKVITE

u cijenu plus 10

Prezime, PONICIANTIK.IDVLASNIKD IN TI);

žnju u ovom upedu koji počinjenova imena za titu. Ovim se ellonu pod naziv

e različite tabeleela (vidi spoje

e prema toj tab

ERE izaziva izve izvršavanje poHERE. Zato, da ja iz tabele Antlasnika . Ovo makim željenim kbele Antikvitetiom slučaju desite ključne riječnavesti više k

ednom od više ost proizilazi iz

kupili skup a

NA) + 100 TI);

00, a zatim se pr

38 

OR.ŽELJENKVITETA VL KA

pitu: e sa SELECT prtabele navedeneliminiše dvosmvom IDVlasnike. evi) da je tabebeli, a da se d

vršavanje IN poodupita koji kaoa bi se prikazaotikviteti, čime smože da se shvakomadom iz tabti. ilo da je svaki žči IN, "= ANY"kolona u klauzmogućih vrijed

z više vrijednos

antikvitet (ci

rikazuju ID bro

IKOMAD Po

redstavljaju zage u klauzuli FR

mislenost, naročka, a zapis sa ta

la Porudžbine druga tabela Vl

odupita ("= ANo rezultat da je red iz tabele Pe neki antikviteati na sljedeći nbele Porudžbin

željeni antikvite" ili "= SOMEzuli SELECT ndnosti kolone u ti redovau toj je

ijena antikvit

ojevi kupaca za

oručen kom

glavlja kolona uROM koja se kočito pri spajanjačkama ukazuj

navedena prvalasniciAntikvite

Y" ili "= SOMEsve posjedovan

Porudžbine, Željet prikazuje samnačin: podupit ke; IN uslov je t

et bio raspoloživ", one ukazuju nekog podupitapodupitu. U po

ednoj koloni, a

teta je za 100

svaki komad na

mad

u izveštaju. oriste u zapisu sju izjednačavanje SQL-u da su

a u klauzuli FReta koristi sam

E" su dva ekvivne komade namljeniKomad momo ako porudžbkao rezultat dajtačan samo ako

v, što naravno nu na podudarnoa želeći da upodupitu se možne obrnuto.

0 veća od pro

ameštaja koji je

sa tačkama kaonjem u klauzuliu u pitanju dve

ROM; ovim semo za detaljnije

valentna zapisameštaja iz tabeleora se nalaziti ubina može da see skup komada

o ŽeljeniKomad

neće uvijek bitist redova, a ne

parite kolonu uže navesti samo

osječne

e koštao iznad

o i e

e e

a e u e a d

i e u o

Page 39: МОDЕLI I BАZЕ PОDАТАKА · HTML (HyperText Markup Language) je veoma jednostavan jezik čije osnove svatko može savladati za par dana, a kasnije je sve stvar prakse. Kad

39  

Pogledi(View) Postoje samo kao definicije upita nad jednom ili više tabela. Pogledi ne čuvaju podatke u sebi (prividne relacije bez vlastitih podataka). Pogledi su virtuelne tabele koje nemaju odgovarajuću fizičku reprezentaciju, već je njihova definicija, u terminima drugih tabela, zapamćena u sistemskom katalogu. Omogućuju

• prilagodenje logičkog modela podataka specifičnim potrebama korisnika • provođenje zaštite protiv neovlaštenog pristupa podacima

Izvršavaju se u trenutku upita pomoću naredbe CREATE VIEW Pogled se briše naredbom DROP VIEW Kreiranje pogleda

Sintaksa: CREATE VIEW [< owner > . ] view_name [ ( column [ ,...n ] ) ] AS select_statement

Primjer: Da biste formirali pogled u bazi antikviteti) koristite naredbu: CREATE VIEW ANTPOGLED AS SELECT ŽELJENIKOMAD FROM PORUDŽBINE; Sada, napišimo upit koji koristi ovaj pogled kao tabelu, pri čemu je tabela predstavlja samo spisak svih željenih komada nameštaja iz tabele Porudžbine:

SELECT IDPRODAVCA FROM ANTIKVITETI, ANTPOGLED WHERE ŽELJENIKOMAD = KOMADNAMEŠTAJA;

Ovaj upit pokazuje sve ID brojeve prodavaca iz tabele Antikviteti, pri čemu komad namještaja u toj tabeli pripada pogledu AntPogled, a koji predstavlja samo sve željene komade nameštaja u tabeli Porudžbine. Rezultujući spisak se formira prolaskom kroz sve komade nameštaja u tabeli Antikviteti, red po red, dok se ne pronađe isti takav u pogledu AntPogled. Pogledi se mogu koristiti za ograničavanje pristupa bazi podataka, isto kao i za pojednostavljivanje složenih upita, što je ovde slučaj.