Post on 25-Nov-2015
description
Adatbzis-optimalizls sebessgre s interaktivitsra
OREILLYl/Y^CCI IT"LJ George Reese, Randy Jay Yarger, Tim King
I M Hugh E. Williams kzremkdsvel
GEORGE REESE,RANDY JAY YARGER, TIM KING
A MySQLkezelse s hasznlata
HUGH E. WILLIAMS KOZREMKDESVEL
KOSSUTH KIAD
A l-'ORDTS A KVETKEZ KIADS ALAPJN KSZLT
GEORGE REESE, RANDYJAY YARGER, TIM KING WITH HUGH E. WILLIAMS:
MANAGING AND USING MySQL, SECOND EDITION
O REILLY & ASSOCIATES, INC.
101 MORRIS STREET, SEBASTOPOL, CA 95472, USA
FORDTOTTA
MOLNR ANIK, TARJN GYRGY
LEKTORLTA
GBLY LSZL, LAUK PTER
ISBN 963 09 4386 7
O REILLY & ASSOCIATES, INC. 2002. ALL RIGHTS RESERVED
KOSSUTII KIAD 2003
AZ O REILLY & ASSOCIATES, INC. ELZETES RSBELI ENGEDLYE NLKL
JELEN KIADVNY SEMMILYEN RSZE NEM MSOLHAT,
SEMMILYEN FORMBAN S ESZKZZEL NEM TERJESZTHET,
NEM TROLHAT ADATBZISBAN VAGY VISSZAKERES RENDSZERBEN
Elsz
A programozk ltalban a sajt idejkben, a sajt elgondolsaik szerint lltjk ssze a prog
ramokat. Az 1990-cs vekig azonban nem volt lehetsgk munkik kzzttelre szlesebb
krben. Az internet ebben a tekintetben is lnyeges vltozst hozott, s megalapozott olyan
szoftverterjesztsi elkpzelseket, amelyek versenyhelyzetet teremtettek a szoftverrisok sz
mra. Ezek az j elkpzelsek alaktottk ki s formltk az ingyenes szoftver s a nylt forrs
kd szoftver fogalmt.
Br az emltett kt fogalom kztti lnyeges klnbsg vgnlkli vitk forrsa, a vitzk
maradktalanul egyetrtenek abban, hogy a jogszeren hasznlt szoftver forrskdja szaba
don hozzfrhet s mdosthat legyen Egyik elgondolsban sincs kzvetlenl sz a szoft
ver rrl, vgeredmnyben mind az ingyenes, mind a nylt forrskd szoftverrel kltsgcsk
kens rhet el a hagyomnyosan magas kltsgvonzat szoftverfajtknl. A legismertebb pl
da erre a Linux opercis rendszer.
Az adatbzis-kezelssel sszefgg szoftverek hrhedten magas rkategriba tartoznak Az
Oracle egyetlen termkre, az Oracle adatbzis-mkdtet rendszerre alapozva rte el eredm
nyeit. Nem vletlen, hogy csak a nagyvllalatok rendelkeztek megfelel pnzgyi erforrsok
kal a relcis adatbzisok hasznostshoz. Mg az adatbzisok gyrti a szoftverek internetre
alkalmazhat licencfeltteleinek kialaktsn tanakodtak, nhny fejleszti csoport az ingye
nes s nylt forrskd eszmjre alapozott, ingyenes s alacsony kltsg adatbzis-megold
sokat dolgozott ki. Knyvnk tmja az egyik ilyen adatbzis: a MySQL.
A MySQL hatkony s rugalmas, emellett knnysly s jl hasznlhat rendszer Igen
kis mret, gyors mkdtet rendszere, ms szval adatbzismotorja szmos szolgltatst fog
lal magba. Br nem kelhet versenyre a kltsges vllalati adatbzisok szolgltatsainak kn
latval. elegend tudsa van a kzpszint adatbzis-kezelsi ignyek teljestshez.
Kinek, sz n ju k a knyvet?A knyvet elssorban az olvask kt csoportjnak sznjuk. Magtl rtetden azoknak, akik
rdekldnek a MySQL hasznlata irnt, akr az adatbzis-felgyelet, akr az adatbzis-terve
zs nzpontjbl. Ezenkvl a MySQL brkinek kivl kiindulsi pont lehet, aki kzelebbrl
is szeretne megismerkedni a relcis adatbzisok felgyeletvel s programozsval, s ehhez
kltsgkml megoldst szeretne vlasztani.
Az adatbzis-felgyelet vonatkozsban a MySQL adatbzisok s tblk ltrehozsnak s
kezelsnek alapvet mdszereit ismertetjk. Az egyszerbb feladatokon kvl foglalkozunk
a teljestmny finomhangolsval, s felvzoljuk azokat a szempontokat, amelyek alapjn el-
6 A MySQL KEZELSE S HASZNLATA
lenrizhet a MySQL alkalmazsok helyes mkdse. Mindez nem ignyli az SQL vagy a re
lcis adatbzisok elzetes ismerett.
Az adatbzis-programozk megtallhatjk a knyvben a legnpszerbb gyfl/kiszolgl
s webes programozsi nyelvek fbb alkalmazsprogramozsi felleteit. Az egyes nyelvekhez
taitoz felletek ismertetsekor azt felttelezzk, hogy az olvas rendelkezik a krdses nyelv
alapismeretivel. A Java nyelvvel foglalkoz fejezetben pldul az alapszinten megrt Java al
kalmazsokat alaktjuk t gy, hogy kommuniklhassanak a MySQL adatbzisokkal, ezzel is
bvtve az olvas ismereteit.
A MySQL rendkvli npszersgnek rvend a weben is, ezrt szinte kteleznek tekintet
tk a CGI programozs tmjnak trgyalst. A webes fejlesztk bizonyra j hasznt veszik
majd azoknak a fejezeteknek, amelyekben lerjuk, hogyan mkdtethetk a webhelyek MySQL
adatbzisra alapozva. Ehhez sem szksges a CGI mlyrehat ismerete, a vonatkoz program
nyelvek alapjait azonban elfelttelnek tekintjk.
A knyv cljaA knyv clja els pillantsra nyilvnvalnak tnik, hiszen a MySQL minden idk egyik leg
npszerbb nylt forrskd alkalmazsa. Knyvnk az alkalmazs gyakorlati krdseivel fog
lalkozik. A nylt forrskd projektekkel kapcsolatban az tfog s vilgos dokumentci hi
nya az egyik leggyakrabban emlegetett problma. Az ltalnos helyzettl eltren a My SQL
rszletes on-line dokumentcival rendelkezik, amely a http://www.mysql.com webhelyen
rhet el. Az itt tallhat ingyenes kziknyv a MySQL teljes SQL szintaxist, teleptst, C al
kalmazsprogramozsi fellett, valamint az adatbzis-felgyeletet s a teljestmny bellt
st trgyalja. A dokumentci nehzsgeivel teht a mi knyvnknek aligha kell szmolnia.
Az gyel kiss bonyoltja, hogy a MySQL folyamatosan vltozik, ami a gyors tem fejlesz
tsnek tudhat be. Ebben legfkppen Michael Monty Widenius tevkenysge jtszik sze
repet, neki ksznhet, hogy a MySQL rohamlptekkel korszersdik. Ezzel magyarzhat
az is, hogy knyvnk ugyancsak tartalmazhat olyan informcit, amely tlmutat a korbbi ver
zikon, vagy ppen ellenkezleg, tlhaladottnak szmt az jabb verzikhoz kpest.
A knyv felptseA knyvet ngy rszre osztottuk. Az 1. rsz a relcis adatbzisok vilgt mutatja be s a MySQL
helyt ebben a vilgban. A MySQL adatbzisok felgyeletnek klnbz szempontjaival
foglalkoz II rszt az adatbzisok gazdi forgathatjk haszonnal. A III. rsz a MySQL alapele
meitl kiindulva a MySQL adatbzist hasznl alkalmazsok ltrehozsig vezeti el az olva
st. A IV. rsz hivatkozsi tmutatt tartalmaz az els hrom rszben ismertetett alkalmazs
programozsi felletekhez.
Az 1. rszt a relcis adatbzisokkal, illetve a MySQL rendszerrel most ismerkedknek szn
tuk. A MySQL s a relcis adatbzisok alapvet fogalmait, valamint a MySQL hasznlatnak
els lpseit ismerteti. A MySQL hasznlatban jrtas felhasznlk ezt kihagyhatjk, akik pe
dig mr tapasztalatokat szereztek ms adatbzisrendszerekkel, gyors tlapozsval tfog k
pet kaphatnak errl a rendszerrl is.
Az adatbzis gazdjnak feladatkrbe tartozik az adatbzis folyamatos s hatkony mkd
tetse, valamint az adatbzishoz kapcsold alkalmazsok kezelse. Az emltett terlettel fog
lalkozknak a II. rsz tanulmnyozst ajnljuk. Ennek tmi a biztonsg, a teljestmny bel
ELSZ 7
ltsa s az adatbzis-tervezs kr csoportosulnak. A megfelel adatbzisterv alapvet fontos
sg, ha a vltoz ignyekhez igazthat, rugalmas adatbzis-alkalmazsokat akarunk ltre
hozni. Helyes tervezssel biztosthat az adatbzis megfelel teljestmny mkdse is.
A III. rsz az adatbzis-tervezknek s a programozknak szl. Fejezetei a klnbz prog
ramozsi nyelvek s eszkzk hasznlatra sszpontostanak. A Perl, a Java, a Python s a PHP
nyelvet bemutat fejezeteket a webes felhasznls programok ksztinek figyelmbe ajnljuk.
A knyv a MySQL s nhny alkalmazsprogramozsi fellet sszetevinek ttekintsvel zrul.
A knyvben hasznlt jellsekKnyvnkben a kvetkez jellsrendszert hasznljuk:
Azonos b e t s z le s s g szveg
A programokban elfordul elemeket jelzi, pldul a kulcsszavakat, a fggvnyneveket, az
SQL parancsokat s a vltozkat. Ezzel a bettpussal szedtk a kdpldkat, a parancsok ki
menett, valamint a rendszer konfigurcis fjljait.
Azonos betszlessg flkvr szvegA felhasznl ltal bert adatok jellsre szolgl.
Azonos betszlessg dlt szvegA knyv olvasja ltal megadott elemeket (pldul fjlneveket vagy vltozkat) jelli.
Dlt
Ezzel a formzssal lttuk el a knyvtrneveket, a fjlneveket, a programneveket, a Unix pa
rancsokat s az URL-cmeket. Dlt szeds hvja fel a figyelmet az j s fontos fogalmakra is.
Ez az bra a tippeket, a javaslatokat vagy az ltalnos megjegyzseket jelli.
k *
Ez az bra figyelmeztetseket jell.
A kiad a z OlvashozA knyvvel kapcsolatos megjegyzseit s krdseit a kvetkez cmre kldheti:
O Reilly & Associates, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
(707) 829-0515 (telefon)
(707) 829-0104 (fax)
8 | A MySQL KEZELSE S HASZNLATA
A knyvvel kapcsolatos technikai krdseit s megjegyzseit elektronikus levlben vrjuk a
kvetkez cmen:
bookquesticms@orely.com
A MySQL rendszer hibinak bejelentse eltt ellenrizze az elektronikus kziknyvet (a prob
lmk s az ismn hibk listjt). A kiadvny a kvetkez cmen tallhat:
blip://www. mysql.com/Mcinual_cbapter/maniial_toc.html
A MySQL levelezsi listjban is kereshet:
http://un.uw. mysql.com/cloc.html
A MySQL webhelye is szmos hasznos tudnivalt knl:
htlp://u -wiu. mysql. com/searcb. html
A knyvhz tartoz webhelyen helyeztk el a pldkat, a hibajegyzket s a tervezett jabb ki
adsokkal kapcsolatos tjkoztatt:
http://www. oreilly. com/catalog/msql2/
A knyvre vonatkoz rszletes tjkoztats s a kiad tovbbi kiadvnyainak ismertetse az
O'Reilly webhelyn olvashat:
http://www. oreilly. com
A magyar kiad weboldala s e-mail cme:
www. kossu th. h u
rl@kossuted.hu
A szerzk ksznetnyilvntsaA szerzk mindenekeltt a szerkesztknek szeretnnek ksznett mondani. Andy Oram s
Ellen Siever mindent megtett annak rdekben, hogy munknk szakmailag kifogstalan legyen.
Ksznettel tartozunk azrt is, hogy visszatereltek minket a helyes svnyre, amikor figyel
mnk elkalandozott.
Hugh Williams a PHP nyelvvel foglalkoz kt fejezet megrsban mkdtt kzre.
Hlval tartozunk azoknak is, akik hasznos szrevtelekkel segtettk munknkat a knyv
mindkt kiadsban. A MySQL rendszerrel foglalkozk minden bizonnyal jl ismerik Michael
Widenius nevt. s Paul DuBois. a MySQL fejleszti csapatnak msik tagja, szmos fontos
megjegyzst juttatott el hozznk a tmra vonatkozan. Brian Jepson, Glenn MacGregor, Mi
chael Scheeter s Jeremy Zawodny a knyv egszre vonatkoz tancsokkal jrult hozz mun
knkhoz.
ELSZ 9
Tim All wine minden rszletre kiterjeden ellenrizte a Perl nyelvvel foglalkoz 9 fejezetet,
ezenkvl nhny j pldval s tlettel is hozzjrult annak tartalmhoz. Chris Brooks s Tim
Bunce a Perl kdot mdostotta a szksges javtsokkal.
Randy Yarger ksznetnyilvntsa
Hlval tartozom menyasszonyomnak, Stacie Sheldonnak, amirt mellettem llt s szeletei
vel tartotta bennem a lelket. Kszneti, rdemel Andy Oram is a btortsrt, amelyet viszony
lag ismeretlen szerzknt kaptam tle. Vgl, de nem utolssorban azokat emltem, akiknek
a ltezsemet ksznhetem: anymat, apmat s a Teremtt.
George Reese ksznetnyilvntsa
Mindenekeltt felesgemnek szeretnk ksznett mondani. Monique nagyon sokat segtett
a rm cs fejezetek nyelvi ellenrzsvel. Leigh Caldwell a MySQL knyv els kiadsban rt
fejezeteimre vonatkoz fontos szrevteleivel ktelezett le. Vgezetl nem szeretnk elfeled
kezni Misty. Gypsy s Tia nev macskimrl sem.
Tim K ing ksznetnyilvntsa
Ksznetemet szeretnm kifejezni John Carlis professzornak, aki az adatbzisokra s az adat-
modellezsre irnytotta a figyelmemet; Mark Kale-nek, aki kiegsztette a fiskoln megszer
zett ismereteimet; Ann Soternek erklcsi tmogatsrt s trelmrt; vgl szleimnek, akik
jval azeltt biztattak a szmtstechnika megismersre, hogy az divatszakmv vlt volna.
IBevezets
A MySQL hasznlatbavtelhez a szksges els lps az adatbzis teleptse s az alkalma
zsoknak megfelel konfigurlsa. Az I. rsz a relcis adatbzisok s a MySQL hasznlatval
kapcsolatos alapismereteket tartalmazza. Ebben a rszben az Olvas elsajtthatja a MySQL
teleptst s futtatst, megismerkedhet a rendszerfelgyeleti tevkenysgekkel.
1MySQL
Az els fejezetet kezdjk egy krdssel, amire a vlasz szinte magtl rtetd. Mikor boldo
gulunk knnyebben: ha az rasztalon felhalmozott paprkupacaink vannak, vagy ha az irat-
szekrnyben rendszerezetten troljuk az aktinkat? Az rasztalon trolt irathalmaz gyakran ma
ga a kosz. Ha szksgnk van egy bizonyos iratra, kiterjedt satsi munklatokat kell folytat
nunk, s nagy szerencse, ha mr az els kupacban rbukkanunk a keresett aktra. Elfordul
hat hogy az sszes paprhalmot t kell kutatnunk, mire elkerl. 11a irattrolt hasznlunk, pontosan tudjuk, hol kell kezdeni a keresst, s legtbbszr csak nhny aktt kell tlapoz
nunk, hogy megtalljuk.
Tbb mint kt vtizede a relcis adatbzisok jelentik az elektronikus trolsi megoldst a
nagyvllalatok rendkvl nagy s sszetett adatkszletnek rendszerezett kezelsre. A rel
cis adatbzis az egyetlen olyan eszkz, amely alkalmas az informci szervezett trolsra,
mikzben az adatok fel is hasznlhatk, nem csupn haszontalan bithalmazokknt foglaljk
a helyet a merevlemezen. Egszen napjainkig nem volt tl kedvez a helyzet, ha kevs rfor
dtssal kelleti olyan alkalmazst fejleszteni, amelynek httert egy erteljes adatbzis szol
gltatja. A vlasztk meglehetsen szegnyes volt. szzezreket kellett kiadni az Oracle vagy a
Sybase rendszerre, vagy olyan jtk ' adatbzisra lehetett pteni az alkalmazst, mint az Ac
cess s a FileMakerPro. Az jabb adatbzisoknak - ilyen pldul az mSQL, a PostgreSQL s a
MySQL - ksznheten azonban mr a legklnflbb ignyeknek megfelel megoldsok k
zl vlaszthatunk. Knyvnk fszereplje termszetesen a MySQL.
Relcis oldatbzisokKezdjk a legegyszerbb meghatrozssal: az adatbzis adatok gyjtemnye. I Iagyomnyos,
nem elektronikus adatbzisnak tekinthet pldul a knyvtr, ahol knyveket, folyiratokat
s egyb dokumentumokat tallunk. 1 la a knyvtrban valamilyen adatot keresnk, hasznlhatjuk a betrendes vagy a tematikus katalgust, s krhetjk a knyvtros segtsgt is. Tu
lajdonkppen az rasztalon felhalmozott paprkupacokat is egyfajta adatbzisnak tekinthet
jk. Mg arra is van eslynk, hogy ez az adatbzis valahogyan mkdni fog, viszonylag kis
mretnek ksznheten. Nagyobb mennyisg adat, pldul a knyvtri gyjtemnyek ese
tben azonban ez a megolds mr szba sem jhet. A knyvtr katalgusok s knyvtros nl
kl is adatbzis maradna ugyan, m szinte teljesen hasznlhatatlann vlna. A hasznlhatsg
rdekben az adatbzist ltalban valamilyen eh szerint rendszerezni kell Az iratokat is
knnyebben megtalljuk, ha iratszekrnyben tlthat mdon troljuk azokat. Az els megha
trozst mris mdostanunk kell: az adatbzis az adatok rendszerezett gyjtemnye.
1 4 I. RSZ. BEVEZETS
A knyvtr s a paprhalmok kztt persze sok hasonlsgot fedezhetnk fel. A legalapvetbb
hasonlsg, hogy mindkett dokumentumokbl ll. Az utbbiakat azonban nem rdemes
egyesteni, mivel sajt iratainknak msok nem ltjk hasznt, a knyvtrban viszont ltalban
nyilvnos, mindenki szmra elrhet dokumentumokat riznek. A kt adatbzisnak teht
klnbz a rendeltetse, s ennek megfelelen vannak rendszerezve. Ezrt ismt
pontostanunk kell a meghatrozst: az adatbzis adatok gyjtemnye, amelyek rendszerezse
s trolsa meghatrozit cl szerint trtnik.
A hagyomnyos papr alap adatbzisnak szmos htrnya van, pldul rendkvl nagy a
helyignye. A knyvtrak teljes pleteket foglalnak el, s a dokumentumok keresse megle
hetsen lass. Aki mr hosszasabban idztt knyvtrakban, tudja, milyen sok idbe telhet a
keresett informci felkutatsa. A knyvtrak naprakszen tartsa idrabl feladat, s rop
pant erfesztseket ignyel a katalgusok s a polcokon elhelyezett knyvek kztti sszhang
megrzse. Az elektronikus trols adatbzisok mindezekre a problmkra megoldst je-
lentenek.
A MySQL nmagban nem adatbzis, hanem egy szmtgpes szoftver, amely elektronikus
adatbzisok ltrehozst, karbantartst s kezelst teszi lehetv. Ezt a szoftverkategrit
adatbzis-kezel rendszernek nevezzk, rvidtse DBMS (az angol Database Management
System kifejezsbl). A DBMS kzvetti szerepet tlt be a fizikai adatbzis s annak felhasz
nli kztt.
Az elektronikus informcifeldolgozs els lpseknt az Olvas is minden bizonnyal va
lamilyen fjllal, pldul szmoltblval dolgozott. A szmtgpen trolt fjl az rasztalon
tallhat iratkteg megfelelje. Knnyen belthat, hogy az emltett megolds, a rgtnztt
elektronikus adatbzis bizonyos szinten tl aligha felel meg az elvrsoknak. Kzenfekv l
ps egy adatbzis-kezel rendszer hasznlata, s az els lpcsfok a MySQL lehet a relcis
adatbzis-kezel rendszerek fel vezet ton.
A relcis adatbzis olyan specilis adatbzistpus, amelyben az adatok tblkban trolha
tk. s ezek a tblk az gynevezett kapcsolatok rvn sszekttetsben llnak egymssal. A
kapcsolatok segtsgvel a tbb tblbl szrmaz adatok klnfle nzetben" jelenthetk
meg. Az ISBN szmokat, a knyvcmeket s a szerzket tartalmaz 1.1. tblzat egy knyvtr
adatbzisnak egyik lehetsges tbljt szemllteti.
1.1. tb lzat. Knyveket tartalm az tbla*
ISBN Title Author
0-446-67424-9 L.A. Confidential James Ellroy
0-201-54239-X An Introduction to Database Systems C.J. Date
0-87685-086-7 Post Office Charles Bukowski
0-941423-38-7 The Man with the Golden Arm Nelson Algren
Az 1.2. s az 1.3- tblzatban az NBA adatait tartalmaz tblk lthatk, a csapatok sorszm
val, nevvel, az edzk nevvel, illetve a jtkosok nevvel s a csapatban elfoglalt posztjval.
* A knyvben tallhat egyes tblzatok oszlopcmen. mshol brk feliratait nem fordtottuk le magyarra, mert a szban forg illusztrcikon hasznlt angol elnevezsek tbb szvegrszben s pltlakdban is szerepelnek, s az eredeti forma megrzse ltszott sszernek. gy tltk meg. hogy ezeken helyeken elegend magyar nyelv informcit nyjt a? illusztrcik tma jellse, azaz /i tblzatok vagy brk cme - a szerkeszt.
1. FEJEZET. MySQL 1 51.2. lb lzat. A z NBA csapatainak adatait tartalm az tbla
Team - Name Coach
1 Sacramento Kings Rick Adelman2 Minnesota Timberwolves Flip Saunders
3 L.A. Lakers Phil Jackson
4 Portland Trailblazers Mike Dunleavy
1.3. tb lzat. A z NBA jtkosainak adata it tartalm az tbla
Name Position Team *
Made Divac Center 1Kevin Garnett Forward 2Kobe Bryant Guard 3
Rasheed Wallace Forward 4
Damon Sloudamire Guard 4
Shaquille O'Neal Center 3
A tblkkal ksbb rszletesebben is foglalkozunk, nhny szempont azonban mr most meg
figyelhet a pldkban. Minden tblnak van neve. tbb oszlopa, s az oszlopokban sorok tar
talmazzk az adatokat. A relcis adatbzis ilyen tblkban trolja az adatokat, s a visszake
ressi mveletekkel j tblk hozhatk ltre a meglvkbl. Ennek kvetkeztben a felhasz
nl tblaformkban lthatja a teljes adatbzist.
Fontos krlmny, hogy a Team #" oszlop mindkt tblban szerepel. Ezzel az oszloppal
alakthat ki a jtkosok s a csapatok kztti adatkapcsolat. A kl Team # oszlop ssze
kapcsolsval hatrozhat meg pldul, hogy a Vlade Divac nev jtkos a Sacramento Kings
kosrlabdacsapatban jtszik. Knnyen megllapthat az is, hogy kik a Portland Trailblazers
csapat tagjai. A tblk sszekapcsolst relcis sszekapcsolsnak vagy rviden sszekap
csolsnak nevezzk
Relcis rendszerek esetben a DBMS elnevezse relcis adatbzis-kezel rendszer (rvi
dtve RDBMS). A MySQL relcis adatbzis-kezel rendszer, vagyis RDBMS.
A MySQL trtneteA trtnet 1979-ig nylik vissza, amikor a MySQL fejlesztje, Michael Widenius (becenevn
Monty) egy UNIREG nev, bels hasznlatra sznt eszkzt fejlesztett az adatbzisok kezel
shez. A UNIREG olyan tcrminlilleszt, amely alacsony szint kapcsolatot hasznl az indexelt
ISAM trolhelyekhez. Azta a UNIREG tbb, klnbz nyelven jrart verzija is megje
lent. s szolgltatsi krt kibvtettk a nagymret adatbzisok kezelsre. Jelenleg is ren
delkezsre ll, br a MySQL elgg httrbe szortotta.
A svd TcX vllalat 1994-ben kezdett webes alkalmazsokat fejleszteni, s ehhez elssorban
a UNIREG eszkzt vette ignybe.* Sajnos a UNIREG tl kltsges volt, gy7 nem lehetett sikeresen hasznlni a weblapok dinamikus ksztsben. Ezrt a cg ms lehetsgek utn nzett.
* Mkdsnek ideje alatt egyetlen alkalmazottja volt: Monty.
1 6 I I RSZ. BEVEZETS
A TcX figyelme az SQL s az mSQL fel fordult* Az mSQL elnys r adatbzis-kezel rend
szer volt, amely az adatbzis licencvel egytt a forrskdot is rendelkezsre bocstotta. Ez mr
majdnem nylt forrskdnak tekinthet. Akkoriban az mSQL 1 .x verzii voltak forgalomban, s termszetesen jval kevesebb szolgltatst tartalmaztak, mint a jelenlegi verzi. Monty sz
mra a legfontosabb klnbsg az volt, hogy a rendszer nem kezelte az indexeket, ezrt az
mSQL teljestmnye elmaradt a UNIREG teljestmnye mgtt.
Monty felkereste David Hughest, az mSQL szerzjt, hogy megtudja, hajland lenne-e az mSQL
s a UNIREG B+ ISAM kezeljnek sszekapcsolsra, aminek hatsra az mSQL is kezeln az
indexeket. Hughes akkor mr jcskn elrehaladt az mSQL 2 fejlesztsben, az indexel inf
rastruktra Monty ajnlata szerint el is kszlt. A TcX egy adatbzis-kiszolgl ltrehozsa mel
lett dnttt, amely teljesebb kr kompatibilitst knl a kiszolgl kvetelmnyei szerint.
A TcX elg krltekint volt ahhoz, hogy ne prblja jbl feltallni a kereket. A UNIREG
eszkzre alapozott, felhasznlt ms gyrtk ltal ksztett szmos mSQL segdprogramot, s
olyan alkalmazsprogramozsi felletet hozott ltre a sajt rendszerhez, amely gyakorlatilag
azonos volt (legalbbis eleinte) az mSQL hasonl funkcij felletvel. Kvetkezskppen an
nak az mSQL-felhasznlnak, aki t kvnt trni a TcX tbb szolgltatst knl adatbzis-ki
szolgljra, elegend volt nhny trivilis vltoztatst vgrehajtania brmelyik meglv kd
ban. Az j adatbzist kezel kd azonban teljes mrtkben eredeti volt.
1995. mjusra a TcX elksztette a bels ignyeinek megfelel adatbzist: ez volt a MySQL
3.11. Egyik zleti partnerk, David Axmark (Detron HB) arra sztnzte a TcX szakembereit,
hogy ezt a kiszolglt adjk ki az interneten, s kvessk az L. Peter Deutsch (Aladdin) ltal
kidolgozott zleti modellt. A nevezett modell lehetv tette a TcX fejleszti szmra, hogy a
maguk vlasztotta projekteken dolgozzanak, s az eredmnyeket szabad szoftverknt adjk ki.
(A szabad szoftver mottja az angol free sz tbbszrs jelentsre pt, ekkppen: sz
lsszabadsg igen, de nem ingyensr - a fordt .) A szoftver hirdetsekbl szrmaz bev
telei megfelel krlmnyeket biztostottak. Az eredmny egy igen rugalmas copyright lett, en
nek ksznheten a MySQL szabadabb, mint az mSQL. Monty az ltalnos nyilvnos licenc
(GPL, General Public License) keretein bell adta ki a MySQL rendszert, amely most szabad
(szlsszabadsg) s egyttal ingyenes (..ingyensr).
Ami a MySQL nevt illeti, Monty a kvetkezt mondja: Nem lehet egyrtelmen meghat
rozni, honnan ered a MySQL nv. A TcX alapknyvtrnak s szmos egyb knyvtrnak s
eszkznek neve a My eltaggal kezddtt j tz ven keresztl. Kislnyom (aki valamivel
fiatalabb) neve is My. gy ht magam sem emlkszem mr, melyikrl kapta a nevt a MySQL.
Nhny ve a TcX a MySQL AB vllalatt alakult t, amely a http://www.mysql.com c\men r
het el az interneten Ez a vltozs jtkony hatssal volt a MySQL fejlesztsnek s tmoga
tsnak szablyozsra. A MySQL szerzi joga, valamint a MySQL vdjegy a MySQL fejlesz
ti csapata ltal mkdtetett svd MySQL AB vllalat tulajdonban van. Els internetes kiad
sa ta a MySQL a Unix opercis rendszereken (belertve a Linux, a FreeBSD s a Mac OS X
rendszert), a Win32 s az OS/2 rendszereken is mkdik. A MySQL AB becslse szerint a MySQL
legalbb ngymilli kiszolgln fut.
* Az mSQL a miniSQL rvidtse (a Hughes Technologies tenhke).
A MySQL felptse
1 FEJEZET MySQL 1 7
Az mSQL rksgre ptkezve a TcX gy hatrozott, hogy a MySQL rendszernek legalbb
olyan gyorsnak kell lennie, mint az mSQL rendszernek, de sokkal tbb szolgltatst kell nyj
tania. Az mSQL az id tjt meglehetsen j teljestmnyt kpviselt, gy a TcX nem kis fba vg
ta a fejszjt. A MySQL kitztt clja a gyorsasg, a robuszaissg s az egyszer hasznlat volt.
A felvzolt teljestmny elrshez a TcX tbbszlas adatbzismotorknt alaktotta ki a MySQL
rendszert. A tbbszlas alkalmazs egy idben hajt vgre tbb feladatot, mintha az alkalmazs
nak egyszerre tbb pldnya futna. Szerencsre a tbbszlas alkalmazsok teljestmnyt nem
veti vissza az j folyamatok indtsa.
Tbbszlas rendszerknt a MySQL-nek j nhny elnye van. Minden bejv kapcsolatot
kln szl kezel egy tovbbi szllal, amely folyamatosan futva felgyeli a kapcsolatokat. Tbb
gyfl is vgezhet olvassi mveleteket egy idben anlkl, hogy akadlyozn a msikat. Az
rsi mveletek azonban a hasznlt tbla tpustl fgg mrtkben vrakoztatjk azokat az
gyfeleket, amelyek az ppen frisstett adatokat prbljk elrni. Mikzben az egyik szl rsi
mveletet hajt vgre a tblban, az ugyanazt a tblt elrni prbl sszes tbbi szlnak vr
nia kell, amg a tbla szabad nem lesz. Az gyfl brmilyen engedlyezett mveletet vgre
hajthat, tekintet nlkl az egyb prhuzamos kapcsolatokra. A kapcsolatkezel szl megaka
dlyozza, hogy a tbbi szl frissts kzben olvasson vagy rjon az adott tblban
Az ilyen architektra msik elnye az sszes tbbszlas alkalmazsban rvnyesl: a sz
lak vgrehajtsa kln trtnik mg akkor is. ha ugyanazt a folyamatterletet hasznljk. Az el
klnts kvetkeztben a tbbprocesszoros gpek eloszthatjk a szlakat tbb CPU kztt,
ha a gazda opercis rendszer alkalmas tbb CPLJ kezelsre.
A tbbszlas mkds bevezetsvel elrt teljestmnynvekeds mellett a MySQL nagyobb
vlasztkban knlja az SQL szolgltatsokat, mint az mSQL. A MySQL egy' aicatot meghalad
mennyisg adattpust kezel, ezenkvl az SQL fggvnyeket is. Az alkalmazsok ezeket a fgg
vnyeket ANSI (American National Standards Institute) SQL utastsok segtsgvel rhetik el.
A MySQL nhny szolgltatssal ki is egszti az ANSI SQL vlasztkt Az emltett szolgl
tatsok kz tartozik nhny j fggvny (ENCRYPT, WEEKDAY, IF stb.), a mezrtkek n
velse (AUTO_INCREMENT s LAST_INSERT_ID), valamint a kis- s nagybetk megkln
bztetse
A jelentsebb adatbzismotorok nhny SQL szolgltatst a MySQL kszti szndkosan
kihagytk. Ezek kzl a tranzakcikezels volt a leghosszabb ideig mellztt szolgltats, de
a MySQL legjabb kiadsai mr tartalmazzk. A hasonlan kihagyott trolt eljrsok a te ivek
szerint a 4.1-es kiadsban mr jelen lesznek, ami ezzel a knyvvel egy idben ke ml forgalom
ba. Vgl a MySQl az SQI.3 verzitl kezdden nem kezeli az SQL szabvny kiegsztsei
nek tbbsgt. A legfontosabb hinyz SQL3 szolgltats az objektumorientlt adattpusok ke
zelse
1996 ta a MySQL AB bels rendszerben hasznlja a MySQL szoftvert. Ez a krnyezet k
rlbell 40 adatbzisbl ll, amelyek 10 000 tblt tartalmaznak. Ebbl a 10 000 tblbl 500-
nl is tbb olyan tbla van, amelyben a rekordok szma meghaladja a 7 millit. Ez megkze
ltleg 100 GB adatot jelent.
18 I I. RSZ. BEVEZETS
Tranzakcik a nagy krds
A tranzakcik az olyan alkalmazsok szmra fontosak, amelyek sszetett szablyok
alapjn vgzik az adatok prhuzamos karbantartst. A tranzakcik akadlyozzk meg,
hogy a prhuzamos frisstsek miatt inkonzisztens llapotba kerljn az adatbzis.
A tranzakcik viszonylag j szolgltatsnak szmtanak a MySQL adatbzis-mkd
tet rendszerben. A tranzakcikkal kapcsolatos szolgltatsok valjban csak akkor van
nak jelen, ha a tblk belltsakor engedlyezzk azok kezelst. Sokan ktsgbe von
tk a MySQL hasznossgt a tranzakcik nlkl, s furcsllottk, hogy mirt lltannak
be a felhasznlk olyan tblkat, amelyek nem kezelik a tranzakcikat. A vlasz rvid s
vels: a teljestmny miatt.
A tranzakcik sznre lpse rezhet vltozst okoz az adatbzis teljestmnyben. A
tranzakcik szksgess teszik az sszetett zrolsokat s az esemnyek naplzst.
Az sszetett zrols tartalmazza a tranzakcik elklntsi szintjeinek kezelst (lsd a
8. fejezetben). A tranzakcik elklntsi szintjeinek szaportsa azonban tbbletmunkt ignyel az adatbzistl a szban forg funkcionalits kezelshez. Minl tbb mun
kl fordt az adatbzis egy feladatra, annl lassabb annak vgrehajtsa.
A MySQL szolgltatsaiKorbban mr emltettk, hogy a tbbszlas funkcionalits kulcsfontossgnak tekinthet a
MySQL clknt kitztt teljestmnynek elrsben. Ez az alapszolgltats, amelyre a MySQL
pl. A tovbbi jellemzk a kvetkezk:
Nylt rendszer
A MySQL a sz szoros rtelmben nylt rendszer. SQL nyelvjrsnak alapja az ANSI SQL2.
Az adatbzismotor szmos platformon futtathat, ilyen pldul a Windows 2000, Mac OS
X, Linux, FreeBSD s Solaris. Ha a hasznlt platformhoz nincs binris vltozat, a szabadon
elrhet forrs lefordtsval elkszthet a platformnak megfelel vltozat.
Alkalmazsok
A MySQL-nek szinte az sszes programozsi nyelvhez van alkalmazsprogramozsi felle
te (API). Leghatkonyabban C, C++, Eiffel, Java, Perl, PHP, Python vagy Tel programnyel
ven kszthetk adatbzis-alkalmazsok. Ez a knyv a felsoroltak kzl a C, a Java, a Python,
a Perl s a PHP nyelvvel foglalkozik.
Adatbzisok kztti sszekapcsolsok.
A MySQL segtsgvel olyan lekrdezsek is sszellthatk, amelyek klnbz adatbzi
sokban tallhat tblkat kapcsolnak ssze.
Kls sszekapcsolsok
A MySQL lehetv teszi bal s jobb oldali kls sszekapcsolsok hasznlatt ANSI s ODBC
szintaxissal egyarnt.
Nemzetkzi szolgltatsok
A MySQL tbb klnbz karakterkszletet kezel, ilyen pldul az ISO-8859-1, a Big5 s a Shift-JlS. A kezelt karakterkszletek esetben lehetsg van rendezsre, s az egyni ignyek
hez igazts sem maradt ki. Ezenkvl klnbz nyelv hibazenetek is megjelenthetk
1. FEJEZET. MySQL I 9
A MySQL legfontosabb jellemzje mindenekeltt az olcssg s a gyorsasg. A MySQL egyb
szolgltatsai is figyelemre mltak, azonban a kltsgek s a teljestmny tern mondhatja ma
gnak a legkedvezbb mutatkat. A tbbi relcis adatbzis kt kategriba sorolhat:
alacsony kltsg adatbzis-mkdtet rendszerek, pldul az mSQL, a PostgresSQL s
az Instant DB;
kereskedelmi forgalmazsra gyrtk, pldul az Oracle, a Microsoft s a Sybase rend
szerei.
A MySQL jl megllja a helyt a tbbi szabad adatbzis-mkdtet rendszerrel val sszeha
sonltsban, a teljestmny szempontjbl viszont egyszeren lespri azokat a plyrl. Az
mSQL valjban egyetlen terleten sem mrhet ssze a MySQL rendszerrel. Az InstantDB
felveszi vele a versenyt a szolgltatsok terletn, a MvSQL azonban lnyegesen gyorsabb. A
PostgresSQL-nek van ugyan nhny hatkony SQL3 szolgltatsa, de magn hordozza a keres
kedelmi adatbzis-mkdtet rendszerek sszes htrnyt. A PostgresSQL megfelel, ha olyan
kltsgkml megoldsra van szksg, amely lehetv teszi a klnleges SQL3 szolgltatsok
hasznlatt, m minden ms esetben a MySQL az idelis vlaszts.
Furcsa mdon a MySQL s az Oracle, illetve az egyb kereskedelmi adatbzisok sszevet
se nem ll messze a MySQL s a PostgresSQL sszehasonltsnak eredmnytl. A kereske
delmi adatbzis-mkdtet rendszerek szinte minden elkpzelhet szolgltatst tartalmaznak,
mindezek a szolgltatsok azonban a teljestmny rovsra mehetnek. A tmeges olvasst vg
z adatbzis-alkalmazsok terletn egyetlen ilyen adatbzis-mkdtet rendszer sem kelhet
versenyre a MySQL rendszerrel. Az r szempontjbl nincs versenyhelyzet. Egyedl az SQL3
szolgltatsok s a termktmogats tern rdemes sszemrni a rendszereket. A MySQL AB
mindkt terleten igyekszik felzrkzni.
Szmos alkalmazshoz hasonlan a MvSQL-nek is van teszteleszkze, amellyel ellenriz
het, hogy az jonnan lefordtott rendszerek valban fennakads nlkl kezelik-e a tervbe vett
szolgltatsokat. A MySQL fejleszti az eszkzt crash-me nven emlegetik, ugyanis egyik
funkcija, hogy megprblja elidzni a MySQL sszeomlst.
Nem tudni hogyan, de valaki rjtt, hogy' a crash-me hordozhat program. Klnbz ope
rcis rendszereken is mkdtt, s klnbz adatbzismotorok tesztelsre is alkalmas volt
A nagy felfedezs ta a crash-me egyszer teszteleszkzbl komoly tesztprogramm lepett
el. sszehasonlt elemzsei kiterjednek az SQL egszre, valamint a kiszolglk ltal knlt
bvtmnyek tbbsgre is. Ezenkvl a program ellenrzi a kiszolgl leterheltsg alatti meg
bzhatsgt is. A teljes tesztprogram lefuttatsa tfog kpet ad az ellenrztt adatbzismo
tor tulajdonsgairl.
A crash-me eszkz kt vagy tbb adatbzis-mkdtet rendszer on-line sszehasonltsra is
alkalmas. A crash-me a bllp://wwiu.myscjl.com/irformalwn/crash-me.php\vcb\zpon rhet el.
MySQL alkalm azsokMeghatrozsunk szerint az adatbzis adott clra szolgl adatok rendszerezett gyjtemnye,
azonban a MySOL egyszer futtatsval adatbzisunknak mg nem lesz meghatrozott rendel
tetse. A MySQL adatbzis rendeltetst az abban trolt adatok felhasznlsnak mdja szab
ja meg. Kpzeljnk el egy knyvtrat, ahol soha senki nem olvassa a knyveket. Nem lenne
sok rtelme trolni s katalogizlni a polcokon rintetlenl sorakoz kteteket. Most kpzel
jnk el olyan knyvtrat, ahol nincs lehetsg az llomny mdostsra vagy bvtsre. Az
id elrehaladtval a knyvtr mint adatbzis folyamatosan vesztene hasznossgbl mivel
20 I I. RSZ. BEVEZETS
a felesleges knyveket nem lehet kiselejtezni, s a gyjtemnyt nem lehet j kiadvnyokkal
frissteni. sszefoglalva a lentieket, a knyvtr rendeltetse, hogy az emberek olvassk a kny
veket, s megkereshessk az ket rdekl informcit.
Az adatbzis funkcija, hogy a felhasznlk klnbz mveleteket hajtsanak vgre ben
ne. Az elektronikus adatbzisok esetben a mveletek vgrehajtsa nem kzvetlenl az adat
bzissal. hanem kzvetve, alkalmazsok segtsgvel trtnik. A World Wide Web sznre l
pse eltt az adatbzisokat jellemzen a nagyvllalatoknl hasznltk klnfle zleti c
lokra: knyvelsi s pnzgyi adatok, szlltsi adatok, raktrkszletek, szemlyzeti adatok
nyilvntartsra, gyrtstervezsre stb. A web s a szemlyi szmtgpekkel vgrehajthat
mind bonyolultabb feladatok irnti igny kimozdtotta az adatbzis-kezel alkalmazsokat a
nagyvllalatok vilgbl.
Egyltaln nem meglep, hogy a vvebes alkalmazsfejleszts az a terlet, ahol az adatbzi
sok robbansszer fejldsnek indultak. A MySQL ppen ezen a terleten nyjt kiemelkedt.
Az egyre sszetettebb s erteljesebb webes alkalmazsok irnti kereslet nvekedsvel pr
huzamosan n az adatbzisok irnti igny is. Adatbzisokra alapozva szmos fontos funkci
megvalsthat a weben. Gyakorlatilag brmilyen webes tartalom kiszolglhat adatbzissal.
Vegynk pldaknt egy kiskereskedt, aki a weben szeretn kzztenni a termkkatal
gust, s on-line megrendelsek alapjn kvnja rustani termkeit. Ha a katalgust kzvetle
nl HTML fjlokban helyezik el, valakinek folyamatosan gondoskodnia kell a fjlok frissts
rl, hogy a katalgus mindig napraksz adatokat tartalmazzon (gondoljunk az esetleges r
vltozsokra vagy az j termkekre). LIa a katalgus adatait relcis adatbzisban troljk, a
katalgus vals idej frisstse knnyszerrel megoldhat az adatbzis megfelel adatainak
mdostsval. Ezenkvl lehetsg nylik az on-line katalgus s a mr kiptett elektronikus
megrendels-nyilvntart rendszer integrlsra is. Az ilyen jelleg webhelyek adatbzissal tr
tn kiszolglsa nyilvnval elnykkel jr mind a keresked, mind a vsrl szempontjbl.
Tekintsk t. hogyan mkdik egytt egy adatbzis s egy egyszer webes alkalmazs. Az
adatbzis a webkiszolgln, illetve egy msik szmtgpen tallhat, amellyel a kiszolgl
kommuniklhat (egy megbzhat adatbzis-kezel rendszerrel e/ zkkenmentesen meg
oldhat). Az egyik weblap egy rlapot tartalmaz, amelyet a felhasznl kitlthet a lekrdezs
vagy a keresett adatok megadsval. Miutn a felhasznl elkldte az rlapot a kiszolgl
nak, az elindtja az rlap adatainak kiolvassra ksztett programot. Ezt a feladatot leggyak
rabban CGI szkriptekkel vagy Java szn ietekkel lehet megoldani (az utbbival kapcsolatban
lsd a Kossuth Kiadnl magyarul is megjeleni Java szervietek programozsa [szerzje fson
Hunter] es a JavaServer Pages [szerzje Ilans Bergsten] cm O Reilly-kiadvnyokat - a szer
keszt). de kzvetlenl a HTML lap kdjban is elhelyezhetk a megfelelen programozott pa
rancsok. A ksbbiekben rszletesebben is foglalkozunk valamennyi emltett mdszerrel.
A program most mr megllaptotta, hogy a felhasznl mit keres, illetve mit szeretne felven
ni az adatbzisba, ennek megfelelen elindtja a szksges SQL lekrdezst vagy karbantart
si mveletet, a tbbirl pedig mr az adatbzis gondoskodik. Az adatbzisbl kapott eredm
nyeket a program j HTML lapon helyezi el, s visszakldi a felhasznlnak.
A MySQL tana lm aA MySQL relcis adatbzis-kezel rendszer. Nem csak az adatbzisok kezelsre alkalmas ki
szolgli eljrst tartalmaz, hanem eszkzket is az adatbzisok elrshez s klnbz adat
bzis-alkalmazsok ltrehozshoz, tbbek kztt a kve tkezke t:
1. FEJEZET. MySQL 2 1
niysqlaz SQL vgrehajtsa a MySQL rendszerben, valamint fjlokban trolt SQL parancsok vgre
hajtsa;
mysqlaccess
felhasznlk kezelse;
mysqlcidrninaz adatbzis-kiszolgl kezelse, belertve az adatbzisok ltrehozst s trlst is;
irtysqld
a tnyleges MySQL kiszolgli eljrs;
mysqldump
a MySQL adatbzisok vagy tblk defincijnak s tartalmnak fjlba rsa;
mysqlbotcopy
a MvSQL adatbzisok futsidben vgrehajtott biztonsgi mentse;
m ysqliniport
klnbz fjlformium adatok importlsa MvSQL tblkba;
mysqlshow
a MvSQL kiszolgl s az abban tallhat objektumok (pldul adatbzisok s tblk)
adatainak megjelentse;
safe_mysqkl vagy mysqld_safe
a mysqld eljrs biztonsgos elindtsa s kezelse Unix rendszer szmtgpen.
A felsorolt eszkzk rszletes ismertetse a knyv megfelel fejezeteiben olvashat. Az eszk
zk s a knyv hasznlatnak mdjt a MySQL felhasznlsi terlete hatrozza meg.
Aki az adatbzisok gazdjaknt a MySQL futsi krnyezetnek felgyeletvel foglalkozik, f
feladatai kz a MySQL teleptse, karbantartsa, biztonsga s teljestmnynek szablyoz
sa tartozik. Ezekkel a tmakrkkel a knyv II. rsze foglalkozik.
Aki az adatbzis- vagy alkalmazstervezknt megbzhat adatbzis-alkalmazsok tervez
sevei foglalkozik, a MySQL erre vonatkoz tmakreit a III. rsz els nhny fejezetben tallja.
Akinek alkalmazsfejlesztknt olyan alkalmazsokat kell ltrehoznia, amelyek adatbzi
sokra alapozva mkdnek, olyan eszkzkre van szksge, amelyek MySQL ad a tb z is ok b l
szrmaz adatokkal ltjk el az alkalmazsokat. A III. rsz fknt a klnbz alkalmazs
programozsi felleteket ismerteti, amelyekkel megvalsthat az alkalmazsok s a MvSQL
kztti kommunikci.
Fggetlenl attl, hogy ki milyen clra hasznlja ezt a rendszert, ismernie kell a MySQL nyel
vt: ez az SQL.
Az adatbzis-mkdtet rendszerek tbbsghez hasonlan a MySQL is az ANSI SQL2 szab
vnyt s annak bvtmnyeit kezeli.
A MySOL rendszerben hasznlt SQL nyelvjrs tfog ismertetse a 3- fejezetben tallhat.
A nyelv rszletes lerst a IV. rsz tartalmazza.
2Telepts
E z a fejezet a MySQL letltst s teleptst ismerteti. A My SQL a legklnflbb opercis
rendszerekben telepthet. A fejezel bemutatja a MySQL teleptst binris s forrsform
tumban a Solaris s a Linux, valamint binris formtumban a Windows 9x/NT/2000/XP rend
szerekben. Br kiemelten csak a Solaris, a Linux s a Win32 rendszerrel foglalkozunk, a Sola
ris/Linux rendszerrel kapcsolatos tudnivalk a legtbb Unix alap rendszerre rvnyesek,
belertve a Mac OS X. a I-'reeBSD s az AJX rendszert.
ElkszletekA MySQL teleptsnek elkezdse eltt a kvetkez szempontokat rdemes tgondolni.
1 A telepteni kvnt verzi
Ez a krds rendszerint a legjabb vgleges kiads s a legjabb fejleszts alatt ll kiads
kztti vlasztsi ignyli. ltalban a legjabb vgleges verzit clszer telepteni, kivve
ha olyan specilis szolgltatsokra van szksgnk, amelyeket csak a fejleszts alatt ll
verzi tartalmaz.
A jelenlegi vgleges verzi a MySQL 3-23 s a MySQL-Max 3-23- A MySQL-Max a My SQL
szoftver bta kiadsa, amely BerkeleyDB s InnoDB tblk segtsgvel kezeli a tranzak
cikat. A MySQL binris alapvltozata nem kezeli az emlteti tblatpusokat.
A jelenleg fejlesztett verzi a MySQL 4.0 s a MySQL-Max 4.0. Az itt olvashat teleptsi
tmulat a 3 23-as s a 4.0-s verzira egyarnt rvnyes.2. A MySQl, teleptse root felhasznlknt, illetve ms felhasznlknt
A MySQL futtatshoz nincs szksg root hozzfrsre, azonban root jogosultsggal tele
ptve a rendszer valamennyi felhasznlja szmra elrhet pldny hozhat ltre. Root
hozzfrs hinyban a MySQL a sajt felhasznli knyvtrba telepthet. Ha a telepts
root felhasznlknt trtnik, a MySQL futtatshoz clszer msik felhasznlt vlaszta
ni. gy egyszerbben oldhat meg az adatbzis adatainak vdelme az adatfjlok engedlye
inek megfelel belltsval: elegend csak a kvnt MySQL felhasznl szmra olvassi
engedlyt megadni. A vzolt megolds msik elnye, hogy ha veszlybe kerl az adatb
zis biztonsga, a behatol csak ehhez, az adatbzison kvl semmilyen engedlyt nem tar
talmaz felhasznli fikhoz frhet hozz.
3. A fons, illetve a binris kiads teleptse
I la az adott platformhoz rendelkezsre ll a binris vltozat, ltalban ezt rdemes telep
tem A legtbb esetben a binris kiads teleptse egyszerbb, s ez knlja a leggyorsabb
s legmegbzhatbb megoldst a MySQl rendszer futtatsra ksz belltshoz. A MySQL
2. FEJEZET. TELEPTS 23
fejleszti csapatnak munkatrsai minden megtesznek azrt, hogy a binris kiads elk
sztse a lehet legjobb eredmnyekkel jrjon. Elfordulhat azonban, hogy a felhasznl
nak kell ltrehoznia az alapoktl kiindulva a sajt MySQL kiadst. Forrsvltozat telept
se pldul a kvetkez okok miatt vlhat szksgess:
a kvnt rendszerhez nincs binris kiads:
a MySQL konfigurcijban olyan belltsokra van szksg, amelyek egyetlen
binris kiadsban sem tallhatk meg;
a szoftver fordtsa tovbbi karakterkszletek felvtelhez;
a MySQL teleptsnek optimalizlsa a fordtprogram belltsainak
mdostsval, illetve ms fordtprogram hasznlatval;
hibajavts javtprogrammal
A verzi s a binris, illetve forrskiads ki\ lasztst kveten vgrehajthat a MySQL tele
ptsnek els lpse, a letlts. Erre a MySQL letltsi weblapja a legalkalmasabb
hp-J/ivww. mvsql.com/downloads. A MySQL termszetesen az imnt emltett letltsi hely szm
talan tkrzsn is megtallhat, amelyek a bllp://www.mysql.com/doivnload$/mirrors.hlml
weblaprl rhetk el.
Telepts Unix rendszerbenA VlySQL szmos Unix platformon telepthet. Ebben a fejezetben ttekintjk a binris s a for
rskiadsok Solaris s Linux rendszerben vgrehajtott teleptsnek lpseit. A lpsek pldk
kal kiegsztett lersa ltalnos rvny ismertetnek is tekinthet az egyb opercis rend
szerekben trtn teleptshez.
B inris ( Tarba 11) kiadsok
A binris kiads teleptshez a tar segdprogram s a GNU gunzip segdprogramja szks
ges. A legtbb Unix rendszer esetn ezek az eszkzk mr az alapkiads rszei.
Elfordulhat, hogy a Solans /r/reszkze nem kezeli helyesen a MySQL binris ki
adsban tallhat hossz fjlneveket. A binris kiads Solaris rendszerben a GNU gtar eszkzvel bonthat ki megfelelen Ez a http://www.myscjl.com/clownlo- culs/os-solaris.htmlweblaprl tlthet le.
A binris kiadsok elnevezsnek egyezmnyes formtuma a kvetkez: mysql-verzi-or.tar.gz.
A verzi helyrz a kiads ltal tartalmazott szoftver verziszma. Az or helyrz azt az ope
rcis rendszert jelli, amelyhez a binris kiads kszlt. A mysql-max-verzi-or.ictr.gz elne
vezs binris kiadsokban olyan My SQL verzi tallhat, amely kezeli a tblkban vgre
hajthat tranzakcikat.
Tegyk fel pldul, hogy a MvSQL 3-23-40 verzit kvnjuk telepteni Sun Solaris kiszolg
lra, s a mysql-3-23.40-sii11-solars2.7-sparc.tar.gzfjlt mr letltttk a /tmp knyvtrba.A My SQL felgyelethez clszer ltrehozni egy felhasznlt s egy csoportot. Ezzel a fel
hasznlval futtathatjuk a mysqlkiszolglt, s hajthatjuk vgre a rendszer felgyeletvel kap
csolatos feladatokat. A kiszolgl root felhasznlknt is kutathat, de ez nem ajnlatos.
Az els lps a MySQL kiszolglt futtat felhasznl ltrehozsa. Solaris s Linux rend
szerben ez a user add s a g roupadd segdprogrammal hajthat vgre. Pldnkban egy mysql
24 | I. FEJEZET. BEVEZETS
nev felhasznlt hozunk ltre. Vals krlmnyek kztt termszetesen brmilyen felhasz
nlnv megadhat. A szksges mveleteket root felhasznlknt lehet vgrehajtani, ezrt
mindenekeltt lltsuk be magunknak a root jogosultsgot a su paranccsal:
$ su - root $ groupadd mysql $ useradd -g mysql mysql
Vlasszuk ki a mysql szoftver kvnt helyt , s trjnk t ebbe a knyvtrba. Pldnkban az
/usr/localknyvtrba teleptnk, ez a MySQL szoftver alaprtelmezett teleptsi helye. Az alap-
knyvtr helyeit msik knyvtr is vlaszthat, ekkor azonban mdostani kell az /usr/local
knyvtrbelltsi a MySQL egyes szkriptjeiben. Ezzel kapcsolatban tovbbi tudnivalk a MySQL
teleptsi tmutatjban olvashatk (http://iuww.mysql.com/documentation).
$ cd /usr/local
Ezutn kvetkezik a szoftver kibontsa:
$ gunzip -c /tmp/mysql-3.23.40-sun-solaris2.7-sparc.tar.gz I tar -xf -
A teleptst Solaris kiszolgln hajtjuk vgre, ezrt elfordulhat, hogy az elz parancs nem
mkdik, ha a GNU tar eszkze klnll tar verziknt van teleptve. Ebben az esetben a
kvetkez parancs hasznlhat:
$ gunzip -c /tmp/mysql-3.23.40-sun-solaris2.7-sparc.tar.gz I gtar -xf -
Ezzel ltrejtt egy j knyvtr.
$ Is -ld mysql*t o t a l 1
drwxr-xr-x 28 u se r u se rs 1024 J u l 18 14:29 m ysq l-3 .2 3 .4 0 - s u n - so la r is 2 . 7- sparc /
A kvetkez lps egy szimbolikus hivatkozs ltrehozsa, hogy a teleptsre az /usr/local/mysql
tvonallal hivatkozhassunk:
$ In -s mysql-3.23.4 0-sun-solaris2.7-sparc mysql $ Is -ld mysql*lrwxrwxrwx 1 use r users 31 J u l 26 18:32 mysql -> mysql-3.2 3 .40-sun- so lar is2 .7- sparc /
drw xr-xr-x 12 u s e r u se rs 1024 J u l 18 17 :07 m ysq l- 3 . 2 3 .4 0 - s u n - s o la r is 2 . 7 - sp a rc /
Most lpjnk be a mysql knyvtrba, s vegyk szemgyre a helyzetet:
$ cd mysql $ Is -1total 4476-rw -r-r- 1 u s e r u s e r s 19076 J u l 18 14 :21 COPYING
-rw -r-r- 1 u s e r u s e r s 28011 J u l 18 14 :21 COPYING .LIB
2. FEJEZET. TELEPTS 25
-rw - -r 1 u se r u se rs 122213 J u l 18 14 : 19 ChangeLog
rw-r-r 1 u p o r u se rs 14842 J u i 18 14: 21 INSTALL-BINARY
-rw r- r 1 u s e r u s e rs 1976 J u l 18 14 : 19 READML
drw xr-xr-x 2 use r u se rs 1024 J u l 18 17 :: 07 b i n /
-rwxr-xr x u se r u se rs 773 J u l 18 17:: 07 c o n f ig u r e *
drw xr x 4 u s e r u s e rs 1024 J u l 26 18:: 27 d a t a /
drw xr xr-x 2 u se r u se rs 1024 J u i 18 17 :: 07 in c lu d e /
d rw xr-x r x 2 u s e r u s e r s 1024 J u l 18 17 :: 07 l i b /
-rw r r 1 u s e r u s e r s 2321255 J u l 18 14:: 21 m a n u a l . h tm i
-rw r -r- u se r u se rs 1956858 J u l 18 14 :: 21 m a n u a l . t x t
-rw -r-r- 1 u se r u s e rs 80487 J u l 18 14:: 21 m a n u a l_ L o c . htm]
drw xr-xr-x 6 u se r u se rs 1024 J u l 18 17 :: 07 m y s q l-t e s t /
drw xr-x r-x 2 u s e r u se rs 1024 J u i 18 17 :: 07 s c r i p t s /
drw xr-x r-x 3 u se r u se rs 1024 J u l 18 17 :: 07 s h a r e /
d rw xr-x r-x 7 u s e r u s e r s 1024 J u l 18 17 :: 07 s q l- b e n c h /
drw xr-xr-x 2 u s e r u se r s 1024 J u l 18 17 :: 07 s u p p o r t - f i i e s /
d rw xr-x r-x 2 u se r u s e rs 1024 J u l 18 17 :: 07 t e s t s /
Br a szoftver teleptse mr elkszlt, nhny belltsi mveletet mg vgre kell hajtanunk.
A scripis/my$ql_in$iall_db fjl futtatsval hozzuk lire a MySQL engedlytblit:
$ scripts/mysql_install_dbP re p a r in g db t a b le
P r e p a r in g h o s t t a b le
P r e p a r in g u se r t a b le
P r e p a r in g fu n c t a b le
P r e p a r in g l a b l e s _ p r i v t a b le
P r e p a r in g c o lu in n s _ p r iv t a b le
I n s t a l l i n g a l l p re p a re d t a b le ?
010726 1 9 :4 0 :0 5 . / b in / m y s q ld : Shutdow n C om p le te
lltsuk be a binris fjlokat gy. hogy tulajdonosuk az elzleg ltrehozott MySQL gazdai cso
port root felhasznlja legyen (esetnkben ez a mysql)-.
$ chown -R root /usr/local/mysql $ chgrp -R mysql /usr/local/mysql
lltsuk be az adatfjknyvtrakal gy, hogy tulajdonosuk az elzleg ltrehozott MySQL gaz
da legyen (pldnkban ez a mysql):
$ chown -R mysql /usr/local/mysql/data
Ezzel befejezdtt a MySQL teleptse, mr csak az indts van htra. A kiszolgl elindts
hoz futtassuk a safe_mysqldfjlt:
$ bin/safe_mysqld user=mysql &
A MySQL elindtsa ltalban kzvetlenl a kiszolgl elindtsa utn kvetkezik. Ennek vg
rehajtshoz msoljuk t a support-files/mysql.server fjlt a megfelel helyre. A mvelet rsz
letes ismertetse az 5 fejezetben tallhat.
26 I FEJEZET. BEVEZETS
B in ris (RPM ) kiadsok
A MySQL teleptse Intel Linux rendszeren legegyszerbben a RedHat Package Manager (RPM)
hasznlatval hajthat vgre. A 2.1. tblzat a teljes MySQL teleptst alkot fjlokat mutatja be.
2.1. tb lzat. A teljes MySQL RPM kiads f jlja i
Fjlnv Lers
MySQL-uersion. i386. rpm
MySQL-client-version.i386. rpm
MySQL-ben.ch-version.i386. rpm
MySQL-deuel -version. i386. rpm
A MySQL kiszolglszoftvere.
A MySQL gyflszoftvere.
A MySQL tesztel s teljestmnymr eszkzei,
hasznlatukhoz a Perl s az msql-mysqlRPM szksges.
Egyb MySQL gyfelek fordtshoz szksges
fggvny knyvtrak s beolvasott fjlok.
MySQL-shared-version i386.rpm A MySQL gyfl megosztott fggvnyknyvtrai
Az RPM kiads teleptsnek mvelete viszonylag egyszer. Els lpsknt be kell szerezni a
kvnt RPM csomagokat. A teleptshez minimlisan szksges csomag a kiszolgl- s az gy
flszoftver. A csomagok ezutn az tpm segdprogrammal telepthetk.
A pldban a 3-23.40 verzi valamennyi RPM csomagjt teleptjk Intel Linux rendszerre. Te
gyk fel, hogy a kvetkez RPM fjlokat mr letltttk a /tmp knyvtrba:
My SQL-3 23 .40-1. i386. tpm
MySQL-clienl-3.23.40-1. i386. rpm
MySQL-devel-3-23-40-1. i386. rpm
MySQL-bench-3-23.40-l.i386 tpm
MySQL-shared-3-23.40-1 i386 tpm
A felsorolt fjlok teleptshez hajtsuk vgre a kvetkez parancsokat:
$ rpm -i /tmp/MySQL-3.23.40-1.386.rpm$ rpm -i /tmp/MySQL-client-3.23.40-1.386.rpm$ rpm -i /tmp/MySQL-devel-3.23.40-1.386.rpm$ rpm -i /tmp/MySQL-bench-3.23.40-1.i386. rpm$ rpm -i /tmp/MySQL-shared-3.23.40-1.386.rpm
Az RPM elhelyezi a megfelel bejegyzseket az /etc/rc.d fjlban, amelyek hatsra a kiszolg
l automatikusan elindul, illetve lell a rendszer indtsakor s lelltsakor. Az RPM a mysql
kiszolglt is elindtja, vagyis a telepts befejeztvel a MySQL mr hasznlhat is.
Az RPM kiadsok s a tarball kiadsok nem ugyanarra a helyre msoljk a fjlokat. A fjlok
helye az RPM lekrdez kapcsoljval llapthat meg:
$ rpm -qpl MySQL-version.i386.rpm
I la szeretnnk meghatrozni a helyet, de mr eltvoltottuk az RPM fjlokat, lekrdezhetjk
az RPM adatbzist is:
$ rpm -ql MySQL-version
2 FEJEZET TELEPTS 2 7
Megjegyzend, hogy az RPM esetben az adatok helye a /var/lib/data, nem pedig az /itsr/lo-
ccil/m} >sql/data.
forrskiadsok
A forrskiadsokbl vgrehajtott telepts klnbzik a binris kiadsokbl vgrehajtott tele
ptstl. A szoftver sszelltsa ebben az esetben a forrskdbl trtnik, ezrt a teljes eszkz-
kszletre szksg van:
GNU gunzip
tor vagy GNU tar
ANSI C++ fordtprogram: az ajnlott a GNU gcc 2.95.2 (vagy jabb verzi): az egcs
] .0.2/egcs 2.91.66, SGI C++ s a SunPro C++ is hasznlhat (a Mae OS X esetben a gcc
az OS X fejleszti eszkzk kztt tallhat, a hllpj/wwiu.apple.com/deueloper cmen)
make (ajnlott a GNU mk)
A szoftver sszelltsa a forrsbl sszetett, sok varicis lehetsget tartalmaz folyamat, ame
lyet az opercis rendszer, a kvnt konfigurci, az eszkzkszlet stb. hatroz meg. Ezrt itt
csak tfogan ismertetjk az eljrst. Azt felttelezzk, hogy az Olvasnak kell jrtassga
van a szoftverek fordtsban, ha mgis nehzsget okozna a MySQL sszelltsa vagy tele
ptse, a bllp://icww. mysql.com/docnmenialion cmen tallhat teleptsi dokumentci hasz
nos segtsget nyjt.
A forrskiadsok elnevezsnek egyezmnyes formtuma a kvetkez: mysql-verzi.tar.gz.
A MySQL forrsnak nincs specilis MySQL-Max verzija, minden verzi fordtsa ugyanab
bl az alapkdbl trtnik.
A plda kedvrt ttelezzk fel, hogy a mysql-3-23-40.lar.gz fjlt mr letltttk a /im p
knyvtrba.
A binris teleptshez hasonlan az els lps itt is a MySQL kiszolglt futtat felhasznl
ltrehozsa:
$ su - root $ groupadd mysql $ useradd -g mysql mysql
A fjlrendszeiben trjnk t arra a helyre, ahova a forrst kvnjuk kibontani. Bontsuk ki a
csomagot:
$ gunzip -c /tmp/mysql-3.23.40.tar.gz I tar -xf -
Lpjnk az jonnan ltrehozott mysql knyvtriba. Ezen a helyen kell vgrehajtani a MySQL
konfigurlst s sszelltst:
$ cd mysql-3.23.40
A konfigurls a configure S'/kpt segtsgvel hajthat vgre. Pldnkban a prefix kapcsol
val lltjuk be a teleptsi knyvtrat (/usr/local/mysql):
$ ./configure prefix=/usr/local/mysql
28 I. FEJEZET. BEVEZETS
A configure segdprogram szmos belltst tartalmaz a7. sszelltand szoftver konfigurci
jnak kialaktshoz. A lehetsges belltsok a kvetkez paranccsal jelenthetk meg:
$ ./configure help
Az ltalnos konfigurcis belltsok felsorolsa szintn megtallhat a teleptsi dokumen
tciban a http://uniiv.mysql.com/documentation cmen.
A configure segdprogram futsa ignybe vehet nhny percet. A mvelet befejezse utn
a binris verzi ltrehozsa kvetkezik:
$ make
Ha minden tkletesen sikerlt, ezzel el is kszlt a MvSQL binris verzija. Az utols tenni
val a szoftver teleptse:
$ make install
A szoftver teleptse elkszlt. Nhny belltsi mveletet kell mg vgrehajtani A mysql_
install_db'A)\ futtatsval hozzuk ltre a MySQL engedlytblit:
$ cd /usr/local/mysql $ scripts/mysql_install_dbP r e p a r in g db c a b le
P r e p a r in g h o s t t a c ie
P r e p a r in g u s e r t a b le
P r e p a r in g fu n c c a b le
P r e p a r in g t .a b ie s _ p r iv t a b le
P r e p a r in g c o lu m n s _ p r iv t a b le
I n s t a l l i n g a l l p r e p a re d t a b le s
010726 1 9 :4 0 :0 5 . / b in / m y s q ld : Shutdow n C om p le te
lltsuk be a binris fjlokat gy, hogy tulajdonosuk az elzleg ltrehozott MySQL gazdai cso
port root felhasznlja legyen (esetnkben ez a mysql)-.
$ chown -R root /usr/local/mysql $ chgrp -R mysql /usr/local/mysql
lltsuk be az adatfjknyvtrakat gy, hogy tulajdonosuk az elzleg ltrehozott MySQL gaz
da legyen (pldnkban ez a mysql)-.
$ chown -R mysql /usr/local/mysql/data
Ezzel befejezdtt a MySQL teleptse, mr csak az indts van htra. A kiszolgl elindts
hoz futtassuk a safe_mysqld fjlt:
$ bin/safe_mysqld user=mysql &
2. FEJEZET. TELEPTS 29
A MvSQL elindtsa ltalban kzvetlenl a kiszolgl elindtsa utn kvetkezik. Ennek vg
reha jtshoz m so lju k t a support-files/mysql.server fjlt a megfelel helyre. A mvelet rsz
letes ismertetse az 5. fejezetben tallhat.
Telepts Windoivs rendszeren\ Windows rendszerekhez hasznlhat kiadsok ugyanott tallhatok, mint a Unix kiadsai: a
btlp.-//u ivic.m) 'sql.com/clownloads webhelyen vagy annak tkrzsein. Windows rendszeren
igen egyszer a telepts, elegend hozz a mysql-verzi.zip fjl letltse, kibontsa s vgl
a teleptprogram elindtsa.
A MySQL alaprtelmezs szerinti teleptsi helye Windows rendszerben a c. \ mysql knyv
tr a teleptprogramban vlaszthat msik hely is. A teleptsi knyvtr megvltoztatsakor
azonban a rendszer helyes mkdshez nhny konfigurcis fjlt is mdostani kell. Ezzel
kapcsolatban tovbbi tudnivalk a MySQL teleptsi tmutatjban olvashatk
(http://wiuw.mysql.com/documentation}.
A telepts vgrehajthat szoksos, minimlis s egyni mdban. ltalban a szoksos tele
ptst clszer vlasztani, hacsak nincs szksg a teleptend sszetevk listjnak mdost
sra libben az esetben egyni telepts hajthat vgre.
A Windows rendszerhez tartoz binris kiads tbb kiszolglt is tartalmaz. Felsorolsukat
a 2.2. tblzatban tekinthetjk t.
2.2. tb lzat. A Windows k iads kiszolgli_____________________________________________
Kiszolgl neve_____ Lers_________________________________________________________ ______
mysqld Hibakeres binris verzi a memriafoglals ellenrzsvel, a szimbolikus
hivatkozsok s a tranzakcis tblk kezelsvel (InnoDB s DBD)
mysqld-opt Optimalizlt binris verzi a tranzakcis tblk kezelse nlkl.
mysqld-nt Optimalizlt binris verzi az NT elnevezett adatcsatornk kezelsvel.
mysqld-max Optimalizlt binris verzi a tranzakcis tblk kezelsvel.
mysqld-max-nt Optimalizlt binris verzi az NT elnevezett adatcsatornk s a
tranzakcis tblk kezelsvel.
A szoftver teleptst kvet lps a kiszolgl elindtsa. Br a binris verzik azonosak, a
kiszolgl futtatshoz szksges felttelek eltrek a Windows 95/98 s a Windows NT/2000
lendszer esetben. A kvetkezkben mindkettre kitrnk.
Windows 9xA MySQL Windows 9x rendszerben trtn futtatshoz a TCP/IP protokoll szksges. Ez a
W in d o w s CD-lemezrl telepthet, ha korbban mg nem trtni meg. I la az adott szmt
gptl csatlakozni lehet az internetre, az azt jelenti, hogy a TCPTP teleptve van.
A Windows 9^ rendszerben ellenrizni kell, hogy incglclel-e a Winsoek verzija. A MySQI. hasznlathoz a Winsoek 2 verzi szksges. I-z a http://www.mic- rosoji.com webhelyen .szerezhet be. Windows 98 vagy Windows Me rendszerben mr ez a verzi szerepel.
30 I I. FEJEZFT. BEVEZETS
Azt is cl kell dntennk, hogy a 2.2. tblzatban szereplk kzl melyik kiszolglt kvnjuk
futtatni. A felsoroltak kzl az ,,-nt binris verzik is futtathatk ugyan, de ennek nem sok hasz
nt ltjuk, mivel az elnevezett adatcsatornk Windows 9x platformon nem hasznlhatk. A pl
dt folytatva tegyk fel. hogy a mysql-optfuttatst vlasztottuk. A kiszolgl elindtshoz nyis
sunk egy MS-DOS ablakot, s rjuk be a kvetkez parancsot:
C:\> c:\mysql\bin\mysqld-opt
A kiszolgl lelltshoz a kvetkez parancsol rjuk be:
C : \ > c:\mysql\bin\mysqladmin -u root shutdown
Ha azt szeretnnk, hogy a MvSQL automatikusan induljon el az opercis rendszerrel egytt,
helyezzk el a win mysqladm in . exe f jl parancsikonjt a Start Up mappban. Ennek hatsra a
MySQL is automatikusan lell a Windows jraindtsakor, illetve lelltsakor.
W indows NT/2000
Windows NT rendszerben a 3-as vagy jabb javtcsomagra van szksg a MySQL TCP/IP t
mogatsnak megfelel mkdshez.
A MySQL kiszolglt NI' szolgltatsknt clszer futtatni. A MySQL szolgltatsknt a
ivinmysqladmin.exesegdprogrammal telepthet a legegyszerbben. Ezt a segdprogramot
a MySQL Windows rendszerhez kszlt teleptsi csomagja tartalmazza, a MySQL konfigur
lshoz s szolgltatsknt trtn teleptshez vehet ignybe.
A MySQI szolgltatsknti teleptshez nyissunk egy MS-DOS ablakot, s rjuk be a k
vetkez parancsot:
C :\> c :\mysql\bin\mysqld-nt -install
Ez ltrehozza a MySQL nev NT szolgltatsi, ami a Services (Szolgltatsok) prbeszdpane
len rhet el. Megjelentshez a vezrlpulton kattintsunk dupln a Services (Szolgltat
sok) ikonra.* A Windows NT Services (Szolgltatsok) prbeszdpanel s a szolgltatsknt te
lepteti MySQL a 2.1. brn lthat.
A MySQL ezutn a Start gombra kattintva indthat el. A MySql szolgltats parancssori pa
ramterei a Startup Parameters mezben mdosthatk a szolgltats elindtsa elolt. A 2.2. b
rn a szolgltats elindult llapota lthat, az erre utal Started jellssel.
A szolgltats a Stop gombra kattintva llthat le. A szolgltats elindtsa, illetve lelltsa
az MS-DOS parancssorbl is vgrehajthat, a net start s a net stop parancs hasznlatval. A
kiszolgl elindtshoz nyissunk egy MS-DOS ablakot, s rjuk be a kvetkez parancsol
C:\> net start mysqlThe MySql s e r v ic e i s s t a r t i n g .
The MySq] s e r v ic e was s t a r t e d s u c c e s s f u l ly .
* Windows 2000 rendszerben a Szolgltatsok segdprogram megjelentshez kattintson dupln a Vezrl pult Felgyeleti eszkzk ikonjra, inajd a Szolgltatsok ikonra
2 FEJEZET. TELEPTS 31
Services
Se # - .... ~ ft . Status Startup^ .fi;-,
AlerterClipBook Server COM+ Event System Computer Browser DHCF Client Directory Replicator EventLog Messenger
StartedStarted
StartedStarted
ManualManual :i ]Manual 1AutomaticAutomaticManualAutomatic *Automatic
MvSql Automatic |NAV Alert Started Manual ^
SiaitupPaiiSffietets;;
i'isei aBiaaaaaffiia
r-stjrj
jfeassi
2 .1. bra. A Windows NT Szolgltatsok prbeszdpanel s a teleptett My SQL
Services
Service iSMus: Staikip" Alerter
ClipBook Server COM+ Event System Computer Browser DHCP Client Directory Replicator EventLog Messenger
StartedStarted
StartedStarted
ManualManualManualAutomaticAutomaticManualAutomaticAutomatic
: MySql Started Automaticj WAV Alert Started Manual
S tartup. Parameters
2.2. bra. A z elindtott MySQL szolgltats
A szolgltats lelltshoz a kvetkez parancsol adjuk meg:
C:\> net stop mysqlThe M ySql s e r v ic e i s s t o p p in g ............................
The MySql s e r v ic e was s to p p e d s u c c e s s f u l ly .
3A z SQL s a MySQL kapcsolata
A MySQL adatbzisok olvassa s rsa strukturlt lekrdez nyelv, az SQL (Structured Query
Language) hasznlatval valsthat meg. Az SQL adatok keressre, bevitelre, mdosts
ra s trlsre alkalmas. A legalapvetbb eszkznek tekinthet MySQL adatbzisokban vg
rehajtott tevkenysgekhez. A felhasznlk ltalban valamilyen alkalmazson vagy grafikus
felhasznli felleten keresztl rik el az adatbzist, a httrben azonban mindig megtallha
t az SQL.
Az SQL egyfajta termszetes nyelv. Ms megfogalmazsban az SQL utastsok gy olvas
hatk. legalbbis a felsznen, mint a mondatok (ehhez persze nmi angol nyelvtudsra is szk
sg van). Ennek a megkzeltsnek vannak elnyei s htrnyai, de a vgeredmny minden
kppen a hagyomnyos programozsi nyelvektl (pldul C, Java vagy Perl) eltr lesz.
A z SQL alapjaiAz SQL azrt nevezhet strukturlt nyelvnek, mert pontosan meghatrozott szablyrendszer
re pl. A szmtgpes programok kpesek a szablyoknak megfelelen sszelltott SQL
lekrdezsek elemzsre s rtelmezsre. A lex &yacc cm knyv (John Levine, Tony Ma
son s Doug Brown; az O'Reilly kiadsban) pldul az SQL nyelvtanval szemllteti a nyelv-
rtelmez programok rsnak folyamatt. A lekrdezs pontosan megfogalmazott parancs,
amely az adatbzis-kiszolglra elkldve a kn mveletet hajtja vgre. Kvetkezzen egy plda:
SELECT name FROM o e o p le WHERE name LIKE 'S ta c% '
Lthat, hogy ez az SQL utasts trt angolsggal megfogalmazott mondatknt is felfoghat.
Angolul gy hangzik a megfejts ..Select names from a list of people where the names are like
Stac (jelentse magyaml: ..vlasszunk ki olyan neveket a szemlyek listjbl, amelyek a Stac'
karakterekkel kezddnek1) Az SQL nyelv a szmtgpes nyelvekre jellemz specilis karak
terek s formzsok kzl csak nhnyat tartalmaz.
z4.z SQL rvid trtneteAz IBM az 1970-es vekben fejlesztette ki az SQL nyelvel, rviddel azutn, hogy Dr. E. F. Codd
kidolgozta a relcis adatbzisok elvi alapjait. Az SQL kezdettl fogva egyszeren elsajttha
t, mgis igen hatkony nyelv. Felptsben sok a hasonlsg a termszetes nyelvekhez (f
knt az angolhoz), ezrt mg a nem mszaki rdekldsek szmra sem tnik tl riaszt
3. FEJEZET. AZ SQL S A MySQL KAPCSOLATA 33
nak Fnnek taln nem tulajdontunk olyan nagy jelentsget napjainkban, de a hetvenes vek
ben ez ktsgtelen elnyt jelentett.
Akkoriban mg nem voltak bitvadszok, szoftverguruk. Senki sem nevelkedett a BASIC ta
nulm nyozsn vagy a I ITML weblapok programozsn. A szmtgpek program ozi olyan
szakemberek voltak, akik mlyrehatan, a legeldugottabb ramkrig ismertk a szmtgp
mkdst. Az SQL nyelvel eredetileg a knyvelknek s az irodai dolgozknak szntk, men
ebben a krben igen jl ki leheteti hasznlni a relcis adatbzisok nyjtotta elnyket.
Az SQL valban akkora siken aratott a megclzott krben, hogy az 1980-as vekben az Oracle
Corporation kiadta a vilg els, a nyilvnossg szmra is elrhet kereskedelmi SQL rend
szert. Az Oracle SQL telitallatnak bizonyult, s hamarosan egy egsz iparg szakosodott az
SQL nyelvre. Azta a Sybase, az Informix, a Microsoft s szmos ms vllalat is elllt a sajt
SQL alap relcis adatbzis-kezel rendszervel (RDBMS).
Az Oracle s els versenytrsai sznre lpsekor az SQL mg mindig jdonsgszmba ment,
nem szmtott szabvnynak. Az ANSI szabvnygyi szervezel 1989-ben adta ki az els SQL szab
vnyt. Napjainkban a szabvny elnevezse SQL89- Az j szabvny azonban sajnlatos mdon
nem rszletezte kell alapossggal a nyelv mszaki struktrjt. Ezrt, br az SQL nyelv kln
bz vltozatai termszetesen kzel lltak egymshoz, a szintaxis eltrsei egyltaln nem
knnytettk meg az tjrst az egyes vltozatok kztt. Ez a helyzet 1992-ig nem is vltozott.
Az 1992-es szabvny neve SQL92, illetve SQL2. Az SQL2 szabvny a kereskedelmi verzik
ban fellelhet valamennyi bvtmny egyeztetsvel bvtette ki a nyelvet. Az SQL2 szabvny
ban az adatbzis-kezel rendszerekhez hasznlt eszkzk tbbsge s a relcis adatbzisok
kezelsnek mdja szabvnyoss vlt. Az SQL2 szabvny igen szles kr, ennek kvetkez
tben a teljes szabvnyon alapul relcis adatbzisok rendkvl sszetettek s meglehet
sen nagy az erforrsignyk
j.
Az SOL2 nem az utols fejezel az SQL szabvny trtnetben. Az objektumorientlt adatbzis-kezel rendszerek (OODBMS) s az objektumrelcis adatbzis-kezel
4 rendszerek (ORDBMS) nvekv npszersgnek hatsra egyre nagyobb igny jelentkezett az objektumorientlt adatbzis-hozzfrs bevezetsre az SQL
szabvnyban. A nemrg megjelent SQL3 szabvny mr eire is knl megoldst.
A 1 lySQL megjelense ms megvilgtsba helyezte az adatbzis-kiszolglk fejlesztst. Ujabb
gigszi RDBMS elksztse helyett Monty inkbb egy kismret, gyors vltozatot hozott ltre,
amely tartalmazta az ltalnosan hasznlt SQL funkcionalitst. gy azt a kockzatot sem kellett
vllalnia, hogy semmivel nem tud tbbet knlni, mint a nagy vetlytrsak. Az vek sorn az
alapvet funkcionalits termszetesen kibvlt. gy gyakorlatilag az adatbzis-alkalmazsok
kal vgrehajthat mveletek brmelyikre alkalmas.
A z SQL felptse
K )rabban mr emltettk, hogy az SQL kzelebb ll az emberi nyelvekhez, mint a szmtg
pes nyelvekhez, szerkezetileg egyszer, felismerhet felszlt md egysgekbl ll. A mon
datokhoz hasonlan az egyes SQL utastsok (ezeket lekrdezsnek nevezzk) nyelvi alkot-
lemekre tagoldnak. (Vizsgldsaink kiindulsi pontja termszetesen az angol nyelv.) Ve
gyk szemgyre a kvetkez pldkat:
34 | I. RSZ. BEVEZETS
CREATE TABLE p e o p le (name CHAR(10 ))
ig e t r g y m e ll k n v
INSERT INTO p e o p le VALUES ( 'm e ')
ig e r s z e s h a t r o z t r g y
SELECT name FROM p e o p le WHERE name
ig e t r g y r s z e s h a t r o z m e ll k n v
Az SQL legtbb megvalstsa, gy a MySQL sem tesz klnbsget a kis- s a nagybetk kztt.
Hz azt jelenti, hogy nem lnyeges, milyen betkkel rjuk az SQL kulcsszavakat, ha egybknt
hibtlanok. Az elz CREATE kulcsszavas pldt akr gy is rhattuk volna:
cR E atE TAblE p e o p le (name cH aR (10 ))
A kis- s nagybetk vegyes hasznlata csak az SQL kulcsszavakban megengedett.* A MySQL
esetben az adatbzisok, a tblk s az oszlopok nevben azonban a kis- s nagybets rs
md klnbsget jelent. Mivel az rsmd nem egyformn fontos az sszes adatbzis-kezel
rendszerben, az ltalnos jelleg adatbzis-alkalmazsok fejlesztsekor abbl clszer kiindul
ni, hogy az rsmd a nevekben mindig klnbsget fejez ki.
Az SQL lekrdezsek els eleme mindig egy ige. Ez jelli azt a mveletet, amelyet az adat-
bzis-kezel rendszernek vgre kell hajtania. Br az utastsok tovbbi rsze az adott kulcssz
tl fgg, formtuma ltalnos: szerepel benne az objektum, amelyre a mvelet vonatkozik,
valamint a mvelethez felhasznland adatok lersa. A CREATE TABLE p e o p le (name
CHAR (10) ) lekrdezsi pldul a CREATE ige s a TABLE trgy alkotja. A lekrdezs tovb
bi rsze a ltrehozand tblt rja le.
Az SQL lekrdezsek az gyflnl kezddnek (az gyfl az az alkalmazs, amelyen keresz
tl a felhasznl az adatbzissal kommunikl). Az gyfl sszelltja a lekrdezst a felhasz
nli mveletek alapjn, majd elkldi azt az SQL kiszolglnak. A kiszolgl feldolgozza a le
krdezst, s vgrehajtja a megadott mveletet. Miutn azt befejezte, valamilyen rtket vagy
rtkkszletet kld vissza az gyflnek.
Az SQL elsdleges clja a mveletek tovbbtsa az adatbzis-kiszolglhoz, ezrt nincs meg
benne az ltalnos cl nyelvek rugalmassga. Az SQL funkciinak nagyobb rsze az adatb
zis bemeneti s kimeneti adatainak kezelshez kapcsoldik. Ezek a funkcik az adatok felv
tele, mdostsa, trlse s olvassa. Az SQL a felsoroltakon kvl ms funkcikat is tartalmaz,
de ezek clja is minden esetben az adatbzis adatainak kezelse.
SQL parancsok kldse a MySQL kiszolglra
Az SQL parancsok tbbfle eljrssal is elkldhetk a MySQL kiszolglra. A legltalnosabb
mdszer a III. rszben ismertetett alkalmazsprogramozsi felletek valamelyiknek haszn
lata. Ebben a fejezetben azonban a mysql interaktv parancssori eszkz hasznlatt javasol
juk. A programot a parancssorbl futtatva a kvetkezt lthatjuk a kpernyn:
* Az ttekinthetsg rdekben a knyvben csupa nagybetvel rtuk az SQL kulcsszavakat. Gyakorlati hasznlatra is ezt az egyezmnyes jellst javasoljuk.
3. FEJEZET. AZ SQL S A MySQL KAPCSOLATA 3 5
[0 9 . 04pm] c a r th a g e $ mysql -u root -pE n te r p assw o rd :
W e l c o m e to Lhe MySQL m o n it o r . Commands end w i t h ; o r \g.Your MySQL c o n n e c t io n i d i s 3 t o s e r v e r v e r s io n : 3 .2 2 .2 9
Type ' h e lp ' to r h e lp-
m ysq l>
Ezzel a mysql paranccsal rool felhasznlknt (-u kapcsol) lehet kapcsoldni a helyi gpen
tallhat MySQL kiszolglhoz. Az gyfl ekzben jelsz megadst kri (-p kapcsol). Tvo
li gpeken tallhat MySQL kiszolglkhoz a -h kapcsol megadsval lehet kapcsoldni:
[09:04pm] c a r th a g e S mysql -u root -h db.imaginary.com -p
Az opercis rendszer, illetve a MySQL felhasznlnevei kztt nincs sszefggs. A MySQL
sajt maga tartja nyilvn a felhasznlkat, s a MySQL gazdja az j felhasznlkat az adott gaz
dagptl fggetlenl veheti fel. Ennek kvetkeztben a root felhasznl kivtelvel senki
sem frhet hozz a MySQL tiszta teleptshez. Ez a root felhasznl nem a Unix root felhasz
nli fikja. ltalnos szablynak tekinthet a kvetkez: csak akkor kapcsoldjunk root fel
hasznlknt a MySQL kiszolglhoz, ha felgyeleti tevkenysgeket kvnunk vgrehajtani
az adatbzisban. I la a JMySQL pldnyt amgy is gyakorlsi cllal teleptettk, a fejezetben
lertak kiprblshoz rdemes root felhasznlknt kapcsoldni, gy ..lesben nylik lehe
tsgnk adatbzisok ltrehozsra s trlsre. Ellenkez esetben a megfelel felhasznl-
nevet. hasznljuk.
A mysql elindtsa utn berhatok az SQL parancsok, akr egy sorban, akr tbb sorra bont
va. A parancsok vgrehajtsa a pontosvessz bersa utn kezddik el:*
m y sq l> SELECT book_number -> FROM book
I book_num ber I
1 I
3 rows in s e t (0 .0 0 sec)
A mysql parancssor hasznlatakor az gyfl eszkzeinek fordtsi paramtereitl fggen l
talban lehetsg van parancsok elzmnyeinek megtekintsre. Ha ezt a funkcit beford
tottk a mysql gyflbe, a Fel s a Le billentyvel tekinthetk l az elzleg vgrehajtott SQLutastsok.
^ MySQL az SQL vgrehajtst jelz \g karakterekkel lezrt SQl utastsokat is elfogadja.
36 I RSZ. BEVEZETS
A datbzisok ltrehozsaA MySQL hasznlathoz els lpsknt adatbzist kell ltrehozni. Elszr vizsgljuk meg a
MySQL tiszta teleptsben tallhat adatbzisokat a SHOW DATABASES paranccsal. A MySQL
3-23.40 teleptsekor a kvetkez tblk jnnek ltre:
m ysq i> SHOW DATABASES;
D a :a c a se
m ysql
t e s t
2 rows in s e t (0 .3 7 sec )
A m ysql nev els adatbzis a MySOL rendszeradatbzisa, amellyel az 5. fejezet foglalkozik
rszletesebben. A t e s t nev msodik adatbzis kivlan alkalmas a MySQL hasznlatnak
gyakorlsra. Ha nem tiszta teleptsrl van sz, elfordulhat, hogy a kiszolgln ms adatb
zisok is tallhatk- Most azonban inkbb j adatbzist hozunk ltre, ezzel szemlltetve a MySQL
CREATE utastsnak hasznlatt:
CREATE DATABASE TEMPDB;
Folytatva a pldt az j TEMPDB adatbzissal dolgozunk:
USE TEMPDB;
Vgl a DROP DATABASE paranccsal trljk ezt az adatbzist:
DROP DATABASE TEMPDB;
A CREATE utastssal j objektumok hozhatk ltre, a DROP utastssal pedig megsemmist
hetek. ahogy az imnt is tettk.
Tblk kezelseA megszerzett tudssal felvrtezve mr kapcsoldhatunk a MySQL kiszolglkon tallhat adat
bzisokhoz. A fejezet tovbbi rszeiben hasznlhatjuk a MySQL ltal tartalmazott t e s t adat
bzist, vagy a gyakorlsra ltrehozott adatbzist. A SHOW parancs segtsgvel jelenthetk meg
az aktulis adatbzis tblinak listja, az adatbzisok kilistzshoz hasonl mdon Az j te
leptseknl a t e s t adatbzisban nincsenek tblk. A kvetkezkben a SHOW TABLES pa
rancs kimenete lthat, vagyis a m ysql rendszeradatbzis tartalma:
3. FEJEZET AZ SQL S A MySQL KAPCSOLATA 37
m y sq l> USE mysql;D a tabase ch anged
m y sq l> SHOW TABLES;+----- - +I Tab1e s_in__mys q 1 I
I co lu m nsp r iv
| db
| fu n c
| hosu
I t a b i e s _ p r iv i
I u se r I
+------
6 rows in set. (0 .0 0 sec )
Ez az a hat rendszertbla, amely a MySQL mkdshez szksges. Vegyk szemgyre kze
lebbrl valamelyiket. Ehhez a DESCRIBE parancsot hasznlhatjuk:
m y sq l> DESCRIBE db+
1 F ie ld 1 Type 1 N u l l 1 Key 1 D e f a u l t 1 E x tra
I H ost 1 c h a r (60) b in a r y 1 1 PRI 1 1
1 Db 1 c h a r (64) b in a r y 1 1 PRI 1 1
1 U ser 1 c h a r (16) b in a r y 1 1 PRI 1 1
1 S e le c t _ p r iv 1enum ( ' N ' , ' Y ' ) 1 1 N 1
1 I n s e r t _ p r iv 1enum ( ' N ' , ' Y ' ) I 1 N 1
1 U p d a te _ p r iv 1enum ( ' N ' , ' Y ' ) I 1 1 N I
i D e le t e _ p r iv 1enum ( ' N ' , ' Y ' ) I 1 1 N 1
C r e a te _ p r iv 1enum ( ' N ' , ' Y ' ) 1 i I N 1
1 D r o p _ p r iv 1enum ( ' N ' , ' Y ' ) I 1 1 N 1
1 G r a n t _ p r iv 1enum ( 'N ' , ' Y ' ) 1 1 I N 1
1 R e fe r e n c e s _ p r iv Ienum ( ' N ' , ' Y ' ) I 1 1 N 1
1 In d e x _ p r iv 1enum ( ' N ' , ' Y ' ) I 1 1 N 1
1 A l t e r _ p r i v 1enum ( ' N ' , ' Y ' ) 1 1 1 N 1
13 rows i n s e l (0 . 36 sec )
A kimenet tartalmazza a tbla oszlopainak adattpust, a null rtkek engedlyezsre vonat
koz tjkoztatst, a kulcs tpust, az esetleges alaprtkeket, valamint a kiegszt adatokat.
Ha mindez egyelre nem mondana semmit, nincs ok az aggodalomra. A fejezet ksbbi r
szeiben mindegyik elemet kzelebbrl is megvizsgljuk.
Most mr kszen llunk az els tbla ltrehozsra. Elszr is kapcsoldjunk ismt a MySQL
tiszta teleptsben tallhat t e s t adatbzishoz:
USE t e s t ;
jelttlenl ellenrizzk, hogy valban a t e s t adatbzishoz kapcsoldtunk-e, mivel nem
enne? j tlet a m ysql adatbzisban ltrehozni a tblt. A tbla, az adatok strukturlt trolja.
a rcl
38 I RSZ. BEVEZETS
p e o p le
name 1 c h a r (10) n o t n u l l
a d d re s s 1 t e x t (100)
i d 1 i n t
A tbla az oszlopok nevn kvl az egyes mezk tpust, valamint az azokhoz kapcsold egyb
informcit is tartalmazza. A mez adattpusa hatrozza meg a mez ltal tartalmazott adat
fajtjt. Az SQL adattpusai elgg hasonltanak az egyb programnyelvekben hasznlatos adat
tpusokhoz. A teljes SQL szabvny az adattpusok nagy vlasztkt knlja. A MySQL tartalmaz
za ezek tlnyom rszt, s ezenkvl nhny specilis adattpust is.
A tblk ltrehozsnak ltalnos szintaxisa a kvetkez:
CREATE TABLE tblanv (oszlopnvl tpus [mdostk]
[, oszlopnv2 tpus [mdostk]])
Az rvnyes azonostkat (tblanv vagy oszlopnv) az adott adatbzis-kezel
rendszer hatrozza meg. A MySQL esetben az azonostk legfeljebb 64 karakter
hosszsgak lehelnek, tartalmazhatnak S karaktert s kezddhetnek rvnyesV szmmal. Ami azonban mg fontosabb, a nyelvre jellemz karakterkszletben sze
repl brmelyik karakter hasznlhat az azonostkban.
Az oszlopok tartalmazzk a tbla sorait alkot klnll adatokat. A tblk tetszleges szm
oszlopot foglalhatnak magukban, azonban tl sok oszlop hasznlata a tbla hatkonysg
nak rovsra mehet. Ez az a pont, ahol rendkvl fontos szerepe van a krltekint adatbzis
tervezsnek (ezt a 7. fejezetben trgyaljuk). Megfelelen normalizlt tblk ltrehozsval ssze
kapcsolsok alakthatk ki a tblk kztt, gy az adatok keresse nem csak egy, hanem tbb
tblban hajthat vgre. Az sszekapcsolsokrl a fejezet ksbbi rszben szlunk.
Vizsgljuk meg a kvetkez CREATE utastst:
CREATE TABLE USER (
USER_ID B IG INT UNSIGNED NOT NULL PRIMARY KEY,
USERJNAME CHAR(10) NOT NULL,
LAST_NAME VARCHAR(3 0 ) ,
FIRST_NAME VARCHAR(30) ,
OFFICE CHAR(2) NOT NULL DEFAULT 'N Y ') ;
Ez az utasts egy USER nev tblt hoz ltre, amely t oszlopot tartalmaz: USER_ID, USER_NA-
ME, LAST_NAME, FIRST_NAME s OFFICE. Az oszlopnevek mellett szerepelnek az adatt
pusok, ezeket kvetik az esetleges mdostk.
A NOT NULL mdost arra utal, hogy az adott oszlop nem tartalmazhat res rtkeket.
Null rtk megadsakor az SQL hibt jelez. Mint tudjuk, a kivtel ersti a szablyt. Nincs ez
mskpp itt sem: ha az oszlop AUTO_INCREMENT bellts, az res rtk hatsra az adat
bzis automatikusan llt el rtket. (Ezzel mg foglalkozunk a fejezet ksbbi rszben.) A
msodik kivtellel akkor tallkozhatunk, ha alaprtkel adunk meg valamelyik oszlopban, mint
3. FEJEZET. AZ SQL S A MySQL KAPCSOLATA 39
az elz plda OFFICE oszlopa esetben. Null ltk megadsakor az OFFICE oszlop a 'NY'
alaprtket veszi fel. (Az adattpusokkal s a PRIMARY KEY mdostval szintn ebben a fe
jezetbe1"1 ta ll kozhatu nk.)Az let legtbb terlethez hasonlan a rombols itt is sokkal knnyebb, mint az pts. A
tblk a kvetkez paranccsal tvolthatk el az adatbzisbl:
DROP TABLE tblanv
A parancs vgrehajtsa utn nyoma sem marad a tblnak az adatbzisban. A MySQL megm-
sthatatlanul trli a megadott tbla valamennyi adatt. Ha a tblrl nem kszlt biztonsgi m
solat, semmi esly sincs a trlt adatok visszalltsra. Mindezekbl azt a kvetkeztetst kell
levonnunk, hogy egyrszt nincs fontosabb a rendszeres biztonsgi mentsnl, msrszt foko
zott krltekintssel kell eljrni a tblk trlsekor. Ez a gyakorlat sok bosszsgtl kmlhet
meg mindenkit.
A MySQL lehetv teszi tbb tbla egyttes trlst is. Ehhez a tbla neveket vesszvel kell
elvlasztani. A DROP TABLE p e o p le , a n im a ls , p la n t s parancs pldul trli mind a h
rom megadott tblt. Az IF EXISTS mdost hasznlatval elkerlhetk azok a hibk, ame
lyek abbl addnak, hogy nem ltezik a trlni kvnt tbla. Ez a mdost az adatbzis s a
tblk ltrehozsra sszelltott terjedelmes szkriptekben lehet hasznos. Az adatbzis ltreho
zsa eltt rdemes lefuttatni a DROP TABLE IF EXISTS t b la n v parancsol.
A MySQL adattpusaiA tblkban tallhat valamennyi oszlopnak van valamilyen tpusa. Emltettk mr. hogy az
SQL adattpusai nem sokban klnbznek a hagyomnyos programnyelvek adattpusaitl. Mg
a legtbb nyelv csak a legszksgesebb adattpusokat tartalmazza, az SQL jval messzebb megy
ennl, az tlagos napi munkban jl hasznosthat adattpusok, pldul a DATE bevezets
vel. A DATE tpus adatok ltalnosabb numerikus adattpussal is trolhatk lennnek, m a
dtumfeldolgozs ignyeihez igaztott adattpussal egyszerbb vlik az SQL hasznlata, vagy
is megvalsul az SQL egyik elsdleges clja.
A MySQL ltal kezelt SQL adattpusok rszletes ismertetse a 16. fejezetben olvashat. A
3.1. tblzat a leggyakoribb tpusok kivonatos listjt tartalmazza.
3_]_j_icihlzat. A MySQL nhny ltalnos adattpusa (a teljes lista a 16. fejezetben tallhat)
Adattpus __________ Lers____________________________________________________ _
Egsz rtk. A MySQL lehetv teszi eljeles s eljel nlkli INT
rtk hasznlatt is.
Lebegpontos rtk. Ez a tpus nagyobb rtktartomnyt s pontos
sgot knl, mint az INT, azonban hinyzik belle az INT szmt
si pontossga.
CHAR b o s s z s g ) Rgztett hosszsg karakteres rtk. A CHAR tpus mezk nem
tartalmazhatnak a megadott rtknl hosszabb karaktersorozatot. A
kevesebb karaktert tartalmaz mezket szkzk tltik ki. Ez a t
pus az SQL megvalstsainak leggyakrabban hasznlt tpusa
CHAR {hosszsg ) Vltoz hosszsg karakteres rtk.
1 (h o s s z s g ) Vltoz hosszsg karakteres rtk.
40 I RSZ. BEVEZETS
3-1. tblzat, (folytats)________________________________________ ___________________________
Adattpus_________________Lers______________________________
DATE Szabvnyos dtumrtk. A DATE adattpus tetszleges mltbeli, je
lenbeli s jvbeli dtumok trolsra alkalmas.
TIME Szabvnyos idrtk. Ez a tpus a dtumoktl fggetlenl trolja
az idpontokat. Dtummal egytt hasznlva meghatrozott dtu
mot s idt trol. Ezenkvl a MySQL DATETIME tpusval egy me
zben trolhat a dtum s az id.
Az UNSIGNED attribtum az ssze numerikus rtknl hasznlhat. Ez a mdost csak pozi
tv (eljel nlkli) rtkeket engedlyez az oszlopban. Az eljel nlkli mezk fels hatra az
eljeles megfeleljk ktszerese. Az eljel nlkli TINYINT - az SQL egybjtos numerikus
adattpusa - mez tartomnya pldul 0 s 255 kz esik, ellenttben az eljeles megfeleljvel, ahol a tartomny kt hatrrtke -128, illetve 127.
A MySQL a 31. tblzatban felsoroltaknl jval tbb adattpust tartalmaz. Az ltalnos prog
ramozsi feladatok vgrehajtsakor azonban legtbbszr ezekre van szksg. AMySQL tblk
tervezsekor a trolni kvnt adatok mrete a legfontosabb szempont.
Num erikus tpusok
A tblk ltrehozsnak elfelttele a bennk troland adatok tpusnak ismerete. Az olyan
alapvet dntseken kvl, hogy karakteres vagy numerikus adatokrl van-e sz, tudnunk kell
a trolni kvnt adatok megkzelt mrett. Ha a mez numerikus, mekkora lehel a maxim
lis rtk? Mekkora lehet a minimlis rtk? Vllozhat-e ez ksbb? Ha a legkisebb rtk min
dig pozitv vagy nulla, rdemes eljel nlkli tpust vlasztani. Mindig azt a legkisebb numeri
kus tpust kell vlasztani, amely mg megfelel a vrhat legnagyobb rtknek. Az orszgok n
pessgi adatainak trolsra pldul eljel nlkli INT tpus a legmegfelelbb, ugyanis ez egyet
len orszgban sem lehet negatv rtk. Ezenkvl az eljel nlkli INT mez elg nagy ahhoz,
hogy trolni tudja egy orszg lakosainak szmt, hacsak az meg nem haladja az egsz Fld la
kossgnak ltszmt.
Karakteres tpusok
A karakteres tpusok kezelse egy kicsit bonyolultabb. Nem elg a karaktersorozatok hossz
sgra gyelni, az tlagos mrettel s a klnbz hosszsgokbl add varicis lehets
gekkel is foglalkozni kell. A jelenlegi cljainknak megfelel meghatrozs szerint az index olyan
mezk kombincija, amelyekben keresst kvnunk vgrehajtani, vagy egyszerbben a WHERE
zradkban tallhat mezkrl van sz. Az indexels azonban jval bonyolultabb krdse
ket is felvei, cs hamarosan visszatrnk erre a tmra. Ezen a ponton a legfontosabb tudni
val. hogy a karakteres mezk indexelse akkor a leghatkonyabb, ha a mezk rgztett hossz
sgak. 1 la csak kevs, illetve optimlis esetben semmilyen varicis lehetsg nincs a karakteres mezk hosszsgra vonatkozan, a CHAR adattpus a megfelel vlaszts. Az orszg-
kdok pldul j esllyel plyzhatnak a CHAR adattpusra. A szabvnyos ktkarakteres or
szgkdok tfog listjt az ISO tartalmazza (pldul az Egyeslt llamok kdja US, Francia
3. FEJEZET. AZ SQL S A MySQL KAPCSOLATA 4 1
o rs z g FR stb.).* Ezek a kdok minden esetben kt karakterbl llnak, ezrt a CHAR (2 )
adattpus a legmegfelelbb az orszgkdok trolsra.
A CHAR mezk hasznlathoz nemcsak rgztett hosszsg rtkek alkalmasak. gyelni
kell persze arra, hogy lehetleg ne legyen sok varicis lehetsg. A telefonszmokat pldul
oblmamentesen trolhatjuk CHAR (13 ) mezkben, habr a telefonszmok orszgonknt
ms hosszsgak. Az ebbl add hosszvltozatok szma elhanyagolhat, nincs rtelme vl
toz h osszsg mezben trolni a telefonszmokat. Ne feledkezznk el arrl sem, hogy a
CHAR mezk, fggetlenl a bert karaktersorozatok hosszsgtl, mindig pontosan a bell
tott mezmretnek megfelel helyet foglalnak le, se tbbel, se kevesebbel. A trolt szveges
elem s a mez hosszsgnak klnbsgt szkzk egyenltik ki. A telefonszmos pld
ban emltett nhny felesleges karakter korntsem jelent mrtktelen pazarlst, azonban gyel
ni kell az sszer mrethatrok betartsra.
A kiszmthatatlanul klnbz hosszsg szveges elemek trolsra a vltoz hossz
sg mezk alkalmasak. A legegyszerbb, egyszersmind a legltalnosabb plda a vltoz
hosszsg mezk hasznlatra a webes URL cmeket trol mezk. Az ilyen cmek tbbsgk
ben (pldul http://www.ora.com, hp://www.imaginary.com, http://iuiviu.mysql.com) viszony
lag rvidek, ezrt nem okoznak klnsebb gondot. Esetenknt elfordulhatnak persze a
kvetkezhz hasonl cmek is:
h t lp://www. winespectalor. com/Wii ie/Spectator/
_notes 15527293926834323221480431354?Xvl 1 =&Xr5=&Xvl =&type-region-search-
code=&Xa 14=/lora+spnngs&Xv4=
A pldaknt felhozott URL trolsra alkalmas CHAR mez ltrehozsval jelents vesztes
get okozunk a tbbi trolt, tlagos hosszsg URL cmnl. Vltoz hosszsg mez defini
lsval gy trolhatk az ilyen kivteles, tlmretezett rtkek, hogy ezzel nem okozunk vesz
tesgei a rvidebb rtkeket trol mezk esetben.
A MySQL vltoz hosszsg mezi csak annyi helyet foglalnak el, amennyi a mezrt
kek trolshoz szksges. A ..Hall, vilg! karaktersorozatot tartalmaz VARCHAR (255) me
z pldul csak 14 bjtot foglal el (1 bjt karakterenknt, valamint a hosszsg trolshoz mgegy bjt).
A My SQL clir az ANSI szabvnytl, mivel nem tlti ki a VARCHAR mezket. Az r
tkek trolsa elli trli a felesleges szkzket.
A mez megadott hosszsgt meghalad hosszsg karaktersorozatok nem trolhatk. A
ARCHAR (4) mezbe pldul legfeljebb ngy karakterbl ll karaktersorozat rhat. A boldog szletsnapot karaktersorozat bersakor a MySQL levgja a mrethatron tlnyl sz-
egiszt, s csak a bold karakterek maradnak meg. Ennek az a htrnya, hogy nincs mdunk
a belltott mezmretet meghalad hosszsg karaktersorozatok trolsra. A 3-2. tblzat
n a kvetkez adatok sszehasonltsa szerepel klnbz adattpusok esetn: a korb-
k -^S a klnbz terletek jellse nem azonos a nemzetkzi hasznlatra sznt alkalmazsokban. A
h* CI () mukdshez a kdokat trol oszlopot clszer CHAR (3 ) tpusra lltani, mert pldul Ausztrliban ' n' a iJktcrcs llamkdokat hasznlnak. Az ISO ezeket a hromkarakteres kdokat is szabvnyba foglalja
4 2 I. RSZ BEVEZETS
ban pldaknt bemutatott 144 karakteres Wine Spectator URL trolshoz szksges hely, a3 tlagos, 30 karakter hosszsg URL trolshoz szksges hely, valamint az adott tpus ma
ximlis karaktersorozat-mrete.
J .2 . tblzat. A MySQL klnbz karakteres adattpusainak trolshoz szksges bel
Adattpus 144 karakter
helyignye
30 karakter helyignye
Maximlis karakier-
sorozat-mret
CHAR(150) 150 150 255
VARCHAR(150) 145 31 255
TINYTEXT(150) 145 31 255
TEXT(150) 146 32 65535
MEDIUMTEXT(150) 147 33 16777215
LONGTEXT(150) 148 34 4294967295
A tblzatban megfigyelhet, hogy a helyigny 1-1 bjttal nvekszik a vltoz hosszsg ME-
DIUMTEXT s LONGTEXT adattpus esetben. Erre a vltoz hosszsg mezk mretnek
trolshoz van szksg. A TEXT tpus egy kiegszt bjtot hasznl a mezben lehetsges leg
hosszabb szveg trolshoz. A MEDIUMTEXT tpu