George Reese a MySQL Kezelese Es Hasznalata

429

Click here to load reader

description

George Reese a MySQL Kezelese Es Hasznalata

Transcript of George Reese a MySQL Kezelese Es Hasznalata

  • 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:

    [email protected]

    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

    [email protected]

    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