Entdecken Sie eBooks
Kategorien
Entdecken Sie Hörbücher
Kategorien
Entdecken Sie Zeitschriften
Kategorien
Entdecken Sie Dokumente
Kategorien
http://www.gimeko.edu.rs/wp-content/uploads/2011/12/SqlPriru%C4%8Dnik.pdf
Web serveri razlikuju u detaljima, od programa do programa, ali najvanija karakteristika je da koriste HTTP
protokol.
HTTP: svaki web server program prihvata HTTP zahtjeve od klijenta i daje HTTP odgovore.
HTTP odgovori se sastoje obino od HTML dokumenata, ali to moe biti i bilo koji dokument,
slika, itd... Ako se desi greka prilikom opsluivanja zahtjeva web server mora poslati broj i opis
greke krajnjem korisniku;
U praksi web serveri implementiraju i sljedee funkcije:
- Autorizacija: zahtjev za korisnikim imenom i lozinkom prije nego se dozvoli pristup dijelu ili
cijelom resursu;
-Rukovanje sa statikim ili dinamikim sadrajima podravajui jedno ili vie interfejsa: SSI, CGI,
SCGI, FastCGI, JSP, PHP, ASP, ASP.NET, ServerAPI kao to je NSAPI ili ISAPI, itd...
-HTTPS podrka (SSL ili TLS) za sigurnu ifriranu konekciju na port 443 umjesto uobiajenog
porta 80;
-koriste tzv. princip logiranja (Logging): obino web serveri imaju mogunost prikupljanja detaljnih
informacija o zahtjevima klijenata i odgovorima servera u tzv. log dokumente koji koriste web urednicima za
statistike analize
2
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 razliitim operativnim sistemima UNIX-Linux, Windows.
Kratka istorija razvoja Apache servera
Projekt Apache nastaje 1995. godine, a distribucija (termin distribucija koristi se u znaenju 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, odrane 2000. u Orlandu, Florida. Velika popularnost
ovog softwarea je dokaz njegove kvalitete iako spada u open-source, prema istraivanjima 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 postojeih web stranica.
XAMPP
Postoje "paketi" softwarea kao sto je Xampp koji se osnivaju na Apache serveru koji objedinjuju aplikacije
potrebne za razvoj dinaminih web stranica razvijenih u PHP programskom jeziku.
XAMPP je programski paket koji slui za imitiranje WEBHOST-servera ali na na lokalnom raunaru
(za podrku PHP programskom jeziku ).
Da biste instalirali XAMPP neophodno je da na mrei pronaete instalacioni fajl (potreite na adresi:
http://www.apachefriends.org/en/xampp-windows.html)
Mi emo instalirati XAMPP na WINDOWS operativnom sistemu.
Postoji instalacija i za LINUX.
estitamo, uspeno ste instalirali XAMPP. Na sljedeoj slici vidimo da su Apache i MySql instalirani kao
servis, to znai da se aktiviraju odmah nakon paljenja vaseg raunara.
Uvod u HTML
Da bi nastavili sa radom trebamo znati osnovne HTML-a.
Da bi mogli nastaviti sa radom daemo osakaeni uvid u HTML okruenje.
HTML je programski jezik koji se koristi za kreiranje dokumenata na World Wide Web-u. HTML se koristi
za stvaranje hipertekstualnih datoteka (datoteka koje sadravaju linkove).
HTML (HyperText Markup Language) je veoma jednostavan jezik ije osnove svatko moe savladati za par
dana, a kasnije je sve stvar prakse.
Kad savladamo osnove HTML-a moemo prijei na prouavanje nekog naprednijeg korienja i dizajniranja
u HTML-u.
Kada "surfamo" Internetom i naiemo na neku zanimljivu stranicu , a ne znamo kako je napravljena, njen
izvorni HTML kod moemo pogledati ako u liniji menija odaberemo: View / Source (ili View / Page
Source). Ovo je najbolji nain da nauimo neke nove stvari.
Sve to nam je potrebno da bi napravili jednu Web stranice praktino ve imamo na raunaru. To je prije
svega jedan najobiniji tekst editor kao to je Notepad.
Umjesto Notepada preporuujem Notepad++.
Slijedea stvar koja nam je neophodna je Web Browser (preporuka IE ili Firefox)
Osnovna deklaracija tipa dokumenta
<!DOCTYPE> deklaracija na poetku html dokumenta omoguava web browseru da prikae web stranicu
ispravno, tj da dokument prepozna kao HTML. U dananjim html dokumentima najee 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 preporuuje.
HTML komande
HTML komande se piu u vidu tzv. tag - ova.
Jedan tag je u komanda koja govori naem browseru to i kako napraviti tj. na koji nain prikazati sadraj
naih stranice.
HTML tagovi su "case insensitive" tj. svejedno je da li ih piemo malim ili velikim slovima.
Tagovi se piu unutar oznaka "<" i ">" (bez znakova navoda)
HTML elementi najee dolaze u paru, kao <big> i </big>.
Prvi element nazivamo poetni element, a drugi zavrni element.
Zavrni element ima isti naziv kao i poetni uz razliku to se ispred elementa umee kosa crta (slash)
Tag: <html>.
Ovaj tag se nalazi na poetku svakog HTML dokumenta i on govori naem browseru da je datoteka koju je
upravo poeo uitavati ba HTML dokument i da kao takvog treba i prikazati. Na kraj HTML dokumenta se
stavlja zavrni HTML tag:</html>. Ovaj tag govori browseru da je to kraj naeg HTML dokumenta. Veina
tagova ima i poetni i zavrni tag. Zavrni tag se dobiva dodavanjem znaka "/" i oznaava mjesto na kojem
prestaje djelovanje poetnog taga.
Postoje i tagovi kod kojih ne moramo stavljati zavrni tag kao sto je recimo tag <br> koji slui za prelazak u
novi red (o ovom tagu emo govoriti kasnije u dijelu o formatiranju teksta).
Kreiranje HTML koda korienjem Notepada
Sad je vrijeme da napravimo prvu web stranicu. Otvorimo novi dokument u Notepad-u i upiimo gornju
strukturu HTML dokumenta u kojem emo staviti naslov po elji (npr. nae osobno ime), a izmeu 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 upiimo ime nae prve stranice, a kao ekstenziju otkucajmo .htm ili
.html (npr. "prva.htm").
U padajuoj listi Save as type odaberimo All Files. Stisnite OK i naa prva html stranica je spremna da je
otvori u na web browser.
Ako smo sve ispravno napravili u naslovnici naeg 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 naeg interesovanja, ali su neto to se
podrazumjeva.
Preporuka je da instaliete i naviknete se na okruenje WebExp. , to e vam bitno olakati rad, ali mogue
7
(
Dreaamweaver), pa
p ak i samo
o Notepad.
je da koristiite i neki druugi program (Adobe
Kreiranje HTML koda
a u MS Web
b Expresion
Gore je objaanjeno kakoo se u Notepaadu kreira HT
TML stranicca.
Sad emo too objasniti kaao to uraditi u MS Web E
Expresion.
Pokrenemo Web
Exp
Izbo
or modov
va
m
File izzaberemo HT
TML
Iz menija
kaoo prvi mod izzaberemo Deesign i dobijeemo praznu stranicu
s
U nju upiem
mo
tekst
Promjenimo mod
i izaberemo Code
da vidimo ta
smo uradili (ta je
za nas uradio
Web Exp
Klijentski i serverski skript jezici
Jedan od pravaca razvoja bazira se na razvoju specijalizovanih programskih jezika klijentskih skript jezika,
koji omoguavaju da se izvorni programski kod umetne u HTML Veb stranice, i zatim interpretira i izvrava
u okviru Veb pregledaa.
Jezici ovog tipa su JavaScript (kasnije standardizovan kao ECMAScript), JScript, Visual Basic Script, . . .
Klijentski skriptovi mogu da reaguju na akcije korisnika (pokrete mia, unos sa tastature...) i da na osnovu
toga menjaju i prilagodavaju sadraj Veb stranice u koju su umetnuti. Kako bi ovo moglo da se realizuje,
neophodno je da postoji nain da se iz skript jezika pristupi elementima stranice i u ovom cilju razvijen je
objektni model dokumenta (DOM).
DOM omoguava da skriptovi vide
Kombinovanje HTML-a, CSS-a sa JavaScript-om korienjem DOM-a, ponekad se naziva dinamikih
HTML-om (Dynamic HTML - DHTML).
Za razliku od klijentskih skriptova, koji su se u obliku izvrnog ili kompajliranog koda prenosili na klijentsku
mainu i na njoj izvravali, serverski skriptovi predstavljaju programe koji se izvravaju na serverskoj maini
i rezultat njihovog rada (najee u obliku formirane Veb stranice) se alje klijentu gde se prikazuje.
Za razliku od sluaja klijentskih skriptova kada je klijent morao da bude osposobljen da izvrava preneti
program (npr. da pregleda poseduje mogunost izvravanja JavaScript koda, da je na klijentu instaliran JRE
i slino), da bi klijent mogao da koristi serverske skriptove, potrebno je naee samo da ima elementarne
mogunosti komuniciranja HTTP protokolom i prikazivanja HTML stranica.
9
10
mjesto (u
unutar body strukture) gd
dje se ubacuje PHP kod
Jez
ziak za izbor Code View-a
HP-om je tak
kav da u posttojeu HTML
L strukturu ubacimo
u
PHPP dijelove.
Najei naain rada s PH
Svaki PHP dio zapoinje sa oznakom
m <?php a zaavrava sa ozznakom ?>.
Primjera raddi, unutar body tagova ubacite slijeddeu strukturru:
<?php
p
echo""PHP ispis: moja prva stranica";
?>
Ovaj put sm
mo unutar naaredbe echo ubacili
u
i linkk. Primjetite znakove \ isspred navodnnika. Oni nam
m trebaju jerr
kau naredbbi echo da tuu nije kraj on
noga ta onaa treba ispisaati ve da on
na treba ispissati navodnike (sjetite see
kako se zaddaje link HTM
ML-om).
Ako bismo bili ekstrem
mni u takvoj upotrebi
u
PHP
P-a, tad bism
mo cijelu straanicu mogli staviti unutaar <?php i ?>
>
tagova i svee elemente sttranice ispisaati naredbom
m echo.
To je mogue, no najee nije ba praktino.
p
Nauili smaao kako naprraviti i kako spremiti
s
phpp stranicu.
Isto tako naauili smo kaako provjeritii ta smo to zzapravo naprravili uz pom
mo lokalno iinstaliranog web servera..
Jo jednnu ilustracijuu rada
PHP:
11
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 korienje.
Uniforman je jer se svi podaci i rezultati operacija prikazuju u vidu tabele i omoguava interaktivno i
klasino programiranje.
Sve do verzije SQL:1999 ovaj jezik je bio neproceduralan1, odnosno njime se specificiralo TA, a ne i
KAKO neto treba uraditi. Novije verzije SQL-a imaju mogunosti proceduralnog jezika, narooto PL/SQL.
Kombinovanjem naredbi jezika tree generacije i SQL-a omoguava, sa jedne strane korienje
proceduralnih karakteristika jezika tree generacije (sekvenca, selekcija, iteracija, procedura, podprograma),
a sa druge strane pristup podacima u bazi podataka pomou SQL-a
Do sada su baze podataka bile koriene iz programskih jezika miksanjem naredbi programskog jezika i
upitnog jezika. I mi emo koristiti ovaj pristup koristei MySQL i PHP.
Istorijat
Tvorac 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 poetku 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 istraivakog projekta pod istim nazivom.
Pojava komercijalnih relacionih sistema uveala je znaaj i ubrzala proces standardizacije relacionog upitnog jezika. Prva etapa tog
procesa zavrila 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.
Meutim, 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
ouvanje integriteta baze podataka i povezivanje sa klasinim programskim jezicima. Ta verzija SQL standarda poznata je pod
nazivom SQL-89.
1992. godine usvojena je sljedea bitna revizija standarda, poznata pod nazivom SQL-92 ili SQL-2, kojom je SQL zaokruen kao
programski jezik, a obim standarda uvean est puta u odnosu na polaznu verziju. Naredna verzija SQL standarda usvojena je 1999.
godine.
Iako su poetne verzije SQL-a bile prilino jednostavne, bliske korisniku i u velikoj mjeri deklarativne za SQL:1999 se moe rei da
je kompleksan, proceduralno/deklarativan jezik i da je oznaio prekretnicu i omoguio masovnu upotrebu SQL-a
Postoje razliite verzije SQL jezika Iako je SQL je ANSI (American National Standards Institute) standard..
SQL:2003
Standard SQL:2003 se popularno naziva standardom ispravljanja greaka standarda SQL:1999 (bugfix release - revizija standarda
SQL:1999), osim u domenu podrke XML-u. Uprkos tome, ovaj standard ima i niz novih rjeenja, a glavna su:
Novi tipovi podataka Uklonjeni su BIT i BIT VARYING tipovi zbog nedostatka podrke u implementacijama, a dodata
su tri nova tipa: BIGINT, MULTISET, XML.
Proirenja 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 auriranja 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 vie
dimenzija (npr.datum, mesto, kategorija) u jednom upitu.
Operator WINDOW omogucuje primenu agregatnih funkcija na "pokretni prozor" kroz kolekciju podataka.
Multimedija SQL Standard je proiren 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 podrku XML-u u bazama podataka. Preciznije, ISO/IEC 907514:2006 definie kako se SQL koristi zajedno sa XML-om.
Definie naine za importovanje i skladitenje XML podataka u SQL bazi podataka, kako se manipulie njima u bazi podataka i kako
se objavljuju (publikuju) XML podaci i konvencionalni SQL podaci u XML obliku.
SQL:2006 obezbjeuje mogunost integracije (u aplikaciji) SQL koda i XQuery, XML upitnog jezika (W3C), kao i
proceduralni program predstavlja niz naredbi programskoga jezika iji unaprijed utvreni slijed opisuje uzastopne
korake transformacije ulaznih podataka u traene rezultate; i odgovara moginosti formalzaciije i zapis algoritma
12
p
pproirenja. Da bi se povealaa
U SQL su ukkljueni konceppti objektne teehnologije, mehhanizam trigeraa, rekurzija i proceduralna
funkcionalnost jezika, u SQ
QL je uvedenaa proceduralna nadgradnja SQL-a,
S
koju ug
glavnom ine upravljake struktrure slinee
msih jezika. SQL
L-1999 standard
d definie vie naina koriennja SQL-a.
upravljakim sstrukturama klaasinih program
Dva osnovna naina su direektno (interak
ktivno) korieenje SQL-a i povezivanje
p
SQ
QL-a sa klasinim program
mskim jezicimaa
QL).
(ugraeni SQ
SQL jezici su uglavnom
u
u sklaadu s ANSI staandardom, svi imaju
i
slian sett
Bez obzira kojju verziju i disttribuciju SQL-aa koristil,i svi S
glavnih komanndi (kao to su SELECT, UPD
DATE, DELETE
E, INSERT, WH
HERE) i ponaaaju se na sliann nain.
Relacion
n algebra ii relacion
ni raun
Relaciona aalgebra
Relaciona aalgebra je familija
f
algebri sa dobroo zasnovano
om semantik
kom koja see koristi za modeliranjee
relacija (oobjekata) sm
mjetenih u relacionojj bazi pod
dataka i za
z definisannje upita nad njima..
Relacioni ooperatori: Codd je origin
nalno predloio 8 operato
ora: Restrikcciju (selekcijuu), Projekcijju, Proizvod,,
Uniju, Prjessek, Razliku,, (Prirodno) Spajanje,
S
Dijjeljenje;
Kasnije su dodati operratori: Renam
me, Semijoinn, Extend, Su
ummarize.
Dodatni op
peratori: RE
ENAME - pro
omjena nazivva relacije, SEMIJOIN
S
- Spajanje relaacija A i B projektovano
p
o
na atribute rrelacije A, EXTEND
E
- proiruje
p
relaaciju novim atributom,
a
SU
UMMARIZE
E - omoguaava sabiranjee
po kolonam
ma.
Minimalni skup operatora sadri: restrikciju, projekciju, proizvod, uniju,
u
razliku
ku.
Reelacioni opertori
13
Unija
a
Dijeljenje
ili
AR <promenlljiva> RANG
GES OVER <
<tabela>
RANGEVA
<promenljivva>.<imeatriibuta>
[WHERE<uuslovni izrazz>]
Uslov je taan ako postooji torka u reelaciji R takvva da je za sv
vaki konkretaan par poreenje
A=x tano
Na primjer,
KS INDEKS(200110456),
ISPIT {INDEK
ID_PREDMET
TA ID_PREDM
META(1001)}
ima vrijednostt tano akko postoji torka u isp
pitu koja ima vrrijednost 20110
0456 za atribut indeks
i
i 1001 zaa atribut id_preedmeta
3VL logik
ka (trovallentna log
gika)
Zato nedoostajue vriijednosti? U svakodneevnoj praksii se esto jaavlja problem
m nedostatk
ka podataka::
...datum rooenja nepoznnat... ; ...izz izborne jeddinice XX nedostaju podaaci...
Oigledna jje potreba da
d se indika
ator o nedoostatku vrijeednosti uva
a u bazi, i dda se na od
dgovara-juii
nain vri oobrada takvvih podataka
a. Tako se ddolazi do vieevalentnih lo
ogika u relaciionom modeelu.
Codd je preedloio korienje 4-vallentne logikee jer postojee dvije vrste nedostajuihh vrijednostti: vrijednostt
nepoznata, vrijednost nij
ije primjenljiiva, vrijednoost ne postojii.
Oigledno esto postojji PROBLEMI SA NU
ULL-ama, i to problemi sa proirenj
njem operaciija relacionee
algebre na N
NULL-e:
Deffinisanje opeeracije selekccije: ako ispittujemo neku
u osobinu zap
pisa, kao Boddovi > 40, i za
z neki zapiss
Boddovi su NUL
LL, to da rad
dimo?
15
Baze i re
elacione b
baze osno
ovni term ini i pojm
movi
Ako ste prooitali (i djeelimino shvatili) predhoodno poglavllje daemo jo neke pojjmove za rad
d sa bazamaa
podataka.
Bazu podataaka je zbirk
ka informaciija koje se oorganizovan
ne u tabele i u druge vrsste objekata
a zbog tanoo
odreene naamjere kao tto je pretraiivanje,sortiraanje i obradaa podataka.
Fizika reprrezentacija baze
b
podatakaa se sastoji ood dviju ili viie datoteka na
n disku.
U logikom
m smislu bazaa podataka saastoji se od vveeg broja objekata-tabe
o
ela, indeksa,iitd.
Baza podattaka je skupp povezanih podataka kkoji se nalazze u nekom informacionnom sistemu
u,tj. u nekojj
organizacijii , i ona sadrri podatke koji
k se sastojje iz razliitiih objekata nekog
n
poslovvnog sistemaa (npr. raznee
usluge, poslovni partneeri i sl.). Pod
daci u bazi ppodataka slu
ue za jednu ili vie apliikacija, i nezavisni su o
programimaa u kojima see obrauju, a pristup njim
ma je kontrolisan.
Relacione bbaze podataka su danas najee koritene baze po
odataka.
Relaciona bbaza podatakka se sastoji od skupa raazliitih relaacija (tabela). Tabela odggovara pojm
mu relacije izz
standardnogg (opteg) rellacionog modela baza poodataka.
Entitet (Enntity) Svaku realnu injjenicu ili poojavu, bez obzira
o
na su
utinu nazivvamo entiteto
om. Entitetee
razlikujemo na osnovu osobina:
o
Atrib
buta.
ta je relaccija?
Entitet moemo definissati kao objeekat o kome elimo da saakupljamo in
nformacije, taada je relaciija opis vezee
izmeu dvaa ili vie entitteta.
Jedan red taabele predstaavlja jednu n--torku ili jeddnu pojavu reelacije, to od
dgovara jednnoj pojavi tip
pa entiteta.
Kolona u tooj tabeli ili poolje (field) od
dgovara jednnom atributu (osobini) tip
pa entiteta.
16
d-ova jedne ta
tabele i da see svako poljee
Definicija taabele se u krrajnjoj liniji i svodi na too da se definiie lista field
(field) okaraakterie nizoom osobina. Neke
N
od tih oosobina je neeophodno od
drediti, neke se mogu i p
preskoiti".
Kada se deffiniu sve tabbele na osnov
vu relacione eme, potreb
bno je jo usspostaviti i vveze (relation
nships) meuu
tabelama kooje su u vezzi. Peciznijee, naznaavaa se preko kojih
k
polja su
s tabele u vvezi, da se unutar bazee
podataka brrine i o integrritetu (tanossti) baze poddataka.
Baza podattaka (Databaase DB) Grup
pa tabela poddataka koje sadre
s
srodnee podatke.
DB se moee sastojati od samo jedne taabele (najee to nije sluaj).
Tabela (Table) Grupa slogova
s
podaataka. Svi sllogovi su isto
o organizovaane grupe
podataka - ppolja.
Slog (zapis)) (Record) Jeedinstveni zaapis (vrsta) u tabeli koji se
s sastoji od vie polja
sa podacimaa, u optem slluaju, razliitoga tipa.
Polje (Fieldd) Pojedinanni podatak - sttavka u sloguu.
Primjer: u teelefonskom im
meniku su etirii polja: prezim
me, ime, adresaa i telefonski brroj.
R
Relacioni model
Reelacija
Toorka
Atribut
Domen atributta
eema relacije
K
Kardinalnost
Prrimarni klju
Baza pod
dataka
Tabela
Vrsta (redd u tabeli)
Kolona
Tip podattka kolone skup
s
vaeih vrijednosti
v
(tippova)
Opis tabeele
broj torkii
atribut (ilii kombinacijaa atributa) kojaa jedinstveno identifikuje taabelu
ekvivvalencija: Reelacioni mod
del-Baza pod
dataka
17
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 moe identfiikovati svaki red se naziva primarni klju.
Referencijali integritet je odnos izmeu primarnog kljua (npr. kupca) i vanjskog ili stranog kljua (npr.
ifra dobavljaa).
Praktini primjeri
Zadatak1: Izbor relacija
Ako je neophodno projektovati bazu podataka koja se odnosi na preduzee, prepoznati entitete
i njihova svojstva, koje ete predstaviti relacijama u relacionom modelu, odnosno tabelama u
bazi podataka.
Rjeenje:
Pretpostavimo da preduzee ima vie radnika, i za svakog od njih treba uvati informacije: ime,
matini broj, struna sprema, datum roenja, pol, plata, adresa. Neka je preduzee organizovano u
sektore (sektor ima naziv, broj).
Podaci o radnicima preduzea se mogu predstavljaju relacijom/tabelom RADNIK sa atributima
LIME (lino ime), SSL (srednje slovo), PREZIME, MBR (matini broj), DATRODJ (datum
roenja), POL, PLATA i ADRESA. Nie je prikazana jedna instanca relacije RADNIK (tabela
RADNIK) i jedna instanca relacije ODELJENJE (tabela SEKTOR).
RADNIK
LIME
Ivana
Milan
Ana
Pera
SSL
S
I
P
K
PREZIME
Goci
Savi
Rodi
Kosti
MBR
123456
234567
666777
555333
DATRODJ
15-10-87
01-03-57
03-12-50
31-12-53
POL
PLATA
17000
32000
27000
43000
ADRESA
Nika 4
Humska 2
Savska 34
airska 3
SEKTOR
BRSEK
40
60
80
NAZIV SEKTORA
SBROJ
projektovanje
proizvodnja
razvoj
Domen
Imena Osoba
Prezime Osoba
Maticni Broj
DATRODJ
Datum Rodjenja
POL
PLATA
Pol
PlataRadnika
Znaenje
Skup moguih imena osoba
Skup moguih prezimena osoba
Skup mogunih matinih brojeva
radnika
Mogue vrijednosti za datume roenja
zaposlenih u preduzeu
Pol radnika
Mogue vrednosti plata radnika
ADRESA
AdresaRadnika
18
Definicija domena
Niz karaktera, duine do 15.
Niz karaktera, duine do 15.
Cijeli brojevi, napr. opsega 111111-999999*
Datum, opseg, od 01-JAN-44 nadalje
Karakter (1), vrednost M i
Broj, opseg od minLD do 40000.00, gdje je
minLD minimalni republiki lini dohodak
Niz karaktera (30)
SQL naredbe
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 uobiajeno ne nalazi
If...Then...Else konstrukcija za ispitivanje uslova, a nema ni konstrukciju za logiku strukturu petlje
Do...While ili For...Next.
SQL je uglavnom zasnovan na relacionom raunu, s time da je matematika notacija zamijenjena
naredbama (kljunim-rezervisanim rijeima) nalik na govorni engleski jezik.
Upit se postavlja fleksibilnom naredbom SELECT. Rezultat upita se shvata kao nova privremena relacija,
izvedena iz stalnih.
Najee se SQL razvrstava na tri kategorije naredbi:
1. Naredbe za definisanje podataka (Data Definition Statements) omoguavaju
definisanje resursa i logikog modela relacione baze podataka:
CREATE TABLE kreiranje fizike tabele baze podataka,
CREATE VIEW kreiranje virtuelne imenovane tabele, pogled,
CREATE INDEX kreiranje indeksa nad jednom ili vie 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) omoguavaju
auriranje podataka u irem smislu (izmjenu, dodavanje i brisanje) i izvjetavanje
(pribavljanje novih informacija) iz baze podataka:
SELECT pristup podacima i prikaz sadraja baze podataka,
INSERT unoenje 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');
19
3.
4.
5.
6.
7.
Ako neka tabela sadri ime neke kljune rijei, potrebno ju je oznaiti sa
specijalnim navodnikom: ` . (AltGr+7 na tastaturi) . Jednostavnosti radi,
te navodnike, odnosno takav sadraj 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
omoguavaju definisanje, korienje i zatitu podataka.
Formalno SQL jezik je podijeljen na nekoliko jezikih elemenata odnosno kategorija naredbi:
1. Upiti (Queries), koji vraaju podatke na osnovu odreenih kriterijuma. Ovo je najvaniji element
SQL.
2. Klauzule (Clauses), koje su sastavni dijelovi izjava i upita. (U nekim sluajevima 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 ograniavanje efekata izjava i upita, ili za promene toka
programa.
5. Izjave (Statements), koje mogu da kontroliu transakcije, protok programa, veza, ili dijagnostiku.
Sve ove kategorije emo analizirati u poglavlju SQL upiti, jer korienje klauzula, izjava i predikata
omoguava kreiranje i realizaciju upita.
semantikaskuppravilakojadajuodgovornapitanjetoznainekanaredba
sintaksapravilakojaodreujupripadaliskupsimbolajezikuiline
20
Strukturra SQLa
Definisanje strukture SQ
QL znai deffinisanje:
Dom
mena
Indeksa
Kattaloga
em
ma
Tabbela
Definisanje strukture znnai da smo
o ranije kreirrali model baze
b
podatakka koji nam je to omogu
uio. A opett
model baze podataka nastao je na osnovu anallize problema
a kojeg elim
mo rjeiti uppotrebom bazze podataka.
to smo obaavili prije neggo smo pristu
upili izradi m
modela baze.
Znai prije nego to prristupimo deffinisanju strrukture baze neophodno je uraditi annalizu i napraviti modell
baze, potom
m emo definiisati elementte SQL-a. An
naliza i izrad
da modela su
u temelj SQL
L-a.
Domen
Domeni se definiu kaao skupovi iz
i kojih atrib
buti relacijee uzimaju sv
voje vrijednnosti. Domen
n je u SQL-uu
prost, korisnniki definisan imenovan
n objekat.
Uobiajeno je da se dom
meni podijelee na:
-Predefinissane domenee, domeni ko
oji postoje u jjezicima bazza podataka.
-Semantik
ke domene, koje korisn
nik definie nad predefin
nisanim ili prethodno
p
ddefinisanim semantikim
s
m
domenima uugraujui u definiciju neko ogranieenje i dajui im na taj nnain odreenno znaenje zbog
z
ega see
i nazivaju semantiki. Semantiki
S
domeni se jo nazivaju i apstraktnim
a
ili
i korisnikii definisanim
m domenima..
Semantiki domeni su apstraktni
a
tipovi podatakaa, odnosno objekti koje definie
d
korissnik.
Mada je iz ddefinicije viddljivo da se pod
p domenom
m podrazum
mjeva
neto iri poojam, pojedn
nostavljeno emo smatraati da je:
Doomen = tip po
odataka
5.
6.
7.
8.
vremena (times),
kombinacija datuma i vremena (timestamps),
intervali godina/mjesec (year/month intervals),
intervali dan/vrijeme (day/time intervals).
INTERVAL
YEAR
INTEGER
(INT)
CHARACTER
(CHAR)
SMALLINT
BIT
Tani
BINARY
LARGE
OBJECT
(BLOB)
TIMESTAMP
TIME WITH
TIMEZONE
TIMESTAMP
WITH TIME
ZONE
INTERVAL
MOUNTH
INTERVAL
YEAR TO
MOUNTH
INTERVAL
DAY
INTERVAL
DanDAY TO
vreme(neki
iz grupe) HOUR
INTERVAL
HOUR TO
MINUTE
FLOAT
Kreiranje domena (definisanje tipova podataka)
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 ogranienja>] CHECK (<ogranienje>)] ..
22
Intervalni tipovi
DOUBLE
Priblini
PRECISION
CHARACTER
LARGE
OBJECT(CHAR
LARGE OBJECT,
CLOB)
BIT
VARYING
TIME
Datumski tipovi
REAL
Binarni tipovi
DECIMAL
(DEC)
Tekstualni tipovi
Numeriki tipovi
NUMERIC
CHARACTER
VARYING
(CHAR VARING,
VARCHAR)
Godinamesec
DATE
Indeksi
Indeksi su strukture podataka koje olakavaju 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>, ..]) ;
ema
ema je kolekcija tabela, pogleda, domena, tvrdnji (assertions). ema predstavlja kolekciju svih objekata koji
dijele isti prostor imenovanja. ema moe sadrati jednu ili vie tabela, a svaka tabela moe pripadati logiki
tano jednoj emi.
Svaki objekat (tabela, pogled, itd.) pripada tano jednoj emi. Pod pripadnou se ne podrazumjeva fizika
pripadnost, ve hijerarhijska veza u kojoj, na primjer, ema sadri nula ili vie tabela, a svaka tabela logiki
pripada tano jednoj emi.
ema se moe pretstaviti dijagramima relacija Ali ema se moe pretstaviti i u tekstualnom obliku na
entiteta:
sledei nain:
Kupci (BrojKupaca, Ime, Adresa, Grad)
Porudbine (BrojPorudbine, BrojKupca, Iznos, Datum)
Katalog
Katalog je imenovana kolekcija ema baze podataka u SQL-u.
Baza podataka, pored podataka, sadri i metapodatke, odnosno tzv Rjecnik podataka (Data
Dictionary, Data Directory, Catalog). Katalog baze podataka opisuje posmatranu bazu podataka
(strukturu baze, pravila ouvanja integriteta podataka, prava korienja i slino i moemo ga
shvatiti da je "baza podataka o bazi podataka".
23
Objekti eme se mogu referencirati sa eksplicitnim ili implicitnim nazivom kataloga i eme:
FROM <naziv tabele> -- nekvalifikovan naziv
FROM <naziv seme>.<naziv tabele>-- djelimino kvalifikovan naziv
FROM <naziv kataloga>.<naziv seme>.<naziv tabele>-- potpuno kvalifikovan naziv model objektiveze za relacioni katalog:
Klaster je kolekcija kataloga.
Tabele
Tabele predstavljaju dvodimenzionalne matrice iji redovi predstavljaju naziv i svojstvo objekata smjetenog
u tabelu, a kolone objekata izraena odgovarajuim tipom podataka. Uz pomo jedne n-torke opisan je jedan
objekat.
Kreiranje tabela
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 moe uneti u tabelu ili izbrisati iz nje.
U SQL-u koriste se:
1. Bazna tabela - vrsta tabele za uvanje svih SQL podaka. moe biti:
Perzistentna3 tabela
CREATE TABLE <naziv tabele>
(<naziv kolone1> <tip podatka> NOT NULL],
<naziv kolone> <tip podatka> [NOT NULL], ..)
Podacikojiseuvajuinakonprestankaradaodreenogprogramakomepripadajuinazivajuseperzistentnipodaci
24
2.
3.
Kasnije u sklopu MySQL vie 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
Primjer2
(
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)
);
Izbacivanje tabele
Brisanje sadraja tabele
DELETE TABLE <naziv tabele>;
Brisanje tabele i njenog sadraja
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 vie ne postoji.
Funkcije
SQL podrava rad sa funkcijama. Daemo najeu podjelu SQLfunkcija po kategorijama funkcija:
1. Aritmetike funkcije,
2. Znakovne funkcije,
3. Agregatne funkcije
25
Aritmetik
ke (matema
atike) funk
kcije
Koriste se zza realizacijuu standardnih
h matematikkih operacija nad numerikim tipom ppodataka.
ECT i WHER
RE klauzulam
ma. Na taj nain
n
se kaoo
SQL dozvooljava korienje matemaatikih funkccija u SELE
rezultat preetraivanja mogu
m
prikazzati rezultati izraunavan
nja nekog matematikog
m
g izraza. Kasnije emoo
detaljno obrraditi Select, pa zasad sam
mo pogledajtte, a kasnije detaljno anaalizirajte prim
mjere koji slijjede:
Primjer 1.
Izlazz:
SQL> sele
ect proizvod_id,
round(min_cijena,0))
na
from cijen
where kataloska_cijena>5;
PRO
OIZVOD_ID ROUND(MIIN_CIJENA
A,0)
------------ -----------------100890 46
100890 41
104352 38
104352 41
Primjer 2.
SQL> sele
ect proizvod_id,
5*exp(1+c
cos(min_cijjena/3)) Fu
unkcija
from cijen
na
where kataloska_cijena>50;
Izlazz:
PRO
OIZVOD_ID FUNKCIJA
------------ --------100890 5.1469
974
969
100890 24.639
4397
104352 36.924
2254
104352 22.672
26
Funkcija
LEFT(<string>,X)
RIGHT(<string>,X)
UPPER(<string>)
LOWER(<string>)
INITCAP(<string>)
LENGTH(<string>)
<string>||<string>
LPAD(<string>,X,'*')
RPAD(<string>,X,'*')
SUBSTR(<string>,X,Y)
NVL(<kolona>,<vrijednost>)
Funkcije agregacije
Kao posebnu kategoriju obino se izdvajaju funkcije koje obavljaju agregaciju, mada se one mogu shvatiti i
kao kombinacija znakovnih i matematikih funkcija. Funkcije agregacije su dobile naziv po tome to vre
agregaciju rezultata upita. Korienje ovih funkcija je jednostavno, poto se navode u listi kolona SELECT
klauzule koje se prikazuju.
U najosnovnijem obliku agregatne funkcije vraati e skalarnu vrijednost, a sintaksa je sljedea:
SELECT AgregatnaFunkcija(atribut) FROM tabela
Korienje ovih funkcija je jednostavno, poto se navode u listi kolona SELECT klauzule koje se prikazuju.
Daemo tabelarni pregled najee korienih:
Funkcija
Opis-znaenje
AVG(obl)
SUM(obl)
MIN(obl)
MAX(obl)
COUNT({*|[DISTINCT]obl})
ABS(broj)
MOD(br1, br2)
POWER(br, e)
UPPER(str)
SUBSTRing(str, pos [, d])
CONCAT(str1, str2, str3, ...)
YEAR(obl)
srednja vrijednost
suma svih obeleja
minimalna vrijednost
maksimalna vrijednost
broj pojavljivanja
apsolutna vrijednost
br1 po modulu br2
br na e-ti stepen
u velika slova
podstring od str, sa poz. pos
konkatenacija stringova
vraa godinu iz datuma
Daemo dva primjera za ilustraciju funkcija agregacije (sa istom primjedbom uz mat. f-je; postae jasnije
nakon analize Select upita)
Pr. 1. Napii upit koji odreuje maksimalnu, minimalnu, prosenu i ukupnu platu svih radnika:
SELECT MAX(Plata) AS MaxPlata, MIN(Plata) AS MinPlata,
AVG(Plata) AS ProsPlata, SUM(Plata) AS UkPlata
FROM RADNIK;
27
Klauzula F
FROM
FROM - deefinie tabelee iz kojih se pribavljaju
p
ppodaci za pottrebe generisanja rezultujjue tabele. Klauzula
K
FROM moe da ukljuii jednu ili vie opcionih JJOIN klauzu
ula za poveziivanje tabelaa na osnovu kriterijuma
k
zadatih od sstrane korisnnika
Klauzula FR
ROM specifficira tabele iz
i kojih se prribavljaju podaci. Ukolik
ko se navede vie tabela potrebno
p
je
specificiratii nain spajannja tabela
Kvalifikacioonim izrazom
m zadaju se uslovi
u
selekccije i spajanjaa, odnosno isskazi slini isskazima u reelacionom
raunu.
28
Primjer SE
ELECT / FRO
OM upita
Najjednnostavniji upiit bez selekcij
ije izdvaja saamo kolone...ostavlja onee koje su navvedene, a izba
acuje ostale.
Analiziraem
mo tabelu kooja sadri jed
dinstveni mat
atini broj graaana, imenaa, prezimenaa i adrese zap
poslenih:
mo da hoem
mo da vidite adrese svih zzaposlenih. Koristimo
K
naredbu SELE
ECT:
Pretpostavim
SEL
LECT Ime, Prezime, Adresa, Grad
d, Republik
ka
FRO
OM TabelaA
AdresaRadn
nika;
Da objasnim
mo sada ta ste
s upravo uradili:
u
trailii ste sve pod
datke u tabeli TabelaAdreesaRadnika preciznije,,
traili ste kkolone pod nazivom
n
Imee, Prezime, A
Adresa, Grad
d, Republikaa. Obratite paanju da imeena kolona i
tabela ne saadre razmaake ona see moraju navvesti kao jed
dna rije, kao
o i da se narredba zavraava takom i
zarezom (;).
Opti oblik naredbe SEL
LECT kojom
m se dobijaju svi redovi u tabeli je:
e, ImeKolone, ...
SELECT ImeKolone
FROM ImeTabele;
mena kolona, koristite:
Da biste dobbili sve kolone neke tabeele bez navoenja svih im
SELECT * FROM Im
meTabele;
Klauzula W
WHERE
WHERE - definie preedikat na osn
novu koga see ograniavaa broj vrsta u rezultujuoj
oj tabeli. Ovaa klauzula izz
rezultata eliiminie sve vrste
v
za koje specificiranii predikat ne vraa vrijed
dnost TRUE..
Klauzula W
WHERE speccificira uslov
v na osnovu kkoga se kreirra rezultujua tabela. U rrezultujuu tabelu
t
e bitii
ukljuene saamo one vrstte-kolone, ko
oje zadovoljaavaju specifiicirani uslov. U uslovu see mogu javitii:
x Relacioni operatori
x Logiki opeeratori
x Operator BE
ETWEEN
x Operator IN
N
x Operator LIIKE
x Operator IS
S NULL
29
Relacioni o
operatori
Klauzula W
WHERE SQL
L podrava eest relacionihh operatora koji
k imaju sleedee znaenj
nje:
Veee od
Jeednako
=
>
Maanje ili jednaako od
(
<> Nije jednako (razliito)
<=
Veee ili jednakko od
M
Manje
od
<
>=
Primjeri je
ednostavne
e uslovne se
elekcije (SE
ELECT/FRO
OM/WHERE)
Upite emo postavljati za
z sljedeu taabelu:
30
Klauzula ORDER BY
ORDER BY - koristi se za sortiranje rezultujue tabele. Korisnici specificiraju kolone po kojima se vri
sortiranje kao i smjer sortiranja.
Klauzula ORDER BY specificira redosljed prikazivanja vrste rezultujue tabele, sortiranjem po vrijednosti
nekih kolona u rastui (ASC) (predefinisana vrijednost) ili opadajui redosljed (DESC).
Ukoliko klauzula ODER BY nije navedena vrste u rezultujuoj tabeli su poreane po sluajnom principu i
ne postoji nikakva garancija da e isti upit uvijek generisati rezultujuu tabelu ije su vrste poreane na isti
nain.
Primjer pokazuje SQL upit koji prikazuje podatke o radnicima i sortira ih prema prezimenu u opadajuem i
rastuem redosljedu.
SELECT *
FROM RADNIK
ORDER BY Prezime;
Klauzula GROUP BY
Grupisanje se obavlja prema jednom ili vie atributa iz relacije (ili vie relacija ukoliko su navedene u
FROM clause). GROUP BY clause sadri popis atributa ili izraza prema kojima se obavlja grupisanje.
GROUP BY - grupie vrste koje u odreenim kolonama imaju identine 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
Postavljanje uslova nad grupom zapisa Having klauzula
Za postavljanje uslova nad grupom zapisa koristi se HAVING clause.
HAVING - definie predikat na osnovu koga se elimiu vrste nakon to je klauzula GROUP BY
primjenjena na rezultujuu tabelu.
Dok se uz pomo WHERE clause izdvajaju one n-torke koje e formirati grupe definisane u GROUP BY
clause, HAVING clause slui 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 poloenih ispita, ali samo onih predmeta za koje je poloeno vie od dva
ispita.
SELECT sifPred, COUNT(*) FROM ispit
WHERE ispit.ocjena > 1
GROUP BY sifPred
HAVING COUNT(*) > 2
31
P
Primjer2
SELECT *
FROM RAD
DNIK
WHERE Prezime = "Petrovi";
S
SELECT *
F
FROM RAD
DNIK
W
WHERE Prrezime = "P
Petrovi" AN
ND Plata >= 40000;
Primjer3
SELECT *
DNIK
FROM RAD
WHERE Prezime = "Petrovi" OR
O Prezime
e = "Jovano
ovi";
32
Operator IN
Operator IN zamenjuje viestruku upotrebu operatora OR i = . Operator NOT IN prikazuje sve vrste osim
onih odreenih IN listom.
Primjer: Korienjem 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");
Operator BETWEEN
Operator BEETWEEN zamjenjuje viestruku upotrebu operatora AND i =.
Ovaj operator omoguava 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 (ukljuujui i
granice opsega) moemo iskoristiti operator BETWEEN
SELECT *
FROM RADNIK
WHERE Plata BETWEEN 30000 AND 40000;
Operator LIKE
Operator LIKE omoguava poreenje vrijednosti kolone sa zadatim ablonom.
Kod definisanja ablona koristi se procenat (%) i znak pitanja (?). Procenat (%) predstavlja bilo koji mogui
znak (broj, slovo, interpunkcijski znak) ili skup znakova. Znak pitanja (?) zamenjuje samo jedan znak.
Primjer:
SELECT *
FROM RADNIK
WHERE Prezime LIKE "J*";
Za nalaenje svih radnika koji sadre slovo "J" negdje u prezimenu mogao bi se koristiti ablon "*J*".
Obratite panju da se ne pravi razlika izmeu malih i velikih slova.
Operator NOT LIKE prikazuje sve vrste koje ne odgovaraju prethodno datom opisu, tj. za prethodni sluaj,
sve radnike koji nemaju slovo "J" u svom prezimenu.
Operator IS NULL
Operator IS NULL se koristi za poreenje sa NULL vrijednostima. Treba voditi rauna da se na NULL
vrijednosti ne moe primjeniti ni jedan relacioni operator.
Moe se samo proveravati da li kolona ima NULL vrijednost ili nema.
33
Primjer koji pokazuje SQL upit koji izdvaja podatke o svim radnicima kojima nije definisan datum roenja
odnosno datum roenja ima NULL vrijednost.
SELECT *
FROM RADNIK
WHERE DatRodj IS NULL;
34
Spojevi (Joins)
Jedna od najveih prednosti jezika SQL je njegova mogunost da spaja i manipulie podacima koji se nalaze
u vie razliitih izvornih tabela. U velikoj veini sluajeva upiti se ne izvravaju samo nad jednom tabelom,
ve nad vie njih koje je potrebno na neki od naina, spojiti.
Da nema ove mogunosti, trebali bi smo da sve mogue podatke stavimo u jednu jedinu tabelu. i tako bismo
ostali bez relacionog modela.
Pri objanjenju upita sreli smo se sa potrebom spajanje dve ili vie tabela. SQL to realizuje sa naredbom
JOIN. Najee se koristi kao podupit u izrazu FROM.
Spajanje tabela se obino vri na osnovu kolona koje sadre isti tip podataka. Najee spajanje je izmeu
primarnog kljua jedne tabeli i stranog kljua druge tabele tj. tzv. "foreign relationship" izmeu tabla.
Postoje etiri tipa JOIN operacije, ali je tzv. unutranje spajanje ili "INNER JOIN" najee korieno.
INNER JOIN - spajanje dvije tabele koje imaju zajednike vrijednosti u nekim od svojih kolona.
Primjera radi, moemo 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 sledei primjer:
SELECT Korisnici. ImeKompanije, Korisnici. BrojTelefona, Narudzbe. DatumNarudzbe
FROM Korisnici LEFT JOIN Narudzbe
ON Customers. KorisnikID = Narudzbe. KorisnikID
U ovom primjeru rezultat pretraivanja e sadrati sve korisnike, bez obzira da li imaju nula, jednu ili vise
narudbi. Korisnici sa vise narudbi bie prikazani u rezultujuoj tabeli onoliko puta koliko narudbi imaju.
CROSS JOIN je takoe poznato kao Kartazijanski-Dekartov proizvod. Rezultat koji dobijemo je
kombinacija svih vrsta jedne tabele sa svim vrstama druge tabele.
Primjera radi, moemo 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 sluaj kada spajamo kolonu samu sa sobom. Recimo da imamo tabelu "Radnici" koja ima
klju "RadnikID". elimo da napravimo listu svih radnika, sa imenima njihovih menadera. Naravno,
menader je takoe 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
35
36
Primjer slo
oenog upiita
Analiziraem
mo bazu koja sadri tri taabele:
Ko je kupio stolicu?
Da biste dobbili imena onnih koji su ku
upili stolicu, koristite ovaaj upit:
SEL
LECT PREZIIMEVLASNIIKA, IMEVL
LASNIKA
FROM VLASNICIA
V
ANTIKVITET
TA, ANTIKV
VITETI
WHERE
E IDKUPCA = IDVLASN
NIKA AND KOMADNAM
METAJA = 'stolica';
Obratite panju na sledeee injenicee o ovom upittu: obje tabeele koje su u relaciji
r
naved
edene su u kllauzuli
FROM nareedbe SELEC
CT.
U klauzuli W
WHERE prim
mjetite da usslov KOMAD
DNAMETA
AJA = 'stolicca'
ograniava izbor na onee koji su kupiili (a u naem
m primjeru, stoga
s
posedujju) stolicu.
Drugo, obraatite panju kako
k
se uspostavlja odnoos izmeu kolona sa ID brrojevima iz ddve tabele up
potrebom
uslova IDK
KUPCA = IDV
VLASNIKA
A. Samo ako se podudarajju ID brojevii u tabelama i kupljen ko
omad
nametaja jee stolica (zboog operatora AND), prikaazae se imeena iz tabele.
Rezultat ovoog upita su dva
d imena: Simonovi, B
Boban i Filipo
ovi, Sima
Koristei zaapis sa takaama da bistee izbjegli dvoosmislenost, ispred imenaa kolona moete pisati im
mena tabela:
SELE
ECT VLASN
NICIANTIK
KVITETA.P
PREZIMEVLASNIKA,
VLASN
NICIANTIK
KVITETA.I MEVLASNIKA
FROM
M VLASNICIANTIKVITE
ETA, ANTIK
KVITETI
WH
HERE ANTIK
KVITETI.IDK
KUPCA = VLASNICIAN
V
NTIKVITETA
A.IDVLASNIIKA
AND
D KOMADNAMETAJA = 'stolica';;
Meutim, kkako su u tabelama imenaa kolona razl iita, ovo nijje bilo beoph
hodno.
Napravite sspisak svih vlasnika
v
po abecednom
m redu prezim
mena.
SEL
LECT DISTIINCT IDPRO
ODAVCA, P REZIMEVLA
ASNIKA, IM
MEVLASNIKA
A
FRO
OM ANTIKV
VITETI, VLA
ASNICIANTIIKVITETA
WH
HERE IDPRO
ODAVCA = IDVLASNIK
KA
ORDER BY PREZIMEVLAS
SNIKA, IME
EVLASNIKA;
Ko je poru
uio neto to
se nudi?
?
Napravite uupit koji prikkazuje prezim
mena onih vllasnika koji su
s poruili neto
n
i njihovvu porudbin
nu, pri emuu
se daju sam
mo one poruddbine koje se mogu zaddovoljiti (to jest, postoji prodavac kooji je vlasnik
k poruenogg
komada nam
metaja):
37
SELECT VL
L.PREZIMEV
VLASNIKA Prezime, PO
OR.ELJENIKOMAD Po
oruen kom
mad
FROM POR
RUDBINE POR, VLASNICIANTIK
KVITETA VL
WHERE PO
OR.IDVLASN
NIKA = VL..IDVLASNIK
KA
AND
D POR.ELJJENIKOMAD
D IN
(SELEC
CT KOMAD
FROM ANTIKVITE
A
TI);
38
Pogledi (View)
Postoje samo kao definicije upita nad jednom ili vie tabela. Pogledi ne uvaju podatke u sebi (prividne
relacije bez vlastitih podataka). Pogledi su virtuelne tabele koje nemaju odgovarajuu fiziku
reprezentaciju, ve je njihova definicija, u terminima drugih tabela, zapamena u sistemskom katalogu.
Omoguuju
prilagodenje logikog modela podataka specifinim potrebama korisnika
provoenje zatite protiv neovlatenog pristupa podacima
Izvravaju se u trenutku upita pomou naredbe CREATE VIEW
Pogled se brie 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 PORUDBINE;
Sada, napiimo upit koji koristi ovaj pogled kao tabelu, pri emu je tabela predstavlja samo spisak svih
eljenih komada nametaja iz tabele Porudbine:
SELECT IDPRODAVCA
FROM ANTIKVITETI, ANTPOGLED
WHERE ELJENIKOMAD = KOMADNAMETAJA;
Ovaj upit pokazuje sve ID brojeve prodavaca iz tabele Antikviteti, pri emu komad namjetaja u toj tabeli
pripada pogledu AntPogled, a koji predstavlja samo sve eljene komade nametaja u tabeli Porudbine.
Rezultujui spisak se formira prolaskom kroz sve komade nametaja u tabeli Antikviteti, red po red, dok se
ne pronae isti takav u pogledu AntPogled. Pogledi se mogu koristiti za ograniavanje pristupa bazi
podataka, isto kao i za pojednostavljivanje sloenih upita, to je ovde sluaj.
39