Sei sulla pagina 1di 15

MySQL teorija

SQL (Stuctiured Query Language) je standardni relacioni upitni jezik (ANSI - American
National Standards Institute - standard). Oaj jezik se koristi za pristup i manipulaciju sistemima za
upraljanje !azom podataka ("#$S ("ata#ase $anagement System))% &to naj'e&(e podrazumea
'itanje i izmenu podataka u razli'itim !azama podataka.
Osnovne karakteristike SQL-a
). Jednostavnost i jednobraznost - pri kori&(enju *a!ela (relacija) se kreira jednom
izr&nom nared!om. Odma+ po kreiranju ta!ela je raspolo,ia za kori&(enje. Si
podaci memorisani su u ta!elama i rezultat !ilo koje operacije se logi'ki prikazuje u
o!liku ta!ele.
-. Mogunost interaktivnog i klasinog (aplikativnog) prograiranja. .oriste(i
SQL do!ijaju se odgoori na trenutne% unapred ne predidene za+tee ili se SQL
!lokoi /ugra0uju/ u klasi'ni i&i programski jezik (1O2*2AN% 3O#OL. 4L5I% 3)
omogu(uju(i klasi'nu o!radu gde korisnik same aplikacije naj'e&(e uop&te nije ni
sestan da koristi SQL.
6. !epro"eduralnost (tj. proceduralnost u minimalnom stepenu). Ni za jedan jezik se
ne mo,e re(i da je potpuno neproceduralan% e( da je neproceduralan u e(em ili
manjem stepenu. SQL je u elikoj meri neproceduralan jer de7ini&e #$%% a ne
&%&O8 koji podaci se dele% koje ta!ele se re7erenciraju i koji usloi tre!a da !udu
ispunjeni% !ez precizne speci7ikacije procedure za do!ijanje deljeni+ podataka.
4reciznije re'eno SQL je na i&em niou apstrakcije nego klasi'ni i&i programski
jezici% odnosno mnogi podjezici relacioni+ sistema za upraljanje !azama podataka
koji se 'esto koriste.
Osnovne ogunosti SQL-a su'
). SQL omogu(aa pristup !azi podataka
-. SQL je jedan od ANSI standardardni+ racunarski+ jezika
6. SQL mo,e da izr&aa upite nad !azom podataka
9. SQL mo,e da prikazuje podatke iz !aze podataka
:. SQL mo,e da unosi noe podatke u !azu podataka
;. SQL mo,e da o!ri&e postoje(e zapise iz !aze podataka
<. SQL mo,e da izmeni podatke u !azi podataka
(e)ii rada SQL podr,aa da re,ima rada sa !azama podataka8
*nteraktivni8 korisnik zadaje jednu po jednu SQL nared!u% preko tastature a
rezultati se prikazuju na monitoru% pristup #4 je ograni'en jedino praima
korisnika.
+rograski (#A3=)8 korisnik pokre(e program u kome su ugra0ene SQL nared!e%
pristup #4 je ograni'en pored praa korisnika i sadr,ajem programa koji se pokre(e.
SQL $*+O,* +O-%$%&%
$ySQL "#$S podr,aa e(i !roj tipoa podataka koje mo,emo srstati u tri osnone
kategorije8
Numeri'ki tipoi podataka
>remenski tipoi podataka
#inarni i tekstualni tipoi podataka
./ !ueriki tipovi podataka
$yS?l u potpunosti podr,aa SQL standard ezan za numeri'ke tipoe podataka. @
numeri'ke tipoe podataka spadaju celo!rojne rednosti (IN*ABA2% S$ALLIN*% "A3I$AL i
N@$A2I3) kao i aproksimatine rednosti (1LOA*% 2AAL i "O@#LA 42A3ISION). Sinonim za
IN*ABA2 je IN* dok je sinonim za "A3I$AL "A3.
0/ $ipovi podataka vezani za datu i vree
@ tipoe podataka namenjeni+ skladi&tenju rednosti ezani+ za reme spadaju8
"A*A*I$A
"A*A
*I$A
*I$AS*A$4
CAA2
Saki od naedeni+ tipoa podataka ima sopsteni skup alidni+ rednosti kao i DnulaE
rednost koja zamenjuje une&ene rednosti koje nisu alidne. *ip *I$AS*A$4 poseduje
automatsko pona&anje tj. automatski unosi rednost sa sistemskog 'asonika.
Naedeni tipoi podataka ezani za datum i reme nemaju speci7i'ne parametre osim tipoa
*I$AS*A$4 i CAA2 koji mogu imati parametar Dlengt+E.
4odrazumeana rednost parametar Dlengt+E kod tipa *I$AS*A$4 je )9 a mo,e !iti i
dodatno naedena8
F )9 (7ormat CCCC$$""==$$SS)
F )- (7ormat CCCC$$""==$$)
F )G (7ormat CCCC$$""==)
F H (7ormat CCCC$$"")
F ; (7ormat CCCC$$)
F 9 (7ormat CCCC)
F - (7ormat CC
1/ 2inarni i tekstualni tipovi podataka
@ tipoe podataka namenjeni+ skladi&tenju !inarni+ i tekstualni+ rednosti spadaju8
F 3=A2 i >A23=A2
F #INA2C i >A2#INA2C
F #LO# i *AI*
F AN@$ i SA*
34%( i ,%(34%( tipoi podataka su namenjeni za skladi&tenje kra(i+ nizoa karaktera.
O!a tipa imaju parametar Dlengt+E (npr. ime 3=A2(-G)% prezime >A23=A2(6G)) koji kod 3=A2
tipa mo,e !iti numeri'ka rednost u opsegu od G do -:; a kod >A23=A2 tipa od G do ;:.:6;.
Osim razlike u du,ini stringa koji se skladi&ti% osnona razlika izme0u oi+ tipoa je na'in na koji
se podaci skladi&te u !azi. Naime% rednost parametra Dlengt+E se kod tipa 3=A2 koristi stati'ki tj.
razlika izme0maksimalne du,ine i unete du,ine stringa se popunjaa znakom razmaka. .od
>A23=A2 tipa se du,ina prilago0aa unetoj du,ini stringa.
2*!%(5 i ,%(2*!%(5 tipoi su eoma sli'ni 3=A2 i >A23=A2 tipoima sa tom
razlikom &to su #INA2C i >A2#INA2C tipoi namenjeni skladi&tenju !inarni+ podataka. Oa da
tipa podataka su namenjena uglanom za skladi&tenje manji+ koli'ina podataka. Ja skladi&tenje
7ajloa u !azi podataka se radije koristi #LO# tip podataka.
2LO2 tip podataka (#inary Large O#ject) i njegoe podarijante (*INC#LO#% #LO#%
$A"I@$#LO#% i LONB#LO#) su namenjene za skladi&tenje !inarni+ nizoa.
$67$ tip podataka i njegoe podarijante (*INC*AI*% *AI*% $A"I@$*AI*% i
LONB*AI*) su namenjene za skladi&tenje nizoa karaktera razli'ite eli'ine. #LO# i *AI*
tipoi podataka ne mogu imati /de7ault/ rednosti.
6!8M tip podataka je namenjen za skladi&tenje tekstualni+ rednosti s tom razlikom da se
rednosti koje se unose moraju !iti na listi rednosti koja se kreira pri de7inisanju polja (npr. godina
AN@$(/pra/% /druga/% /treca/)). Lista dozoljeni+ elemenata kod AN@$ tipa podataka je
ograni'ena na maksimalno ;:.:6; elemenata.
S6$ tip podataka je sli'an AN@$ tipu podataka s tom razlikom da je lista dozoljeni+
elemenata ograni'ena na ;9 elementa kao i da postoje odre0ene razlike pri indeksiranju elemenata liste.
MySQL koande
-prieri-
Ja po'etak otorite $ySQL command line client. KindoLs korisnici mogu na(i pre'icu u
start meniju ili u 7olderu kome je $ySQL instaliran.
.od8
Anter passLord8 MMMMMMM
Kelcome to t+e $ySQL monitor. 3ommands end Lit+ N or Og.
Cour $ySQL connection id is )
Serer ersion8 :.).6)-community $ySQL 3ommunity Serer (B4L)
*ype P+elpNP or PO+P 7or +elp. *ype POcP to clear t+e !u77er.
mys?lQ
.orisnici neke od distri!ucija LinuR operatinog sistema (e u s+ell-u ukucati sledecu
komadu8
.od8
s+ellQ mys?l -+ ime+osta -u user -p
Anter passLord8 MMMMMMMM
Kelcome to t+e $ySQL monitor. 3ommands end Lit+ N or Og.
Cour $ySQL connection id is -:66H to serer ersion8 :.G.<H-standard
*ype P+elpNP or PO+P 7or +elp. *ype POcP to clear t+e !u77er.
mys?lQ
Ono &to je !itno napomenuti je da su koande koje u ,a ovde ispisivati9 iste za bilo
koji siste na koe je MySQL instaliran. .omande nemaju nikake eze sa operatinim
sistemom% tako da se dole naedene komande mogu koristiti i LindoLs i linuR korisnici.
Ja po'etak (emo proeriti erziju na&e !aze podataka. @ promptu($ySQL klijentu)
ukucajte S6L63$ ,6(S*O!()9 38((6!$:-%$6;.
.od8
mys?lQ SALA3* >A2SION()% 3@22AN*S"A*AN
T------------------T--------------T
U >A2SION() U 3@22AN*S"A*A U
T------------------T--------------T
U :.).6)-community U -GGV-G--)G U
T------------------T--------------T
) roL in set (G.G6 sec)
mys?lQ
Slede(e &to (emo uraditi je pregled !aza koje trenutno imamo. .omanda je S4O<
-%$%2%S6S;
.od8
mys?lQ S=OK "A*A#ASASN
T--------------------T
U "ata!ase U
T--------------------T
U in7ormationSsc+ema U
U joom) U
U mys?l U
U sm7 U
U test U
T--------------------T
: roLs in set (G.GG sec)
mys?lQ
Wo& jedna rlo !itna star. .omande se ne moraju kucati elikim sloima(ja to radim z!og
lak&eg o!ja&njaanja i preglednosti)% ali posle skoro sake komande morate stai ta'ku-zarez(znak.
Ja komande tipa Q@I* i @SA oo nije neop+odno% ali u sakom slu'aju ne(e &koditi.
Sada (emo pre(i na konkretne stari. Naprai(emo jednu !azu komandom 3(6%$6
-%$%2%S6;
.od8
mys?lQ 32AA*A "A*A#ASA !aza)N
Query O.% ) roL a77ected (G.G- sec)
mys?lQ
4o&to smo kreirali !azu% sada (emo napraiti jednu ta!elu unutar te !aze. "a !i smo to
uradili% moramo pro naglasiti koju (emo !azu da koristimo. Ja to nam slu,i komanda 8S6.
.od8
mys?lQ @SA !aza)N
"ata!ase c+anged
mys?lQ
.ako smo sada pristupili !azi% pro (emo proeriti koje se ta!ele postoje u toj !azi.
.omanda je8 S4O< $%2L6S;
3itat8
mys?lQ S=OK *A#LASN
Ampty set (G.GG sec)
mys?lQ
Ono &to je sada naj!itnije je struktura ta!ele koju (emo napraiti. $orate da odredite koje (e
in7ormacije sadr,ati ta ta!ela% a na osnou toga i koje (e kolone imati i koji tip in7ormacija (e se
pamtiti u poljima. Iako oo na as mo,e da deluje z!unjuju(e% ne !rinite. Wa (u za oaj tutorial
napraiti ta!elu koja (e sadr,ati imena prijatelja% pol% datum rodjenja i grad u kojem ,ii sako od
nji+.
.ako napraiti ta!elu koja je nama potre!naX Lako. .omanda je 32AA*A *A#LA
imeta!eleN a prate je in7ormacije o kolonama u kojima (e se upisiati podaci. Ja sako polje u ta!eli
moramo de7inisati tip kolone u kojoj se polje nalazi. "akle% u na&em slu'aju ima(emo kolone Ime%
4ol% "atum i Brad. Ja kolone Ime i Brad (emo staiti ,%(34%((1=) tip polja% za datum -%$6% a
za pol 34%((.). >ar3+ar i 3+ar polja se koriste za polja u koja se unose sloa% a razlika je u tome
&to u koloni koja je de7inisana sa ,ar3>ar du,ine re'i mogu !iti razli'ite% dok kod 3+ar kolone se
re'i u poljima moraju !iti iste du,ine. -%$6 je logi'no za polja u kojima se upisuju datumi.
Wo& jedna rlo !itna star% ako je komanda preduga% mo,emo napisati samo jedan njen deo% i
pre(i u noi red kada stisnemo enter na tastaturi. Ono &to se ukuca u noom redu (e $ySQL s+atiti
kao nastaak komande iz pret+odnog reda. .ada se u jednom od redoa kao poslednji znak stai ;
to (e zna'iti da je komanda gotoa% i $ySQL (e po'eti da je izr&aa.
"eluje malo komplikoano% ali posle par primera (e >am se !iti jasno. "akle ukucajte
slede(i kod8
.od8
mys?lQ 32AA*A *A#LA prijatelji (ime >A23=A2(6G)% grad >A23=A2(6G)%
-Q pol 3=A2())% datum "A*A)N
Query O.% G roLs a77ected (G.)) sec)
mys?lQ
Sada (emo proeriti kako izgleda na&a ta!ela komandom -6S3(*26 imeta!eleN
.od8
mys?lQ "AS32I#A prijateljiN
T-------T-------------T------T-----T---------T-------T
U 1ield U *ype U Null U .ey U "e7ault U ARtra U
T-------T-------------T------T-----T---------T-------T
U ime U arc+ar(6G) U CAS U U N@LL U U
U grad U arc+ar(6G) U CAS U U N@LL U U
U pol U c+ar()) U CAS U U N@LL U U
U datum U date U CAS U U N@LL U U
T-------T-------------T------T-----T---------T-------T
9 roLs in set (G.G6 sec)
mys?lQ
>idite da je za sako polje de7ault ili prede7inisana rednost !8LL% odnosno prazno. Sada
(emo u!aciti neke podatke u ta!elu. Ja unos podataka koristimo komandu *!S6($ *!$O
ietabele/
.od8
mys?lQ INSA2* IN*O prijatelji
-Q >AL@AS (P$ilosP%P#eogradP%PmP%P)VH:-G--)6P)N
Query O.% ) roL a77ected (G.G6 sec)
mys?lQ
4odaci koji se unose moraju !iti napisani izmedju P znakoa% moraju se unositi po onom redu
po kojem smo praili kolone u ta!eli% i moraju !iti u 7ormatu koji smo naeli pri pralejnju ta!ele.
imajte u idu da se datumi unose u 7ormatu yyyy-mm-dd% dakle godina% mesec pa dan.
Sada proerite soju ta!elu komandom S6L63$ ? @(OM prijatelji;
.od8
mys?lQ SALA3* M 12O$ prijateljiN
T-------T---------T------T------------T
U ime U grad U pol U datum U
T-------T---------T------T------------T
U $ilos U #eograd U m U )VH:-G--)6 U
T-------T---------T------T------------T
) roL in set (G.GG sec)
mys?lQ
Oom komandom izlistaamo se podatke koji se nalaze u jednoj ta!eli. Ako +o(emo da
pogledamo samo one prijatelje koji su recimo mu&kog pola(koji imaju odre0enu rednost u nekoj
od kolona)% koristi(emo komandu S6L63$ ? @(OM ietabele <46(6 iekolone A
BvrednostB;
.od8
mys?lQ SALA3* M 12O$ prijatelji K=A2A pol Y PmPN
T-------T---------T------T------------T
U ime U grad U pol U datum U
T-------T---------T------T------------T
U $ilos U #eograd U m U )VH:-G--)6 U
T-------T---------T------T------------T
) roL in set (G.GG sec)
mys?lQ
@ slede(em primeru !i(e prikazan postupak praljenja ta!ele% upotre!a primarnog klju'a u
$ySQL-u i upotre!a komandi za pretra,ianje odonsno iz!or podataka koji (e !iti prikazani.
*a!ele koja je napralje naprikazana je ispod teksta.
rb/ naziv "ena koli"ina Celja+orekla
). Auspu+ 6V:;.H9 6 *urska
-. 1ilter ulja H<V.-6 : Sloenija
6. 1ilter azdu+a :HV.)- H .ina
9. @lje AL1 -HV.GG ; 1rancuska
:. @lje AL1 A9GK 6:;.6V )G 1rancuska
;. "i+tung glae );V-.)H 9 Nemacka
Ja praljene oe ta!ele primanen je slede(i skup komandi8
32AA*A "A*A#ASA prodanicaN
@SA prodanicaN
32AA*A *A#LA magacin(r! S$ALLIN*(:) NO* N@LL A@*OSIN32A$AN*%
nazi >A23=A2(6G)%cena "A3I$AL()G%-)% kolicina IN*% Jemlja4orekla >A23=A2(6G)%
42I$A2C .AC(r!))N
"AS32I#A magacinN
INSA2* IN*O magacin(nazi% cena% kolicina% Jemlja4orekla)
>AL@A(PAuspu+P% 6V;:.H9% 6% P*urskaP)N
INSA2* IN*O magacin(nazi% cena% kolicina% Jemlja4orekla)
>AL@A(P1ilter uljaP% H<V.-6% :% PSloenijaP)N
INSA2* IN*O magacin(nazi% cena% kolicina% Jemlja4orekla)
>AL@A(P1ilter azdu+aP% :HV.)-% H% P.inaP)N
INSA2* IN*O magacin(nazi% cena% kolicina% Jemlja4orekla)
>AL@A(P@lje AL1P% -HV.GG% ;% P1rancuskaP)N
INSA2* IN*O magacin(nazi% cena% kolicina% Jemlja4orekla)
>AL@A(P@lje AL1 A9GKP% 6:;.6V% )G% P1rancuskaP)N
INSA2* IN*O magacin(nazi% cena% kolicina% Jemlja4orekla)
>AL@A(P"i+tung glaeP% );V-.)H% 9% PNemackaP)N
SALA3* M 12O$ magacinN
4re sega potre!no je indenti7ikoati primarni klju'% u na&em slu'aju to je polje rb/ Ja
primarni klju'% rb% iskori&(ene je tip podatka SM%LL*!$ (preporuka je da se u $ySQL-u za
primarni klju' koriste podaci tipa IN* i njegoe arijante). .ako !i o!ez!edili da primarni klju'
nema de7inisanu rednost iskori&(ena je komanda !O$ !8LL% dok se za automatsko
inkrementiranje (nT)) redsnoti polja r! koristi komanda %8$O:*!3(6M6!$/ 4rilikom
praljenja polja D3enaE de7inisan je tip podatka -63*M%L(.=90)/ Oo zna'i da (e u polje mo(i da
se upi&e decimalna rednost sa deset ci7ara ispred i de ci7re iza decimalnog zareza.
Nakon izr&enja seta komandi u $ySQL prozoru pojai(e se slede(i tekst8
mys?lQ source c85skript5mag.s?lN
Query O.% ) roL a77ected (G.GG sec)
"ata!ase c+anged
Query O.% G roLs a77ected (G.G- sec)
T---------------T---------------T------T-----T---------T----------------T
U 1ield U *ype U Null U .ey U "e7ault U ARtra U
T---------------T---------------T------T-----T---------T----------------T
U r! U smallint(:) U NO U 42I U N@LL U autoSincrement U
U nazi U arc+ar(6G) U CAS U U N@LL U U
U cena U decimal()G%-) U CAS U U N@LL U U
U kolicina U int())) U CAS U U N@LL U U
U Jemlja4orekla U arc+ar(6G) U CAS U U N@LL U U
T---------------T---------------T------T-----T---------T----------------T
: roLs in set (G.GG sec)
Query O.% ) roL a77ected (G.G) sec)
Query O.% ) roL a77ected (G.GG sec)
Query O.% ) roL a77ected (G.GG sec)
Query O.% ) roL a77ected (G.GG sec)
Query O.% ) roL a77ected (G.GG sec)
Query O.% ) roL a77ected (G.GG sec)
T----T----------------T---------T----------T---------------T
U r! U nazi U cena U kolicina U Jemlja4orekla U
T----T----------------T---------T----------T---------------T
U ) U Auspu+ U 6V;:.H9 U 6 U *urska U
U - U 1ilter ulja U H<V.-6 U : U Sloenija U
U 6 U 1ilter azdu+a U :HV.)- U H U .ina U
U 9 U @lje AL1 U -HV.GG U ; U 1rancuska U
U : U @lje AL1 A9GK U 6:;.6V U )G U 1rancuska U
U ; U "i+tung glae U );V-.)H U 9 U Nemacka U
T----T----------------T---------T----------T---------------T
; roLs in set (G.GG sec)
mys?lQ
4ra komanda% mys?lQ source c85skript5mag.s?lN se koristi za u'itaanja skrip 7ajla .s?l. Oaj
7ajl sadr,i komande za kreiranje ta!ele.
S6L63$
.omandom SALA3* mo,e se izr&iti iz!or podataka% iz ta!ele% koje ,elite da prika,eta. Na
dalje (e !iti prikazano nekoliko arijani oe komande kao i rezultat njenog izr&enja. Se komande
!i(e izr&ene nad pret+odno kreiranom ta!elom magacin.
Ja prikaz cele ta!ele koristi se komanda SALA3* M 12O$ magacinN
T----T----------------T---------T----------T---------------T
U r! U nazi U cena U kolicina U Jemlja4orekla U
T----T----------------T---------T----------T---------------T
U ) U Auspu+ U 6V;:.H9 U 6 U *urska U
U - U 1ilter ulja U H<V.-6 U : U Sloenija U
U 6 U 1ilter azdu+a U :HV.)- U H U .ina U
U 9 U @lje AL1 U -HV.GG U ; U 1rancuska U
U : U @lje AL1 A9GK U 6:;.6V U )G U 1rancuska U
U ; U "i+tung glae U );V-.)H U 9 U Nemacka U
T----T----------------T---------T----------T---------------T
; roLs in set (G.GG sec)
SALA3* M 12O$ magacin K=A2A r!Y)N
mys?lQ select M 7rom magacin L+ere r!Y)N
T----T--------T---------T----------T---------------T
U r! U nazi U cena U kolicina U Jemlja4orekla U
T----T--------T---------T----------T---------------T
U ) U Auspu+ U 6V;:.H9 U 6 U *urska U
T----T--------T---------T----------T---------------T
) roL in set (G.GG sec)
SALA3* M 12O$ magacin K=A2A(
(r!Z) AN" r!Q6)
O2
(r!Q6 AN" r!Z:)
)N
mys?lQ SALA3* M 12O$ magacin K=A2A(
-Q (r!Z) AN" r!Q6)
-Q O2
-Q (r!Q6 AN" r!Z:)
-Q )N
T----T----------T--------T----------T---------------T
U r! U nazi U cena U kolicina U Jemlja4orekla U
T----T----------T--------T----------T---------------T
U 9 U @lje AL1 U -HV.GG U ; U 1rancuska U
T----T----------T--------T----------T---------------T
) roL in set (G.GV sec)
.omanda SALA3* se mo,e koristi u izuzetno elikom !roju kom!inacija matemati'ki+ i
logi'ki+ operacija. @ pret+odna tri primera prikazali smo samo neke od arijanti% ostale arijante
prikazane su u ta!eli ).
A SALA3* M 12O$ magacin K=A2A r!Y)N Jednako
DE SALA3* M 12O$ magacin K=A2A r!ZQ)N !ije jednako
D SALA3* M 12O$ magacin K=A2A r!Z)N ,ee od
E SALA3* M 12O$ magacin K=A2A r!Q)N Manje od
DA SALA3* M 12O$ magacin K=A2A r!ZY)N ,ee ili jednako
EA SALA3* M 12O$ magacin K=A2A r!QY)N Manje ili jednako
26$<66! SALA3* M 12O$ magacin K=A2A r!
#A*KAAN ) AN" :N
*zeFu dve vrednosti
L*&6 SALA3* M 12O$ magacin K=A2A nazi
LI.A Pnazi[PN
Siboliko poreFenje
*! SALA3* M 12O$ magacin K=A2A r! IN
()%6%:)N
8niverzalno poreFenje
Tabela 1. Varijante komande SELECT
&OM%!-6 C% *CM6!8 ,(6-!OS$* 8 +OLJ*M% $%26L6
@4"A*A magacin
SA* cenaY)GGG.-:
K=A2A Jemlja4oreklaYP*urskaPN
T----T----------------T---------T----------T---------------T
U r! U nazi U cena U kolicina U Jemlja4orekla U
T----T----------------T---------T----------T---------------T
U ) U Auspu+ U )GGG.-: U 6 U *urska U
U - U 1ilter ulja U H<V.-6 U : U Sloenija U
U 6 U 1ilter azdu+a U :HV.)- U H U .ina U
U 9 U @lje AL1 U -HV.GG U ; U 1rancuska U
U : U @lje AL1 A9GK U 6:;.6V U )G U 1rancuska U
U ; U "i+tung glae U );V-.)H U 9 U Nemacka U
T----T----------------T---------T----------T---------------T
@4"A*A magacin
SA* cenaY-GGG.6V% kolicinaYH
K=A2A Jemlja4oreklaYPNemackaPN
T----T----------------T---------T----------T---------------T
U r! U nazi U cena U kolicina U Jemlja4orekla U
T----T----------------T---------T----------T---------------T
U ) U Auspu+ U )GGG.-: U 6 U *urska U
U - U 1ilter ulja U H<V.-6 U : U Sloenija U
U 6 U 1ilter azdu+a U :HV.)- U H U .ina U
U 9 U @lje AL1 U -HV.GG U ; U 1rancuska U
U : U @lje AL1 A9GK U 6:;.6V U )G U 1rancuska U
U ; U "i+tung glae U -GGG.6V U H U Nemacka U
T----T----------------T---------T----------T---------------T
@4"A*A magacin
SA* 3enaY3enaM).)HN
K=A2A Jemlja4oreklaYP.inaPN
T----T----------------T---------T----------T---------------T
U r! U nazi U cena U kolicina U Jemlja4orekla U
T----T----------------T---------T----------T---------------T
U ) U Auspu+ U )GGG.-: U 6 U *urska U
U - U 1ilter ulja U H<V.-6 U : U Sloenija U
U 6 U 1ilter azdu+a U ;V:.); U H U .ina U
U 9 U @lje AL1 U -HV.GG U ; U 1rancuska U
U : U @lje AL1 A9GK U 6:;.6V U )G U 1rancuska U
U ; U "i+tung glae U -GGG.6V U H U Nemacka U
T----T----------------T---------T----------T---------------T
&O(*#G6!J6 &OM%!-6 JO*!
.ori&(enje komande WOIN !i(e prikazano na primeru de jednostane ta!ele% user i course.
*a!ela user sadr,i spisak polaznika razli'iti+ kursea dok ta!ela course sadr,i spisak kursea. @
o!e ta!ele za primarni klju' uzeta je kolona id.
H
HuserI tabela'
id nae "ourse
. %li"e .
0 2ob 0
1 3aroline 0
J -avid K
K 6a (!8LL)
H"ourseI tabela'
id nae
. 4$MLK
0 3SS1
1 JavaS"ript
J +4+
K MySLl
INNER JOIN
SALA3* user.name% course.name
12O$ user
INNA2 WOIN course on user.course Y course.idN
2ezultat8 4resek de ta!ela
user/nae "ourse/nae
Alice =*$L:
#o! =*$L:
3arline 3SS6
"aid $ySQL
LEFT JOIN
SALA3* user.name% course.name
12O$ user
LA1* WOIN course on user.course Y course.idN
4rikazuje spisak si+ u'enika 'ak i ako oni nusu upisani ni na jedan kurs. LA1* WOIN kreira
skup zapisa koji odgoara sim ulazima u leoj ta!eli% !ez o!zira da li odgooraju nekoj od staki
iz desne ta!ele.
2ezultat8
user/nae "ourse/nae
Alice =*$L:
#o! =*$L:
3arline 3SS6
"aid $ySQL
Amma (N@LL)
RIGHT JOIN
SALA3* user.name% course.name
12O$ user
2IB=* WOIN course on user.course Y course.idN
4rai skup si+ kursea 'ak iako i+ niko nije upisao.
2ezultat8
user/nae "ourse/nae
Alice =*$L:
#o! =*$L:
3arline 3SS6
(N@LL) WaaScript
(N@LL) 4=4
"aid $ySQL
OUTER JOIN
SALA3* user.name% course.name
12O$ user
LA1* WOIN course on user.course Y course.id
@NION
SALA3* user.name% course.name
12O$ user
2IB=* WOIN course on user.course Y course.idN
>ra(a ta!elu sa sim ulaznim parametrima a tamo gde nam rednosti stalja N@LL.
2ezultat8
user/nae "ourse/nae
Alice =*$L:
#o! =*$L:
3arline 3SS6
"aid $ySQL
Amma (N@LL)
(N@LL) WaaScript
(N@LL) 4=4
Kako pirakazati koiko ima poaznika !"ako# k$r!a%
SALA3* course.name% 3O@N*(user.name)
12O$ course
LA1* WOIN user ON user.course Y course.id
B2O@4 #C course.idN
2ezultat8
"ourse/nae "ount()
=*$L: -
3SS6 )
WaaScript G
4=4 G
$ySQL )

Potrebbero piacerti anche