568
John L. Viescas, Michael J. Hernandez S-Iekérdezések földi halandóknak Budapest, 2009

SQL.lekerdezesek.foldi.halandoknak.2009.eBook DigIT

Embed Size (px)

Citation preview

  • John L. Viescas, Michael J. Hernandez SQL-Iekrdezsek fldi halandknak

    Budapest, 2009

  • John L. Viescas Michael J. Hernandez

    SQLIekrdezsek fldi halandknak

    Gyakorlati tmutat az SOL nye!v adatkezelshez

    "'fJJ."'f Addison-Wesley

  • A forelits a kvetkez angol eredeti alapjn kszlt:

    John L. Viescas, Michael J. Hernandez: SQL Queries for Mere Mortals: A Hands-On Guide to Data Manipulatien in SQL

    Authorized translation from the English language edition, entitled SQL QUERIES FORMERE MORTALS'": A HANDS-ON GUIDE TO DATA MANIPULATION IN SQL, 2nd Edition, ISBN 0321444434, by VIESCAS,

    JOHN L.; HERNANDEZ, MICHAELJ., published by Pearson Education, Inc., publishing as AddisonWesley Professional.

    Copyright 2008 by Michael]. Hernandez and John L. Viescas. Translation and Hungarian edition 2009 Kiskapu Kft. Ali rights reserved. No part of this book, induding interi or design, cover design, and icons, may be reproduced or transmitted in any form, by any means (electronic, photocopying, recording, or otherwise) without the prior written permission of the publisher.

    Trademarked names appear throughout this book. Rather than list the names and entities that own the trademarks or insert a trademark symbo! wi th each mention of the trademarked name, the publisher states that it is using the names for editorial purposes only and to the benefit of the trademark owner, with no intention of infringing u pon that trademark

    Fordts s magyar vltozat 2009 Kiskapu Kft. Minden jog fenntartva! A knyv egyetlen rsze sem sokszorosthat semmilyen mdszerrel a Kiad elzetes rsos engedlye nlkl. Ez a korltozs kiterjed a bels tervezsre, a bortra s az ikonokra is. A knyvben bejegyzett vdjegyek s mrkanevek is felbukkanhatnak Ahelyett, hogy ezt minden egyes helyen kln jeleznnk, a Kiad ezennel kijelenti, hogy a mben elfordul valamennyi vdett nevet s jelzst szerkesztsi clokra, jhiszemen, a nv tulajdonosnak rdekeit szem eltt tartva hasznlja, s nem ll szndkban az azokkal kapcsolatos jogokat megszegni, vagy ktsgbe vonni.

    A szerzk s a kiad a lehet legnagyobb krltekintssel jrt el e kiadvny elksztsekor. Sem a szerz, sem a kiad nem vllal semminem felelssget vagy garancit a knyv tartalmval, teljessgvel kapcsolatban. Sem a szerz, sem a kiad nem vonhat felelssgre brmilyen baleset vagy kresemny miatt, mely kzvetve vagy kzvetlenl kapcsolatba hozhat e kiadvnnyal.

    Lektor: Rzmves Lszl Fordts: Blint Istvn Zsolt, Borbly Gyrgy, Cspny Gergely Lszl, Fodor Ferenc Dniel, Heiner Pter, Kmeczk Csilla, Koronezay Dvid, Rzmves Lszl, Szabados Ern, Varga Pter Mszaki szerkeszt: Csutak Hoffmann Levente Trdels: Kis Pter

    Felels kiad a Kiskapu Kft. gyvezet igazgatja 2009 Kiskapu Kft. 1134 Budapest, Csng u. 8. Fax: C +36-1) 303-1619 http:/ /www.kiskapukiado.hu/ e-mail: [email protected]

    ISBN: 978 963 9637 52 8

    Kszlt a debreceni Kinizsi Nyomdban Felels vezet: Brds jnos

  • "Hacsak nem vagyunk profik, ez az egyetlen SQL-knyv, amire valaha szksgnk lesz. A szerzk felfedik az sszetett lekrdezsek rejtlyt, s olyan vilgosan magyarzzk el a klnbz elveket s eljrsokat, hogy egy 'fldi haland' is kpes lesz emberfeletti tetteket vghezVinni. Kihagyhatatlan knyv!"

    - Graham Mandeno, adatbzis-szakrt

    "n elssorban ennek a knyvnek az els kiadsbl tanultam meg az SQL hasznlatt: remekl szerkesztett knyv, amely jl felptett mdon mutatja be a nyelvet. rlk, hogy egy msodik kiadst is megrt, gy msoknak is a hasznra lehet. Onnan kezdve, hogy miknt tervezzk meg az adattblinkat, hogy az SQL segtsgvel hatkonyan kezelhessk az adatainkat (ami ltalban gondot jelent a kezdknek), a knyv rszletesen bemutatja az SQL kpessgeit s klnfle szerkezeteit, gy az olvas a ktet elolvassa s a pldk ttekintse utn flig-meddig szakrtv vlhat. Megtanuljuk, hogyan alakthatunk egy angol nyelv krdst rtelmes SQL-utastss, ami nagyban elsegti, hogy elsajtthassuk a nyelvet, a vals letbl vett szmos plda alapjn pedig kpet formlhatunk arrl, hogy miknt adhatunk vlaszokat az SQL segtsgvel az adatbzisban tallhat adatokra vonatkoz krdsekre. Mr egyetlen olyan megjegyzs elolvassa, amely egy csapdra figyelmeztet, tbb pnzt takarthat meg neknk a knyv rnl, rnivel gy elkerlhetjk az adott problmt, amikor lekrdezseket runk. Ha az adatbzisaink kpessgeit teljes mrtkben ki szeretnnk aknzni, ezt a knyvet felttlenl el kell olvasnunk!"

    - Kenneth D. Snell, Ph.D., adatbzis-tervez s -programoz

    "Nem tudom, hogy az iskolban mg tantjk-e - ha nem, az elg baj -, de annak idejn mi a hetedik vagy a nyolcadik osztlyban megtanultuk, hogyan rajzolhatunk fel egy mondatot diagramknt Lehet, hogy mr nem emlksznk r, hogyan csinltuk, de rnindnyjunk mondatszerkesztse javult ltala. John Viescas s Mike Hernandez bizonyra nem felejtettk el, mert kpesek r, hogy htkznapi angol krdseket alaktsanak t SQL-utastsokk, s rnindenki szmra knnyen rthetv teszik az E. F. Codd-nak a relcis adatbzisok tervezesrl rott eredeti munkjban vzolt bonyolult matematikai halmazelmletet s elsrend prediktumlogikt. Knyvk nlklzhetetlen minden adatbzis-tervez szmra. Ha kezd-kzphalad szint tanknyvet keresnk az SQL-rl, ez a ktet ktelez anyag, fggetlenl attl, hogy hny msik knyvet vesznk meg mg."

    - Aruin Meyer; MCP, MVP

  • "Az SQL-lekrdezsek fldi halandknak msodik kiadsa lpsrl lpsre halad, olvasmnyos bevezetst ad az SQL-lekrdezsek rsba. Pldk szzait tartalmazza rszletes magyarzattal elltva, s minden eszkzt megad, ami ahhoz szksges, hogy kpesek legynk megrteni az SQL-lekrdezseket, valamint ltrehozni s mdostani azokat." - Keith W Hare, elnk, ISOliBC .JTCl SC32 WG3- nemzetkzi SQL-szabvnygyi bizottsg

    "Mg ma, a varzslk s kdgenertorok korban is biztos tudssal kell rendelkeznie a strukturlt lekrdeznyelvrl (SQL, Structured Query Language - a szabvnyos nyelv a legtbb adatbzisrendszerrel val kommunikcihoz) minden olyan adatbzis-fejlesztnek, aki sikeres szeretne lenni. Ebben a knyvben John s Mike nagyszer t munkt vgezve letre keltenek egy ltalban szraz s bonyolult tmt, s az anyagat logikus rendben, sok humorral s rengeteg hasznos pldval krtve tlaljk Azt kellene mondanom, hogy ktetknek minden komoly fejleszt knyvtrban kitntetett helyet kellene kapnia - csakhogy biztos vagyok benne, hogy olyan srn fogjk forgatni, hogy nem fog sok idt tlteni a polcon!"

    - Doug Steele, Microsoft Access-fejleszt, szakr

  • Tartalomjegyzk

    l. rsz A relcis adatbzisok s az SQL

    1. fejezet Mit jelent az, hogy nrelcisn? A fejezet tmakrei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Az adatbzisok fajti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 A relcis modell rvid trtnete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 A kezdetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 A relcis adatbzisprogramok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 A relcis adatbzisok felptse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Tblk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Mezk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Rekordok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Nzettblk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Kapcsolatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Mirt hasznosak szmunkra a relcis adatbzisok? . . . . . . . . . . . . . . . . . . . . . . 14 Hogyan tovbb? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 sszefoglals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    2. fejezet A helyes adatbzis-szarkezet kialakftsa A fejezet tmakrei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Mi a clja ennek a fejezetnek? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Mirt lnyeges a helyes szerkezet? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 A mezk finomhangolsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Mikor helyes egy nv? (Els rsz) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 A durva lek lecsiszolsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 A tbbrszes mezk feloldsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 A tbbrtk mezk feloldsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 A tblk finomhangolsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Mikor helyes egy nv? (Msodik rsz) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 A helyes szerkezet biztostsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 A feleslegesen tbbszr szerepl mezk feloldsa . . . . . . . . . . . . . . . . . . . . . . . 29

  • viii SOL-iekrdezsek fldi halandknak

    A kulcs az azonosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Szilrd kapcsolatok kialaktsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Trlsi szably meghatrozsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 A tblk szerepnek belltsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 A rszvtel mrtknek belltsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Ennyi az egsz? . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . 44 sszefoglals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    3. fejezet Az SQL rvid trtnete A fejezet tmakrei ............................................... 47 Az SQL eredete .................................................. 47 Az els megvalstsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 s megszletik egy szabvny. . . . ..................................... 50 Az ANSI/ISO szabvny fejldse ..................................... 51 Egyb SQL-szabvnyok ............................................ 54 Kereskedelmi megvalstsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Mit tartogat a jv? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 58 Mirt rdemes megtanulnunk az SQL hasznlatt? . . . . . . . .. . . . . . . . . . . . . . . 58 sszefoglals . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . . . . . . . . . . . . . . 59

    ll. rsz Az SOL alapjai

    4. fejezet Egyszer lekrdezsek frsa A fejezet tmakrei . . . . . . . . . . . ... . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . 63 Bemutatkozik a SELECT ........................................... 63 A SELECT utasts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Egy kis kitr: adat kontra informci . . . . . . .. . . . . . . . . . . . . . . . . . ... . . . . . 66 A krelmek lefordtsa SQL-re . . . . . . . . . . . . .. . . . . . .... . .... . .. . . . . . . . . 68 Szlestsk a ltkrnket! ......................................... 72 Rvidts hasznlata az sszes oszlop lekrshez . . . . . . . . . . . . . . . . . . . . . . . 73 A sorismtls kikszblse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Az informcik rendezse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Mieltt tovbblpnnk: jelsorrend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Rendezzk a sorainkati . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Ments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Pldk ......................................................... 82 sszefoglals ................................................... 89 nll feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

    5. fejezet Kapjunk tbbet egyszer oszlopoknl! A fejezet tmakrei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Mik azok a kifejezsek? . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . 94 Milyen tpus adatokat szeretnnk megjelenteni? . . . . . . . . . . . . . . . . . . . . . . . . 94

  • - - ,

    . . SQ!.iE!M!I.!Is.JQidi halal}knak.

    Adattpusok megvltoztatsa: a CAST fggvny . . . . . . . . . . . . . . . . . . . . . . . . . 97 Konkrt rtkek meghatrozsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Karakterlnc-literlok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Szmliterlok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Dtum-id literlok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 A kifejezsek tpusai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 sszefzs . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . l 04 Matematikai kifejezsek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . l 07 Dtum- s idmveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . 110 Kifejezsek hasznlata a SELECT zradkban . . . . . . . . . . . . . . . . . . . . . . . . . . 113 A kifejezsek elnevezse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 A matematikai kifejezsek hasznlata ................................ 117 A dtumkifejezsek hasznlata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    . . . . . 118 A "semmit" jelkpez rtk: a Null .................................. 120 Bemutatkozik a Null rtk .......... . . . . . . . . . .. . . . . . . . .. . . . . . . . .. . . 121 A Null rtkek htulti . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Pldk . . . . . . . .. . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 sszefoglals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 nll feladatok ................................................ 131

    6. fejezet Az adatok szrse A fejezet tmakrei . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . . . 133 A lekrdezsek finomtsa a WHERE segtsgvel . . . . . . . . . . . . .. . . . . . . . . . 133 A WHERE zradk ............................................... 134 A WHERE zradk hasznlati terletei ............................... 136 A keressi felttelek megfogalmazsa ................................ 137 sszehasonlts ................................................. 137 Tartomny ..................................................... 144 Tagsg belltsa ................................................ 148 Mintailleszts . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Null . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Sorok kizrsa a NOT mvelettel ................................... 155 Tbb felttel hasznlata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 AND s OR .................................................... 158 Az AND hasznlata .............................................. 158 Az OR hasznlata ............................................... 159 Az AND s az OR egyttes hasznlata . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . 161 Sorok kizrsa: msodik felvons ................................... 163 Kirtkdsi sorrend .............................................. 165 A felttelek elsobsge . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . 166 A kevesebb tbb . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . . . . . . . . . . . . . . . . 168 Egymst tfed tartomnyok ellenrzse ............................. 169 Visszatrs a Null-okhoz: egy figyelmeztet megjegyzs .................. 171

  • ...... "'

    SOL-iekrdezsek fldi halandknak

    Felttelek ms megfogalmazsban . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . 175 Pldk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...... . . . . . . . . . . . . . . . . . . . . . 176 sszefoglals . . . . . . . . . . . . . . . . . . . . . . . . . . ..... . .. . . . . . . . . .. . . . . . . . 183 nll feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... . . .. . . . . . . . . . 184

    lll. rsz Tbbtbls lekrdezsek

    7. fejezet Halmazokban gondolkodni A fejezet tmakrei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Mik azok a halmazok? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Halmazmveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . 191 Metszet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Metszet a halmazelmletben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . 192 Eredmnyhalmazok metszete . . . . . . . . . . . . . . . . . . . .. . . . .. . . . . . . . . . . . . 193 Metszetkpzssel megoldhat feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Klnbsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Klnbsg a halmazelmletben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Eredmnyhalmazok klnbsge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Klnbsgkpzssel megoldhat feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 Uni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Uni a halmazelmletben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Eredmnyhalmazok unija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 Unival megoldhat feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 Halmazmveletek az SQL-ben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 A klasszikus halmazmveletek s az SQL .. . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 Kzs elemek megtallsa: INTERSECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 Hinyz elemek megtallsa: EXCEPT (klnbsg) . . . . . . . . . . . . . . . . . . . . . 211 Halmazok egyestse: UNION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 sszefoglals . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . .. . . . . . . . . . . . . . . . 216

    8. fejezet Bels sszekapcsols A fejezet tmakrei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 Mi az aJOIN? . . . . . . . . . . . . . . . . . . . . . . . . . . . .... . . . . . ..... . .. . . . . . . . 217 Az INNERJOIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 Mit "szabad" JOIN segtsgvel sszekapcsolni? . . . . . . . . . . . . . . . . . . . . . . . . 218 Oszlophivatkozsok . . . . . . . . . . ... . . . . . . . . . . . . . . . . . . . . , ........... 219 Utastsforma ................................................... 220 A tblk hasznlata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 Korrelcis nevek (lnevek) hozzrendelse tblkhoz . . . . . . . . . . . . . . . . . . 225 SELECT utastsok begyazsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

    JOIN begyazsa JOlN-ba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Ellenrizzk a kapcsolatokat! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 Az INNER JOIN alkalmazsi lehetsgei . . . . . . .. . . . . . . . . . . .. . . ... . .. . . 235

  • S!l!::J!Isrdezsek fldi halandknak xi

    Kapcsold sorok keresse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 Egyez rtkek keresse . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . .. . . . . . . . . . . 236 Pldk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 Kt tbla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . 237 Kettnl tbb tbla . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Egyez rtkek keresse . . . . . . . . . . . . .. . . . . . . . .. . . . . . . . . . . . . .. . . . . . 247 sszefoglals . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . . . . . . . . . . . . . . . . . . 257 nll feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

    9. fejezet Kls sszekapcsols A fejezet tmakrei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 Mi az OUTERJOIN? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 A LEFT s a RIGHT OUTERJOIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 Utastsforma . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . 263 A FULL OUTERJOIN . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . 282 Utastsforma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 Nem kulcsmezkn vgzett FULL OUTER JOIN mvelet . . . . . . . . . . . . . . . . . 285 A UNION JOIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . 286 Az OUTER JOIN hasznlatnak terletei ... . . . . . . ... . . . . . . . . . . .. . . . . . . 286 Hinyz rtkek megtallsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . 287 Rszlegesen megfeleltetett informci megtallsa . . . . . . . . . . . . . . . . . . . . . . 287 Pldk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 sszefoglals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 nll feladatok . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

    1 O. fejezet Uni A fejezet tmakrei .............................................. 303 Mi az a UNION? ................................................. 303 UNION utastst tartalmaz lekrdezsek ............................. 306 Egyszer SELECT utastsok hasznlata . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . 306 sszetett SELECT utastsok egyestse ............................... 309 Tbb UNION mvelet hasznlata ................................... 313 Unik rendezse ................................................ 314 A UNION utasts hasznlatnak terletei ............................. 316 Pldk ........................................................ 317 sszefoglals . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . .. . . . .. . . .. . . . . . . . .. . 326 nll feladatok . . . . . . . . . . . . . . . . . . . . . . . . ... . . . . . . . . . . . . .. . . . . . . . 327

    11. fejezet Allekrdezsek A fejezet tmakrei . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . 329 Mi az az allekrdezs? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . .. . . . . . . 330 Sorallekrdezsek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 Tbla-allekrdezsek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . ... . . . 331

  • -------- - ------..... --

    xii SOL-iekrdezsek fldi halandknak ='""'------ -- --- ---

    Skalris allekrdezsek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 Allekrdezsek oszlopkifejezsknt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 Utastsforma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 Bevezets az sszest fggvnyek hasznlatba: a COUNT s a MAX . . . . . . . 334 Szrs allekrdezsekkel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 Utastsforma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 Az allekrdezsek lltsaiban hasznlt klnleges kulcsszavak . . . . . . . . . . . . 340 Az allekrdezsek hasznlati terletei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 Allekrdezsek felptse oszlopkifejezsknt . . . . . . . . . . . . . . . . . . . . . . . . . 352 Allekrdezsek hasznlata szrknt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 Pldk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 Allekrdezsek kifejezsekben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 Allekrdezsek szrkben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 sszefoglals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 nll feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365

    IV. rsz Adatok sszesftse s csoportosftsa

    12. fejezet Egyszeru sszesftsek A fejezet tmakrei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 sszest fggvnyek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 Sarok s rtkek megszmllsa a COUNT segtsgvel . . . . . . . . . . . . . . . . . . 374 rtkek sszeszmllsa oszlopokban s kifejezsekben . . . . . . . . . . . . . . . . . 375 sszeg kiszmtsa a SUM segtsgvel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 tlag kiszmtsa az AVG fggvnnyel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 A legnagyobb rtk meghatrozsa a MAX fggvnnyel . . . . . . . . . . . . . . . . . . 380 A legkisebb rtk meghatrozsa a MIN fggvnnyel . . . . . . . . . . . . . . . . . . . . 381 Tbb fggvny hasznlata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 sszest fggvnyek hasznlata szr'kben . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 Pldk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 sszefoglals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 nll feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392

    13. fejezet Adatok csoportosftsa A fejezet tmakrei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 Mirt csoportostsuk az adatokat? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 A GROUP BY zradk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 Utastsforma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 Oszlopok s kifejezsek vegyes hasznlata . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 A GROUP BY zradk hasznlata WHERE zradkban tallhat allekrdezsben 405 A SELECT DISTINCT utasts kivltsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 "Bizonyos korltozsokkal" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408

  • Oszlopokra vonatkoz megktsek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 Kifejezseken alapul csoportosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 Mikor hasznljuk a GROUP BY zradkot? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 Pldk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 sszefoglals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 nll feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421

    14. fejezet Csoportosftott adatok szrse A fejezet tmakrei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 A "clcsoport" j jelentse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 Szrkkel minden ms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 A WHERE vagy a HAVING zradkban szrjnk? . . . . . . . . . . . . . . . . . . . . . . . 430 Ne essnk a HAVING COUNT csapdjba! . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 A HAVING hasznlati terletei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 Pldk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 sszefoglals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 nll feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445

    V. rsz Adathalmazok mdostsa

    15. fejezet Adathalmazok frissftse A fejezet tmakrei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 Mi az az UPDATE? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 Az UPDATE utasts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 Az egyszer UPDATE utasts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 Egy rvid kitr: tranzakcik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 Tbb oszlop mdostsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 Egyes adatbzisrendszerek megengedik a JOIN hasznlatt

    az UPDATE zradkban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461 Allekrdezs hasznlata az UPDATE kifejezsben . . . . . . . . . . . . . . . . . . . . . . . 464 Az UPDATE hasznlati terletei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 Pldk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 sszefoglals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 nll feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479

    16. fejezet Adathalmazok beszrsa A fejezet tmakrei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 Mi az az INSERT? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 Az INSERT utasts

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 rtkek beszrsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 Az elsdleges kulcs kvetkez rtknek ellltsa . . . . . . . . . . . . . . . . . . . . . 488 Adatok beszrsa a SELECT utasts segtsgvel . . . . . . . . . . . . . . . . . . . . . . . 489

  • Az INSERT hasznlati terletei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 Pldk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497 sszefoglals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 nll feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505

    17. fejezet Adathalmazok trlse A fejezet tmakrei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 Mi az a DELETE? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 A DELETE utasts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 Minden sor trlse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509 Csak bizonyos sorok trlse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 A DELETE hasznlati terletei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 Pldk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516 sszefoglals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 nll feladatok ................................................ 522

    VI. rsz Fggelkek

    A fggelk Az SOL-szabvnynak megfelel diagramok 527

    B fggelk A mintaadatbzisok smja Sales Orders adatbzis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 Entertainment Agency adatbzis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 School Scheduling adatbzis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 Bowling League adatbzis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 Recipes adatbzis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537

    C fggelk Dtum- s idfggvnyek IBM DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539 Microsoft Office Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 Microsoft SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543 Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546

    D fggelk Ajnlott irodalom Adatbzisokrl szl knyvek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 Az SQL-rl szl knyvek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550

    Trgymutat 551

  • Elsz A:z SQL adatbzisnyelv nemzetkzi szabvnny vlsa ta eltelt 20, illetve az SQL adatbzis-kezel termkek piacra dobsa ta eltelt 25 vben az SQL vlt az adatok trolsnak, mdostsnak, kiolvassnak s trlsnek meghatroz nyelvv. Ma a vilg - s a vilggazdasg - adatainak jelents rszt SQL-adatbzisok troljk.

    A:z SQL ott van mindentt, mert az adatok kezelsnek igen hatkony eszkze. Jelen van a nagyteljestmny tranzakcifeldolgoz rendszerekben, a webes felletek mgtt, st tallkoztam mr vele hlzatfigyel eszkzkben s levlszemtszr tzfalakban is.

    A:z SQL-utastsok mai formjukban vgrehajthatk kzvetlenl, begyazhatk ms programozsi nyelveken rt kdokba, s hozzfrhetk hvsi felleteken keresztl. Megbjik a grafikus felletek fejleszteszkzeiben, a kdgenertorokban s a jelentsksztkben. Nem szmt, hogy lthat vagy rejtett mdon, de a httrben vgrehajtott lekrdezsek rendszerint SQL nyelvek Ahhoz teht, hogy megrtsk a mai alkalmazsok mkdst s jakat kszthessnk, ismernnk kell az SQL-t.

    A:z SQL-lekrdezsek fldi halandknak msodik kiadsa lpsrl lpsre halad, olvasmnyos bevezetst ad az SQL-lekrdezsek rsba. Pldk szzait tartalmazza rszletes magyarzattal elltva, s minden eszkzt megad, ami ahhoz szksges, hogy kpesek legynk megrteni az SQL-lekrdezseket, valamint ltrehozni s mdostani azokat.

    Adatbzis-szakrt tancsadknt, s mind az amerikai, mind a nemzetkzi SQL-szabvnygyi bizottsg tagjaknt sok idt tltk munkm sorn az SQL-lel, ezrt btran elhihetik nekem, hogy ennek a knyvnek a szerzi nem csak rtik az SQL-t, hanem azt is tudjk, hogyan lehet elmagyarzni a mkdst. Ez a kt kpessgk az, ami ezt a ktetet kivtelesen rtkes forrss teszi.

    Keith W Hare ftancsad, ]CC Consulting, Inc. alelnk, INCITS H2 - az Amerikai Egyeslt llamok SQL-szabvnygyi bizottsga elnk, ISO/IEC ]TC l SC32 WG3 - a nemzetkzi SQL-szabvnygyi bizottsg

  • A kiad elszava "A nyelv puszta termszetnl fogva kzssgi dolog,

    vagyis soha nem egy konkrt dolgot, hanem egy kompromisszumot fejez ki - azt, ami benned,

    bennem s mindnyjunkban kzs." - Thomas Barnest Hulme, Elmlkedsek

    Megtanulni, hogy miknt nyerhetnk ki s kezelhetnk informcikat egy adatbzisbl, ltalban zavarbaejt feladat, ugyanakkor viszonylag egyszer, ha tudjuk, mit is krdeznk, illetve rtjk, hogy milyen vltoztatst is prblunk eszkzlni az adatbzisban. Miutn megrtettk a krdst, lefordthatjuk egy olyan nyelvre, amelyet rninden mai adatbzisrendszer megrt- ami a legtbb esetben a Structured Query Language (SQL, strukturlt lekrdeznyelv). A krelmet egy SQL-utastss kell alaktanunk, hogy az adatbzis-kezel rendszernk tudja, hogy milyen adatokat szeretnnk kinyerni vagy mdostani. Az SQL biztostja az eszkzket ahhoz, hogy kommuniklni tudjunk az adatbzisrendszerreL

    Adatbzis-tancsadknt vgzett sok vnyi munknk sorn azt tapasztaltuk, hogy azoknak a szma, akiknek csupn adatok kiolvassra vagy egyszer mdostsokra van szksgk egy adatbzisban, messze meghaladja azokt, akiknek a feladata az adatbzist mkdtet prograrnak s alkalmazsok elksztse.

    Ezzel a tmval eddig sajnos egyetlen knyv sem foglalkozott kizrlagosan, klnsen nem a "fldi halandk" szemszgbl. Termszetesen sok j knyvet rtak az SQL-rl, de a legtbbnek az adatbzisok programozsa s fejlesztse llt a kzppontjban.

    Ezt figyelembe vve gy dntttnk, hogy ideje egy olyan knyvet rni, amely azt tantja meg, hogy miknt krdezhetnk le helyesen s hatkonyarr egy adatbzist. Knyvnk els kiadsa 2000-ben jelent meg. Ebben az j, javtott kiadsban abba is be szeretnnk vezetni az olvaskat, hogy az SQL-t hasznlatakor milyen alapvet eljrsokkal mdosthatjk az adatbzisokban tallhat adatokat.

  • xviii SQL-Iekrdezsek fldi halandknak

    Az Olvas teht a fenti dntsnk eredmnyt tartja a kezben. Knyvnk annyiban egyedlll az SQL-lel foglalkoz ktetek kztt, hogy az adatbzisrendszerek megvalstsaitl szinte teljesen fggetlenl trgyalja az SQL-t. A msodik kiads j pldk szzait, valamint a npszer nylt forrs MySQL adatbzis-kezel rendszer mintaadatbzisainak knyvnkhz igaztott vltozatait tartalmazza. Ha elolvastuk a knyvet, minden tudssal fel lesznk vrtezve ahhoz, hogy brmilyen informcit kiolvassunk vagy mdostsunk, amire csak szksgnk van.

    Ksznetnyilvnts Egy ehhez hasonl knyv megrsa mindig csapatmunka: szerkesztk, munkatrsak, rokonok s bartok nyjtanak lelkesen tmogatst, s ltjk el a szerzket hasznos tancsokkal, arnikor a legnagyobb szksg van rjuk. Minket is ezek az emberek btortottak szntelenl, k segtettek a feladatra sszpontostani, s k sztnztek, hogy csinljuk vgig.

    Elszr is szeretnnk ksznetet mondani Elizabeth Petersan szerkesztnek, arnirt sztklt, hogy ksztsk el a msodik kiadst. Ksznet jr Kristin Weinbergernek is, aki a munka sorn a helyes irnyba terelgetett minket. Nem feledkezhetnk meg Chuck Toporek szerkesztrl, Rornny Freneh-rl s a nagyszer produkcis csapatrl sem. Kln ksznet illeti Chrysta Meadowbrooke-ot, aki nagyszer munkt vgzett a vgs kzirat korrektrzsval, s nem csak sok-sok kvetkezetlensget javtott ki, hanem mg a javtsra szorul SQL-pldkra is rmutatott. Vgl, szeretnnk megksznni Karen Gettman fszerkeszt erfesztseit, aki sszerakta ezt a csapatot, s figyelemmel ksrte a teljes munkt.

    Elismers jr szakmai lektorainknak, Stephen Forte-nak s Keith Hare-nek is. Keith sok idt tlttt az sszes plda tnzsvel, kiszrt jnhny hibt, s javaslatokat tett a szveg jobb ttelre. Mg egyszer ksznjk mindenkettjknek, hogy idt s energit fektettek abba, hogy segtsenek neknk egy igazn alapos munkt letenni az asztalra az SQLlekrdezsekrl.

    Vgl mg egyszer kln ksznet Keith Hare-nek, aki elszt rt a ktethez. Keith, aki a nemzetkzi SQL-szabvnygyi bizottsg elnke, elsrang SQL-szakrt, akinek a trgyban szerzett tudst s tapasztalatt igen nagyra becsljk, s megtiszteltetsnek vesszk, hogy a knyvnk felvezetsl szolgl gondolatait s megjegyzseit paprra vetette.

    A szerzkrl John L. Viescas fggetlen tancsad, tbb mint 40 vnyi tapasztalattal. Plyafutst rendszerelemzknt kezdte, s nagy adatbzis-alkalmazsokat tervezett az IBM nagygpes rendszereihez. Hat vet tlttt az Applied Data Research-nl a texasi Dallasban, ahol egy tbb mint 30 emberbl ll csapat vezetjeknt az IBM mainframe szmtgpeihez kszlt adatbzis-kezel termkekhez kapcsold kutatsokrt, fejlesztsekrt s a termk-

  • SQl;lek!rzek fldi halan!!!ak xix

    tmogatsrt felelt. Mikzben az Applied Data Research-nl dolgozott, diplomt szerzett zletviteli pnzgyi ismeretekbl a Dallasban tallhat texasi egyetemen. Tanulmnyait kitntetssel vgezte.

    John 1988-ban csatlakozott a Tandem Computers, Inc. grdjhoz, ahol adatbzis-npszerst prograrnak fejlesztsrt s megvalstsrt felelt az Egyeslt llamok nyugati rszt kiszolgl eladsi rszlegen, valamint mszaki oktatanyagokat lltott ssze s szeminriumokat tartott a Tandem NonStop SQL nev relcis adatbzis-kezel rendszerrl Hawaiitl Coloradig s Alaszktl Arizonig. John az els knyvt (A Quick Reference Guide to SQL, Microsoft Press, 1989) kutatsi projektknt rta, amelynek clja az ANSI-86 SQL-szabvny, az IBM DB2, a Microsoft SQL Server, az Oracle Corporation Oracle rendszere s a Tandem NonStop SQL nyelvtana kztti hasonlsgok dokumentlsa volt. A Tandem-tl szabadsgot kivve megrta a Running Microsoft Access (Microsoft Press, 1992) els kiadst, amelybl eddig ngy kiads kszlt, a Microsoft Office Access Inside Out (Microsoft Press, 2004 s 200 7 a Running sorozat folytatsa) kt kiadsa s a Building Microsoft Access Applications (Microsoft Press, 2005) mellett.

    John 1993-ban megalaptotta a sajt tancsad cgt, amely informcis rendszerek zemeltetsvel kapcsolatban ad tancsokat klnfle kis- s nagyvllalatoknak szerte a vilgon, elssorban a Microsoft Access s SQL Server adatbzis-kezel termkekre szakosodva. A cgnek irodi vannak a New Hampshire-i Nashuban, illetve a franciaorszgi Prizsban. 1993 ta minden vben elnyerte a "legrtkesebb szakrt" cmet a Microsoft Product Support Services-tl a nyilvnos tmogatsi frumokon nyjtott szakmai segtsgrt.

    John webhelyt a www.viescas.com cmen ltogathatjuk meg, e-mailben pedig a [email protected] cmre rhatunk neki.

    Michael J. Hernandez vetern adatbzis-fejleszt, tbb mint 20 vnyi alkalmazsfejlesztsi tapasztalattal, amelyet klnbz ipargakban, a legklnflbb gyfeleknek vgzett munka sorn szerzett. Mike szakterlete a relcis adatbzisok tervezse - az adatbzis-tervezsrl rta a nagy siker Database Design forMere Mortals (msodik kiads, AddisonWesley, 2004; magyarul: Adatbzis-tervezs- A relcis adatbzisok alapjairl fldi halandknak, Kiskapu, 2004) cm knyvet. Egsz plyja sorn az SQL-lel dolgozott, olyan SQL ala p adatbzis-kezelkhz fejlesztve alkalmazsokat, mint a Microsoft Access s a Microsoft SQL Server, emellett szmos adatbzis-kezelsi tmj knyvnek s folyiratnak volt a trsszerzje, illetve szakmai lektora.

    Mike 2002-ben a Microsofthoz kerlt, ahol teljes munkaidben dolgozik. Kezdetben a Visual Studio Tools for Office (VSTO) csapatnak kzssgi programmenedzsereknt a fejlesztk kzssgi tevkenysgt irnytotta, majd 2006-ban a VSTO termkmenedzse-

  • re lett. Ebben a munkakrben a feladata a jvbeni termkstratgia kidolgozsnak elsegtse, valarnint a VSTO npszerstse a vsrlk s fejlesztk kztt klnfle mdszerekkel. Ahogy karrierje sorn mr annyiszor tette, Mike gyakran tart eladst fejleszti konferencikon s felhasznli tallkozkon szerte az orszgban, illetve az egsz vilgon.

    Valamelyik korbbi letben.Mike zenszknt rt el sikereket, a legklnflbb helyeken szrakoztatva a kznsget. Knnyed eladsmdjt s kantaktusteremt kpessgt a kznsggel ennek a szrakoztatmvszi rksgnek tulajdontja. Mike soha nem sznt meg zensznek lenni, ezrt a VSTO csapatnak tagjaibl zenekart verbuvlt, hogy alkalma nyljon j tmegek eltt pengetni szecetett gitrjt. Mike ma is gyakran a hrok kz csap, ha akad pr szabad perce a munkartekezletek kztt. Mike lvezi az let olyan apr dolgait, mint az rkig tart bngszs egy Barnes & Noble knyvesboltban, egy amerikai kv szrcslse a Starbucksban, egy finom szivar elpfkelse, vagy a hegyi kerkprozs felesgvel, KendrvaL

    Mike-nak e-mailben az [email protected] cmre rhatunk.

  • Bevezets "Bizonyra n is haland, gy tvedhet. "

    -james Shirley- The Lady of Pleasure

    Ha nem csak alkalmi szrrtgphasznk vagyunk, valsznleg hasznltuk mr a strukturlt lekrdeznyelvet vagy ms nven SQL-t- akr anlkl, hogy tudtunk volna rla. Az SQL a szabvnyos nyelv, amelyen keresztl a legtbb adatbzisrendszerrel kommuniklhatunk. Minden alkalommal, amikor adatokat tltnk be egy tblzatkezel programba vagy olvasztunk be egy dokumentumba egy szvegszerkeszt programban, tbb mint valszn, hogy az SQL-t hasznljuk valamilyen formban. Arnikor csatlakozunk az Internetre, hogy megltogassunk egy kereskedelmi webhelyet a Weben, s megrendeljnk egy knyvet, lemezt, filmet vagy valami mst abbl a sok tucatnyi terrnkfajtbl, ami hozzfrhet, szinte biztos, hogy a weboldal a httrben ugyancsak az SQL segtsgvel ri el a bolt adatbzist. Ha teht egy olyan adatbzisrendszerbl kell adatokat kinyernnk, amely az SQL-t hasznlja, olvassuk el ezt a knyvet, s jobban megrthetjk a nyelvet.

    Fldi halandk vagyunk? Feltehetjk a krdst: "Ki szm t kznsges fldi halandnak? n?" Nos, a vlasz nem egyszer. Amikor elkezdtk rni ezt a knyvet, azt hittk, hogy az SQL nev adatbzisnyelv szakrti vagyunk. Menet kzben azonban rjttnk, hogy sok szempontbl mi is csak kznsges fldi halandk vagyunk. Az SQL nhny konkrt megvalsrst nagyon jl ismertk, de ahogy megvizsgltuk, hogyan alkalmazzk az SQL-t a klnbz, kereskedelmi forgalomban kaphat termkek, a nyelv szmos addig ismeretlen finomsgt felfedeztk.

  • Teht ha az albbi lersok brmelyike rnk illik, mi is fldi halandk vagyunk:

    Ha olyan szmtgpes alkalmazsokat hasznlunk, amelyek segtsgvel adatokat rhetnk el egy adatbzisrendszerbl, valsznleg egyszer fldi halandk vagyunk. Az els alkalommal, amikor nem a vrt adatokat kapjuk az alkalmazsunkba ptett lekrdezeszkzket hasznlva, meg kell vizsglnunk a httrben megbv SQL-utastsokat, hogy kidertsk, mirt.

    Ha mostanban fedeztk fel a szmos elrhet asztali adatbzis-kezel alkalmazs egyikt, de nehezen tudjuk meghatrozni s lekrdezni a szksges adatokat, biztosan fldi halandk vagyunk.

    Ha adatbzis-programozknt dolgozunk, akinek ksz termkeket kell szem ltt tartania egyes bonyolult problmk megoldsakor, kznsges fldi halandk vagyunk.

    Ha szakrti vagyunk egy adott adatbzis-kezel termknek, de most azzal a feladattal talljuk magunkat szembe, hogy a meglev rendszernk adatait egy msik, az SQL-t tmogat rendszerbe kell beptennk, csupn fldi halandk vagyunk.

    Rviden, brki, akinek egy az SQL-t ismer adatbzisrendszert kell hasznlnia, haszonnal forgathatja ezt a knyvet. Kezd adatbzis-felhasznlknt, aki csak most fedezte fel, hogy a szmra szksges adatokat az SQL segtsgvel nyerheti ki, minden alapvet ismeretet (st annl tbbet is) megtallhatunk a ktetben, ha pedig tapasztalt felhasznJk vagyunk, akinek hirtelen bonyolult feladatokat kell megoldania, vagy tbb olyan rendszert kell egyttmkdsre brnia, amelyek az SQL-re plnek, a knyvbl tleteket kaphatunk arra, hogy rniknt aknzhatjuk ki az SQL adatbzisnyelv sokrt kpessgeit.

    Nhny sz a knyvrl Minden, amit ebben a knyvben olvashatunk, az SQL adatbzisnyelv jelenlegi International Organization for Standardizarian (ISO, Nemzetkzi Szabvnygyi Szervezet) szabvnyn (az ISO/IEC 9075-2:2003 jel dokumentumon) alapul, abban a formban, ahogy azt a npszer adatbzisrendszerek legtbbje ma megvalstja. Az ISO-dokumentumot az American National Standards Institute (ANSI, Amerikai Szabvnygyi Hivatal) is a magv tette, vagyis valban nemzetkzi szabvnyrl van sz. A knyvben ismertetett SQL teht nem ktdik egyetlen konkrt szaftvertemkhez sem.

    Ahogy a 3. fejezetben rszletesebben megtanulhatjuk, az SQL-szabvny egyszerre tbbet s kevesebbet hatroz meg annl, amit a legtbb kereskedelmi adatbzis-kezel termk megvalst Az adatbzis-kezelk gyrti a halad szolgltatsok kzl mg sokat nem valstottak meg, de a szabvny magjt a legtbben tmogatjk.

  • - -- SOL:!Iezekj!L!!JanqknL". ,_iB -.

    A npszer termkek szles krt vizsgltuk meg, hogy meggyzdjnk rla, hogy a knyvben tadott ismeretek a gyakorlatban is alkalmazhatk. Ha egyes elterjedt termkekben azt talltuk, hogy nem ismerik a nyelv valamelyik alapszolgltatst, a szvegben figyelmeztetst helyeztnk el, s lertuk, rnilyen ms szabvnyos mdon fogalmazhatjuk meg az adatbziskezelhz intzett krelmnket Azokban az esetekben, amikor az SQL-szabvny egy fontos rszt csak nhny gyrt tmogatja, ismertetjk a krdses utastsok formjt, s kerl megoldsokat javaslunk.

    A knyvet t fbb rszre osztottuk:

    Az I. rsz (A relcis adatbzisok s az SQL) elmagyarzza, hogyan plnek a mai adatbzisrendszerek egy szigor matematikai modellre, s rviden ismerteti annak az adatbzis-lekrdez nyelvnek a trtnett, amelybl a ma SQL-knt ismert nyelv kifejldtt. Ezen kvl ebben a rszben egyes egyszer szablyokat is megtanulunk, amelyeket betartva gondoskodhatunk rla, hogy az adatbzisaink felptse egszsges legyen.

    A II. rsz (Az SQL alapjat) a SELECT utasts hasznlatba, a kifejezsek ltrehozsba, valamint az informciknak az ORDER BY zradkkal trtn rendezsbe vezet be bennnket, illetve megtudhatjuk belle, hogy miknt szrhetjk az adatokat a WHERE zradk segtsgve!.

    A III. rsz ( Tbbtbls lekrdezsek) megmutatja, hogyan fogalmazhatunk meg olyan lekrdezseket, amelyek egynl tbb tblbl olvasnak ki adatokat. Ebben a rszben megtanuljuk, hogyan kapcsolhatunk ssze tblkat egy lekrdezsben az INNERJOIN, OUTERJOIN s UNION mveletekkel, valamint hogy miknt hasznlhatunk allekrdezseket.

    A I V. rsz (Adatok sszestse s csoportostsa) azt trgyalja, hogy miknt nyerhetnk ki sszest adatokat, illetve hogy miknt csoportosthatjuk s szrhetjk az sszestett informcikat Ebben a rszben tanulunk majd a GROUP BY s a HAVING zradkokrL

    Az V. rsz (Adathalmazok mdostsa) azt magyarzza el, hogy miknt rhatunk olyan lekrdezseket, amelyek sorok egy adott csoportjt mdostjk egy tblban. Ennek a rsznek a fejezeteibl tanulhatjuk meg az UPDATE, az INSERT s a DELETE utasts hasznlatt

    A knyv vgn tallhat fggelkekben megtallhatjuk az sszes megismert SQL-elem szintaxisdiagramjt, a mintaadatbzisok felptst, az t legelterjedtebb adatbzis-kezel rendszerben megvalstott dtum- s idkezel fggvnyeket, valamint az SQL tovbbi tanulmnyozshoz ajnlott knyvek jegyzkt A knyvhz egy CD is tartozik, amely a ktet sszes mintaadatbzist tartalmazza, tbb klnbz formtumban.

  • xxiv SQL-Iekrdezsek fldi halandknak

    Mirl nem szl a knyv? Br ez a knyv a 2003-as SQL-szabvnyon alapul, amely a legfrissebb volt, amikor a knyvet rtuk (azta kidolgozs alatt ll a 2007/2008-as szabvnyvzlat), nem trgyalja a szabvny minden rszlett Valjban a 2003-as SQL-szabvny sok szolgltatst mg hossz vekig nem fogjk megvalstani-ha egyltaln megvalstjk-a fontosabb adatbzisrendszerekben. Knyvnk alapvet clja, hogy szilrd tudst nyjtson az SQL nyelv lekrdezsek rshoz. A knyv sorn gyakran javasoljuk "az adatabzis-kezelnk dokumentcijnak fellapozst", hogy megtudjuk, mkdik-e egy adott szolgltats. Ez nem azt jelenti, hogy a fbb adatbzisrendszerek szolgltatsainak csak a legkisebb kzs nevezjt trgyaljuk, mindazonltal igyeksznk figyelmeztetni, ha egyes rendszerek egy szolgltatst mskpp vagy egyltaln nem valstanak meg.

    Ha az adatbzisunkat hibsan terveztk meg, nehzsget okozhat mst ltrehozni, mint egyetlen tblt hasznl egyszer lekrdezseket, ezrt egy fejezetet az adatbzis-tervezsnek szenteltnk, hogy segtsnk azonostani a problms helyzeteket, de az emltett fejezetben csak az alapelveket ismertetjk. Az adatbzis-tervezsi elvek kimert trgyalsa, illetve annak a vizsglata, hogy egy adott felptst hogyan valsthatunk meg egy konkrt adatbzisrendszerben, tlmutat knyvnk keretein.

    Ennek a knyvnek az sem a tmja, hogy miknt oldhatunk meg egy problmt a leghatkonyabban. Ahogy a ksbbi fejezeteket olvassuk, lthatjuk majd, hogy egy adott problmra tbb megoldst is javasolunk. Egyes esetekben, amikor egy lekrdezs megrsa egy adott mdon valsznleg minden rendszeren teljestmnyproblmkat okoz, igyeksznk erre felhvni a figyelmet. Ugyanakkor minden adatbzisrendszernek megvannak a maga erssgei s gyengi. Miutn elsajttottuk az alapokat, kszen llunk arra, hogy tovbblpjnk, s belessuk magunkat annak a konkrt adatbzisrendszernek a mkdsbe, amelyen megtanultuk, hogyan fogalmazhatjuk meg a lekrdezseinket gy, hogy optimlisan fussanak.

    Hogyan olvassuk a knyvet? A knyv fejezeteit gy terveztk meg, hogy sorrendben clszer elolvasni ket. Minden fejezet az elz fejezetekben megtanult elvekre pl, mindazonltal akkor sem vesznk el, ha rgtn a knyv kzepre ugrunk. Pldul ha mr ismerjk a SELECT utasts alapvet zradkait, s a JOlN-okrl szeretnnk tbbet tudni, nyomban a 7., 8. s 9. fejezethez lapozhatunk.

    Sok fejezet vgn szmos mintafeladatot tallhatunk, a megoldsukkal s eredmnyhalmaz-mintkkal egytt. Ajnlott elszr nhny pldt tanulmnyozni, hogy jobban rtsk a szksges eljrsokat, majd nllan megprblni megoldani a ksbbi pldkat, anlkl, hogy megnznnk az ajnlott megoldsokat.

  • SQL-Iekrdezsek fldi halandknak xxv . . ---- "---------- - ---- ------

    Megjegyzend, hogy ahol egy adott lekrdezs sarok tucatjait adja vissza az eredmnyhalmazban, a knyvben csak az els nhny sort mutatjuk meg, hogy kpet adjunk arrl, hogyan kell festenie a kapott vlasznak. A sajt rendszernkn lehet, hogy nem pontosan ugyanazt az eredmnyt ltjuk, mivel minden adatbzisrendszer, amely tmogatja az SQL-t, sajt optimalizlval rendelkezik, amely kitallja, hogyan lehet a leggyorsabban megoldani a lekrdezst. Ezen kvl az els nhny sor, amelyet az adatbzisrendszernk visszaad, nem felttlenl egyezik meg pontosan azokkal a sorokkal, amelyeket a knyvben lthatunk, hacsak a lekrdezs nem tartalmaz egy ORDER BY zradkot, amely megkveteli, hogy a sarok egy adott sorrendben jelenjenek meg.

    A legtbb fejezet vgn nllan megoldand feladatokat is tallunk, amelyek lehetsget adnak arra, hogy gyakoroljuk a fejezetben tanultakat. Ne aggdjunk: a megoldsokat a CD-n tallhat mintaadatbzisok tartalmazzk, az olyan feladatokhoz pedig, amelyek egy kicsit nehezebbnek tnnek, tleteket is adunk.

    Ha trgtuk magunkat az egsz knyvn, az "A" fggelkben tallhat teljes SQLdiagramok bizonyra felbecslhetetlen rtk segtsgnek bizonyulnak az ismertetett SQL-eljrsok elsajttshoz, a sajt adatbzisaink megtervezshez pedig felhasznlhatjuk a "B" fggelk adatbzis-felptsi mintit.

    Hogyan rtelmezzk a ktet diagramjait? A knyvben szerepl szmos diagram az SQL-ben hasznlt egyes utastsok, kulcsszavak s kifejezsek helyes hasznlati formjt szemllteti. Minden diagram vilgos kpet ad a trgyalt SQL-elem ltalnos felptsrl, de brmelyik diagramot hasznlhatjuk sablonknt is, hogy ltrehozzuk a sajt SQL-utastsainkat, vagy hogy tisztbban megrtsnk egy adott pldt.

    A diagramok mindegyike alapelemek halmazbl pl fel, s kt csoport egyikbe sorolhat: utastsok s meghatrozott kifejezsek. Az utastsok az SQL-nek a knyvben trgyalt olyan f mveletei, mint a SELECT utasts, mg a meghatrozott kifejezsek olyan elemek, amelyekbl egy utasts egy rszt ptjk fel - ilyenek pldul az rtkkifejezsek, a keressi felttelek, illetve a feltteles kifejezsek. (Ne aggdjunk - ezeket a szakkifejezseket ksbb kivtel nlkl elmagyarzzuk.) Egy utasts s egy meghatrozott kifejezs szintaxisdiagramja kztt az egyetlen klnbsg az, ahogy az utastsforma f sora kezddik, illetve vgzdik. A diagramokat gy terveztk meg, hogy ezek a klnbsgek vilgosan mutassk, hogy egy teljes utasts vagy egy utastsan bell hasznlhat kifejezs diagramjt ltjuk-e. Az l. bra mindkt diagramcsoport kezd- s vgpontjt szemllteti. Ettl a klnbsgtl eltekintve a diagramok ugyanazokbl az elemekbl plnek fel. A 2. brn a szintaxisdiagramok mindkt tpusra lthatunk egy-egy pldt, amelyet a diagramok egyes elemeinek rvid magyarzata kvet.

  • .

    --Ql-lekrdezsek fldi halandknak

    0---------+---- 1 Utasts 2 Meghatrozott kifejezs

    1. bra A szintaxisdiagram sorainak vgpontja az utastsok s a meghatrozott kifejezsek esetben

    SELECT utasts

    r------------------ *'------------------, o-

    SELECT --=--'-,------.....-.- rtkkifejezs --,-----.--'----,

    e e

    FROM a

    o Oszlophivatkozs

    [ WHERE- Keressi felttel _j

    -"'...-, --,-----------.---- oszlop_neve __________ ...,., L tbla neve _j C)L kapc;olat_neve __j

    2. bra Pldk az utastsok s a meghatrozott kifejezsek diagramjaira

    1. Utasts kezdpontja - Egy utasts f sornak kezdett jelli. Brmely elem, amely kzvetlenla f sorban tallhat, ktelez elem, az alatta tallhat elemek pedig nem ktelez (vlaszthat) elemek.

    2. Az utastsforma f sora -Az utasts vagy meghatrozott kifejezs ktelez s vlaszthat elemeinek sorrendjt hatrozza meg. Az utasts vagy meghatrozott kifejezs felptshez ezt a sort balrl jobbra (vagy a nyilak irnyban) kell kvetn nk.

  • --------Q!.-!!.I.fordezsek fldi halandnak JOtVii

    3. Kulcsszavak- Egy utasts vagy meghatrozott kifejezs utastsformjnak ktelez nyelvi elemt jelli, amely az SQL nyelvtannak egyik kitntetett szava. A diagramokban a Irulesszavak flkvr nagybetkkel formzottak (Amikor tnylegesen megrunk egy utastst az adatbzis-kezel programunkban, nem muszj nagybetvel rnunk a kulcsszavakat, de az utasts is knnyebben olvashat lesz.)

    4. Konkrt elem -Az utastsnak konkrtan megadand rtk nevt hatrozza meg. A konkrt (literlis) elemeket egy olyan sz vagy kifejezs brzolja, amely az tadand rtk tpusra utal. A diagramok konkrt elemei csupa kisbetvel formzottak

    5. Meghatrozott kifejezs- Olyan szt vagy kifejezst jell, amely egy olyan mveletet brzol, amely az adott utastsban felhasznland rtket ad vissza. A knyv sorn minden olyan meghatrozott kifejezst elmagyarzunk s diagramon brzolunk, amelyet ismernnk kell. A meghatrozott kifejezseket mindig dlt betvel jelljk.

    6. Nem ktelez elem - Olyan elemet vagy elemcsoportot jell, amely az utastsforma f sora alatt jelenik meg. A nem ktelez elemek lehetnek utastsok, kulcsszavak, meghatrozott kifejezsek s konkrt rtkek is, s a tisztnlts kedvrt kln sorban szerepelnek Egyes esetekben egy adott paramterben rtkek halmazt is tadhatjuk, az egyes rtkeket vesszvel elvlasztva (lsd a 8. pontot). Szmos nem ktelez elemnek lehetnek rszelemei is (lsd a 7. pontot). A nem ktelez elemek sort ltalban balrl jobbra kell olvasnunk, ugyangy, ahogy az utastsforma f sort olvassuk. Ha mindig a nyilakat kvetjk, nem tvedhetnk Megjegyzend, hogy egyes paramterek tbb rtk megadst is lehetv teszik, ezrt a nyl jobbrl balra mutathat. Miutn azonban bertuk az sszes elemet, amire szksgnk van, a haladsi irny visszatr a szoksos balrl jobbra olvasshoz. Szerencsre a nem ktelez elemek mindegyike ugyangy mkdik, gy miutn megmutattuk, hogy miknt hasznlhatunk egy vlaszthat elemet, tudni fogjuk az sszes olyan nem ktelez elem hasznlatnak a mdjt, amellyel a szintaxisdiagramokban tallkozhatunk.

    7. Nem ktelez elem rszeleme - Olyan elemet vagy elemcsoportot jell, amely egy nem ktelez elem alatt jelenik meg. A nem ktelez elemek rszelemeinek segtsgvel finomhangolhatjuk az utastsainkat, hogy sszetettebb feladatokat oldjunk meg velk.

    8. Paramterlista-elvlaszt -Azt jelzi, hogy az adott paramterben egynl tbb rtket is megadhatunk, mely rtkeket vesszvel kell elvlasztanunk

    9. Alternatv paramter- Olyan kulcsszt vagy meghatrozott kifejezst jell, amelyet egy vagy tbb nem ktelez elem helyett hasznlhatunk. Az utastsformban az alternatv paramterek sorai megkerlik azoknak a nem ktelez elemeknek a sorait, amelyekkel ezek a paramterek felcserlhetk.

    1 O. Utasts vgpontja - Egy utasts f sornak vgt jelli. 11. Meghatrozott kifejezs kezdpontja - Egy meghatrozott kifejezs f sornak kezdett jelli. 12. Meghatrozott kifejezs vgpontja - Egy meghatrozott kifejezs f sornak vgt jelli.

  • xxviii SQL-Iekrdezsek fldi halandknak c.;.;;.;,.;;;.;.._. , __ " __

    Most, hogy megismertk ezeket az elemeket, a knyv minden szintaxisdiagramjt kpesek lesznk elolvasni. Ha egy diagram mgis tovbbi magyarzatot ignyelne, minden informcit megadunk, ami ahhoz szksges, hogy a diagramot knnyen s vilgosan rtelmezhessk. Hogy knnyebben megrtsk a diagramok mkdst, lssunk egy pldt egy olyan SELECT utastsra, amelyet a 2. bra alapjn ptettnk fel:

    SELECT FirstName, LastName, City, DOB AS DateOfBirth FROM Students WHERE City = 'El Paso'

    Ez a SELECT utasts ngy oszlopot ad vissza a Students (Tanulk) tblbl, ahogy ezt a SELECT s FROM zradkokban jelltk. Ha balrl jobbra kvetjk az utastsforma f sort, lthatjuk, hogy legalbb egy rtkkifejezst meg kell adnunk. Az rtkkifejezs lehet egy oszlop neve, egy oszlopnevek hasznlatval megalkotott kifejezs, vagy egyszeren egy (konkrt) lland rtk, amelyet meg szeretnnk jelenteni. Az rtkkifejezs paramterlista-elvlasztjval (vesszkkel) annyi oszlopot adhatunk meg, amennyit csak akarunk, ezrt tudtunk ngy oszlopot kijellni a Student tblbl. Mivel nem voltunk benne biztosak, hogy mindenki, aki a fenti SELECT utasts ltal visszaadott adatokat megtekinti, tudja, hogy mit jelent a DOB, egy /nevet rendeltnk a DOB oszlophoz, az rtkkifejezst nem ktelez AS rszelemknt megadva. Vgl a WHERE zradkot hasznltuk, hogy biztostsuk, hogy a SELECT utasts csak azokat a tanulkat adja vissza, akik El Pasban laknak. (Ha ez most mg nem vilgos, nem kell aggdnunk. Mindent megtanulunk majd rszletesen a knyv htralev rszben)

    Az "A" fggelkben minden szksges szintaxisdiagramot megtallunk, amelyek megmutatjk a knyvben trgyalt valamennyi utasts s meghatrozott kifejezs teljes s helyes utastsformjt

    Ha az egyes fejezetek olvassa kzben ezeket a diagramokat lapozzuk fel, egyes diagramoknl nmi eltrst tapasztalhatunk a fejezetben s a fggelkben lev vltozat kztt. Ennek az az oka, hogy a fejezetekben szerepl diagramok a fggelk diagramjainak egyszerstett vltozatai. Az egyszerstett diagramok segtenek, hogy egyszerubben magyarzzuk el a bonyolultabb utastsokat s meghatrozott kifejezseket, s lehetsget adnak arra, hogy az ppen trgyalt elemekre sszpontostsunk. Emiatt nem kell, hogy fjjon a fejnk - a fggelk rninden diagramjt tkletesen rteni fogjuk, ha vgigrgtuk magunkat a knyv anyagn.

  • A knyvben hasznlt mintaadatbzisok A knyvhz egy CD-ROM-ot is mellkeltnk, amely t mintaadatbzist tartalmaz, amelyeket a knyv sorn bemutatott lekrdezsekhez hasznlunk. A "B" fggelk diagramjain emellett ezeknek az adatbzisoknak a felptst is brzoltuk

    1. Sales Orders (Megrendelsek) - Ez egy tipikus, megrendelsek bejegyzseit tartalmaz adatbzis egy kerkprokat s kerkpr-alkatrszeket rust zlet szmra. (Minden adatbzisokkal foglalkoz knyvben kell lennie legalbb egy megrendelsi adatbzisnak, nem igaz?)

    2. Entertainment Agency (Szrakoztatgynksg)- Ezt az adatbzist gy szerkesztettk meg, hogy eladmvszek, gynkk, gyfelek s lekttt eladsok rekordjait kezelje. Hasonlan terveznnk meg egy rendezvny- vagy szllodaszaba-foglalsi adatbzist is.

    3. School Scheduling (Iskolai nyilvntarts)- Ezt az adatbzis-felptst kzp- vagy fiskolai hallgatk nyilvntartshoz hasznlhatjuk Az adatbzis nem csak az rkat tartja nyilvn, hanem azt is, hogy az egyes rkat mely oktatk tartjk, s hogy a tanuJk milyen osztlyzatokat kaptak.

    4. Bowling League (Tekebajnoksg)- Ez az adatbzis tekecsapatok nyilvntartsra szolgl, s a csapatokat, azok tagjait, a lejtszott meccseket s az eredmnyeket trolja.

    5. Recipes (Receptek) - Ezt az adatbzist a kedvenc receptjeink trolsra s szerkesztsre hasznlhatjuk Nhny olyan receptet is tallhatunk benne, amit rdemes kiprblni.

    A CD-n mind az t mintaadatbzis megtallhat ngy klnbz formtumban:

    A Microsoft Office Access nev asztali adatbzis-kezeljnek nagy npszersge miatt az adatbzisokat elksztettk a Microsoft Access 2000 (Version 9.0, .mdb flkiterjeszts) segtsgvel is. Azrt a termk 9-es vltozatt vlasztottuk, mert az majdnem teljesen tmogatja a jelenlegi ISO/IEC SQL-szabvnyt, s az ebben a formtumban mentett adatbzisfjlokat az Access 2000, 2002 (XP), 2003 s 2007 segtsgvel is megnyithatjuk. Az emltett fjlokat az MSAccess alknyvtrban tallhatjuk

    A msodik formtum adatbzisfjljai a Microsoft SQL Server 2000 hasznlatval kszltek (.mdjfjlkiterjeszts). Ezek mellett SQL-parancsfjlokat (.sql fjlkiterjeszts) s ktegfjlokat (.bat fjlkiterjeszts) is mellkeltnk, amelyek segtsgvel a mintkat felvehetjk egy Microsoft SQL Server katalgusba. Az emltett fjlok, amelyek az MSSQLServer alknyvtrban tallhatk, Microsoft SQL Server 2005 kiszolglkhoz is kapcsolhatk A Microsoft SQL Server 2005 Express Edition ingyenesen letlthet a http:l /msdn. microsojt.com/vstudio/express/sql/doumload/default.aspx cmrl.

    Az adatbzisfjlok harmadik csoportjt a npszer nylt forrs MySQL adatbzisrendszer 5-s vltozatval ksztettk el. Az adatbzis szerkezetnek ltrehozshoz, az adatok betltshez s a mintanzetek ltrehozshoz a sajt MySQLadatknyvtrunkban a MySQL alknyvtrban tallhat parancsfjlokat (.sql fjlkiter-

  • jeszts) hasznlhatjuk, de az InnoDB adatknyvtrunkat is bellthatjuk gy, hogy a MySQL alknyvtrra mutasson. A MySQL adatbzisrendszer kzssgi kiadsnak egy pldnyt szabadon letlthetjk a http://www.mysql.com/ cmrL

    A negyedik formtum SQL-parancsfjlok sorozatbl ll, amelyeket mdosthatunk, s brmely olyan fontosabb adatbzisrendszerrel hasznlhatunk, amelyik ismeri az SQL-t. Az SQLScripts alknyvtrban lev parancsfjlok kztt tallunk olyat, amellyel meghatrozhatjuk az egyes adatbzisok smit (a tblkat), olyat, amelyben INSERT utastsokkal betlthetjk az adatokat, s olyat is, amelyben CREATE VIEW utastsokkal ltrehozhatjuk a lekrdezseket Br ezeket a parancsfjlokat a Microsoft SQL Server segdeszkzeivel ksztettk, egyszerstettk ket, hogy ltalnosan hasznlhatk legyenek a legtbb adatbzisrendszerreL

    A mintafjlok teleptshez olvassuk el a CD gykrknyvtrban tallhat ReadMe.txt fjlt. Ha a CD-mellkletet Apple Macintosh rendszerhez csatlakoztatjuk, csak a MySQL s az SQL-parancsllomnyok mintafjljait rhetjk el.

    Br a CREATE TABLE, CREATE INDEX, CREATE CONSTRA/NT s Mgjegyzs INSERT parancsoknak nagyon gondosan csak a legelterjedtebb s leg

    egyszerbb formjt hasznltuk a minta SQL-parancsfjlokban, lehet, hogy neknk vagy az adatbzisunk felgyeljnek kiss mdostania kell a fjlokat, hogy mkdjenek a mi adatbzisrendszernkn is. Ha az adatbzisrendszert egy tvoli kiszolgln keresztl hasznljuk, elfordulhat, hogy az adatgazda engedlyre lesz szksgnk ahhoz, hogy az ltalunk megadott SQL-parancsokkal felptsk a mintaadatbzisokat.

    A Il., III. s IV. rsznek a SELECT utastssal foglalkoz fejezeteihez tartoz pldautastsokat s megoldsokat az egyes mintaadatbzisok "example" vltozatban (pldul: SalesrdersExample, EntertaininentAgencyExample) talljuk Mivel az V. rsz pldi mdstjk a rnintaadatokat, minden mintadatbzisbl elksztettnk egy "modify" vltozatot is (pldul: SalesrdersModify, EntertainmentAgencyModify). Az V. rszhez tartoz mintaadatbzisok olyan tovbbi oszlopokat s tblkat tartalmaznak, amelyek nem szerepelnek a SELECT pldkban, ami lehetv teszi, hogy szemlltessk az UPDATE, INSERT s DELETE lekrdezsek kpessgeit.

  • SQl-lekrdez;leJs: fii!!:li. hs!!n.f!.knak xxxi

    "Mindig a Srgakves tonl" - A mumpicok kirlya Dorothy-nak az z, a nagy varzsl-ban

    Most, hogy vgigolvastuk a Bevezetst, kszen llunk arra, hogy megtanuljuk az SQL hasznlatt, nem igaz? Nos, taln. Jelenleg mg mindig a hzban vagyunk, amelyet a tornd ostromol, s mg nem hagytuk el Kansast

    Mieltt rgtn a 4. fejezetre ugrannk, ahol majd elksztnk egy egyszer lekrdezst, fogadjuk meg a szerzk tancst, s olvassuk vgig az els hrom fejezetet. Az l. fejezetbl kpet kaphatunk arrl, hogyan szletett meg a relcis adatbzisok elve, s hogyan vlt bellk az adatbzisoknak az ipargban ma a legszlesebb krben hasznlt tpusa. Remljk, hogy ez megvilgt valamit azzal az adatbzisrendszerrel kapcsolatban is, amelyet ppen hasznlunk. A 2. fejezetben megtanuljuk, hogyan finomhangolhatjuk az adatszerkezeteinket, hogy az adataink megbzhatak s mindenekeltt pontosak legyenek. Ha az adatszerkezeteinket rosszul terveztk meg, komoly nehzsgeink lehetnek egyes SQL-utastsokkal, ezrt mindenkppen ajnlott alaposan elmlyedni ebben a fejezetben.

    Valjban a 3. fejezet a "Srgakves t" kezdete. Itt ismerjk meg az SQL eredett, s hogy rniknt nyerte el a nyelv a jelenlegi formjt. Azokrl az emberekrl s cgekrl is olvashatunk majd, akik ttr munkjukkal segtettk a nyelv fejlesztst, s azt is megtudhatjuk, hogy rnirt van olyan sok vltozata az SQL-nek. V gl elmondjuk, hogyan vlt az SQL orszgos s nemzetkzi szabvnny, s arrl is szt ejtnk, hogy rnilyen kiltsai vannak az SQL-nek a jvben.

    Miutn elolvastuk az emltett fejezeteket, mr j ton fogunk jrni z birodalma fel. Csak kvessk a htralev fejezetekben lefektetett utat, s amikor a vgre rnk a knyvnek, rjvnk majd, hogy megtalltuk a varzslt - aki nem ms, mint rni magunk.

  • A relcis adatbzisok s az SOL

  • Mit jelent az, hogy "relcis"?

    A fejezet tmakrei

    Az adatbzisok fajti A relcis modell rvid trtnete A relcis adatbzisok felptse

    "A tuds egy kis rsze annak a tudatlansgnak, amit rendszereznk s osztlyozunk."

    - Ambrose Bierce

    Mirt hasznosak szmunkra a relcis adatbzisok? sszefoglals

    Mieltt fejest ugrannk az SQL vilgba, nem rt, ha rendelkeznk nmi httrinformcival a relcis adatbzisokrl, ezrt elszr arrl fogunk beszlni, hogy mirt talltk ki a relcis adatbzisokat, hogyan plnek fel, s mirt hasznosak a szmunkra. Ez az az alap, amelyen biztosan kell llnunk, hogy megrthessk az SQL lnyegt, s tisztn lssuk, hogy miknt aknzhatjuk ki legjobban az SQL kpessgeit.

    Az adatbzisok fajti Mit neveznk adatbzisnak? Amint azt bizonyra tudjuk, az adatbzis adatok rendezett _ gyjtemnye, amellyel valamilyen szervezett dolgot vagy szervezsi folyamatot modelleznk. Tulajdonkppen nem szmt, hogy paprt vagy egy szmtgpes programot hasznlunk az adatok sszegyjtsre s trolsra: amg az adatokat konkrt clra, valamilyen rendezett formban gyjtjk s troljuk, adatbzisrl beszlhetnk. A tovbbiakban persze azt fogjuk felttelezni, hogy az adatgyjtsre s az adatok kezelsre szmtgpprogramot hasznlunk.

    Az adatbzis-kezels terletn ltalnossgban ktfle adatbzis van hasznlatban: mveleti adatbzisok s elemz adatbzisok. Ma szerte a vilgon mveleti adatbzisok kpezik szmos vllalat, szervezet s intzmny gerinct Ezt a fajta adatbzist elssorban mindennapi adatgyjtsre, -mdostsra s -kezelsre hasznljk. A trolt adatok dinami-

  • 4 SQL-Iekrdezsek fldi halandknak -

    -

    kus adatok, ami azt jelenti, hogy folyamatosan vltoznak, s mindig friss informcikat tkrznek. Az olyan szervezetek, mint az ruhzak, a gyrtcgek, a krhzak s klinikk, valamint a knyvkiadk mveleti adatbzisokat hasznlnak, mivel az adataik percrl percre vltoznak.

    Ezzel szemben az elemz adatbzisok korbbrl szrmaz, adott idponthoz kapcsold adatokat trolnak s rendszereznek. Az elemz adatbzisok a vltozsok irnynak nyomon kvetsben hasznosak, valamint a hossz id alatt sszegyjttt statisztikai adatok megjelentst, illetve a taktikai s stratgiai zleti elrejelzsek ksztst segtik. Az ilyen adatbzisok statikus adatokattro!nak, vagyis az adatok soha (vagy csak nagyon ritkn) mdosu!ri'ak, j adatok felvtelre viszont gyakran sor kerlhet. Az elemz adatbzisokbl kinyert informcik ltalban nem naprakszek egy adott idpontban ksztett pillanatfelvtelt mutatnak az adatokrl. Ilyen fajta adatbzist hasznlnak pldul a kmiai laboratriumok, a fldmr vllalatok, illetve a piackutat s -elemz cgek.

    A relcis modell rvid trtnete Az adatbzismodelleknek tbbfle tpusa ltezik. Egyeseket - pldul a hierarchikus s hlzati madeileket - csak rgi rendszereken hasznlnak, rng msok - pldul a relcis modell - szles krben elterjedtek. Ms knyvekben az objektum alap, objektumrelcis s OLAP (online analytical processing, elektronikus elemz-feldolgoz) modellekkel is tallkozhatunk. Az SQL-szabvny bvtmnyeket hatroz meg ezeknek a modelleknek a tmogatsra, s lteznek kereskedelmi adatbzisrendszerek, amelyek meg is valstanak egyes bvtmnyeket ezek kzl. Mi azonban szigoran a relcis modellre s a nemzetkzi SQL-szabvny magjra fogunk sszpontostani.

    A kezdetek A relcis adatbzis elve 1969-ben szletett meg, s azta valsznleg a legszlesebb krben hasznlt modell vlt az adatbzis-kezelsben. A relcis modell atyja, Dr. Edgar F. Codd 0923-2003) az IBM kutatjaknt dolgozott az 1960-as vekben, s azt vizsglta, hogy milyen j mdszerekkel lehet nagy adatmennyisgeket kezelni. Az akkor ltez adatbzismodellekkel s -termkekkel elgedetlen volt, ami arra indtotta, hogy matematikai elvek s szerkezetek segtsgvel prblja meg megoldani az eltte ll tmrdek feladatot. Matematikusknt szilrdan hitt benne, hogy a matematiknak lteznek olyan gai, amelyeket alkalmazva megoldhatk az olyan problmk, mint az adatismtlds (redundancia) kikszblse, az adatok egysgessgnek biztostsa, illetve annak lekzdse, hogy az adatbzisok szerkezete tlzottan fggjn a fizikai megvalststL

    Dr. Codd hivatalosan 1970 jniusban, az A Relational Model of Data for Large Shared Databases cm, mcfldknek szmt munkjban' mutatta be az ltala kidolgozott j relcis modellt. A modell a matematika kt gra tmaszkodott: a halmazelmletre s

    1 Communications of the ACM, 1970. jnius, 377-87. oldal

  • 1. fejezt ':, it jelent,. hogv."l:!Ii't_

    az elsrend prediktumlogikra. Maga a modell is a halmazelmlet egyik kulcsfogalma, a relci kifejezs utn kapta a nevt. (Szles krben elterjedt tveds, hogy a relcis modell neve onnan ered, hogy a relcis adatbzisok tbli kztt kapcsolatok llhatnak fenn. Most, hogy tudjuk az igazsgot, nyugodtan alhatunk.) Szerencsre nem kell rszleteiben ismernnk a halmazelmletet vagy az elsrend prediktumlogikt ahhoz, hogy relcis adatbzisokat tervezhessnk s hasznlhassunk. Ha megfelel adatbzis-tervezsi mdszert kvetnk - pldul a Mike Hernandez Database Design forMere Martals (Addison-Wesley, 2004; magyarul: Adatbzis-temezs: A relcis adatbzisok alapjairl fldi halandknak. Kiskapu, 2004) cm knyvben ismertetett eljrsokat -, egszsges s hatkony adatbzis-szerkezetet alakthatunk ki, amelyet bizalommal hasznlhatunk rnindenfle adat sszegyjtsre s kezelsre. (Nos rendben, termszetesen egy kicsit azrt muszj rtennk a prediktumokhoz s a halmazelmlethez, ha bonyolultabb feladatokat is meg szeretnnk oldani. A prediktumokkal - lltsokkal vagy szrkkel; a "prediktum" valjban csak egy fellengzs nv - kapcsolatos alapvet tudnivalkat a 6., a halmazelmlet alapjait pedig a 7. fejezetben trgyaljuk.)

    A relcis adatbzisprogramok Megjelense ta a relcis modell az alapja az RDBMS (relational database management system, relcis adatbzis-kezel rendszer) nven ismert adatbzistermkeknek Ilyen termket szmos gyrt kszt, s az vek sorn a legklnbzbb ipargak s szervezetek vettk t a hasznlatr, akik sokfle krnyezetben alkalmazzk Az 1970-es vekben a nagyszmtgpek olyan programokat hasznltak, mint az IBM ltal kifejlesztett System R vagy a Berkeley-i Kaliforniai Egyetemen megalkotott INGRES A nagygpekhez ksztett RDMBS rendszerek fejlesztse az 1980-as vekben olyan programokkal folytatdott, rnint az Oracle Corporation Oracle, illetve az IBM DB2 rendszere, a szemlyi szmtgpeknek az 1980-as vek kzepn bekvetkezett elterjedse pedig olyan programokat szlt, rnint az Ashton Tate dBase, az Ansa Software Paradoxvagy a Microrim R:BASE szoftvere. Arnikor az 1980-as vek vgn, illetve az 1990-es vek elejn nyilvnvalv vlt, hogy igny mutatkozik a PC-k kztti adatmegosztsra, megszletett az gyfl-kiszolgl rendszerek elve, amelyet a kzponti helyen trolt, kzsen hasznlhat, knnyen kezelhet s biztonsgoss tehet adatok tlete ksrt. Erre az elvre olyan termkek pltek, mint az Oracle Oracle Si, valarnint a Microsoft SQL Semer rendszere.Krlbell 1996 ta mr abban az irnyban is sszehangolt erfesztseket tesznek, hogy az adatbzisok elrhetsgt az Interneten is biztostsk. A szaftvergyrtk komolyan veszik a krdst, s olyan termkekkel igyekeznek vlaszolni a kihvsokra, amelyek webkzpontbbak: ilyen az Allaire cg Cold Fusion, a Sybase Sybase Enterprise Application Studio vagy a Microsoft Visual Studio programcsomagja. A webfejlesztsben az egyik legnpszerob adatbzis-kezel a MySQL AB nylt forrs MySQL-je. Ezt eredetileg Linux rendszer webkiszolglkhoz terveztk, de mr Microsoft Windows rendszereken fut vltozata is ltezik.

  • 6 SQL-Iekrdezsek fldi halandknak

    A relcis adatbzisok felptse A relcis modellnek megfelelen az adatok a relcis adatbzisokban relcikban troldnak, amelyeket a felhasznl tblk formjban rzkel. Minden relci egyedekbl (tuple, rekord) s jellemzkbl (mez) pl fel. Ezen kvl a relcis adatbzisoknak termszetesen ms tulajdonsgaik is vannak - ezekkel foglalkozunk az albbiakban.

    Tblk A tblk az adatbzisok f szerkezeti elemei. Minden tbla mindig egyetlen konkrt trgyat brzol. A rekordok s mezk logikai sorrendje a tbln bell egyltaln nem szrnt.

    Lgalbb egy mezt - az gynevezett elsdleges kulcsot, amely egyedileg azonostja a tbla egyes rekordjait- minden tblnak tartalmaznia kell. (Az l. l. brn pldul a CustomedD a Customers tbla elsdleges kulcsa.) Valjban a relcis adatbzisokban lev adatok a tblk ez utbbi kt tulajdonsgnak ksznheten fggetlenek attl, hogy fizikailag miknt troldnak a szrntgpen. Ez a felhasznlknak elnys, mert gy ahhoz, hogy kinyerjenek egy adatot, nem kell ismernik az adatot trol rekord fizikai helyt.

    REXORDDK

    MEZK

    1.1. bra Plda egy tblra

    A trgy, amelyet egy adott tbla brzol, egy objektum vagy egy esemny lehet. Ha a trgy egy objektum, a tbla valami olyat brzol, ami "megfoghat": egy szemlyt, egy helyet vagy ms fizikai dolgot. Objektumokknt tblban brzolhatk pldul piltk, termkek, gpek, hallgatk, pletek, berendezsek, s gy tovbb. A tpustl fggetlenl minden objektumnak vannak olyan jellernzi, amelyek adatknt trolhatk, s ezeket az adatokat aztn szinte vgtelen mdon lehet feldolgozni Erre a fajta tblra az 1.1. bra mutat jellegzetes pldt.

    Amennyiben a tbla trgya egy esemny, a tbla valami olyasmit brzol, ami egy adott idpontban trtnt, illetve trtnik (majd), s olyan jellemzi vannak, amelyeket rgzteni szeretnnk. Ezeket a jellemzket pontosan ugyangy trolhatjuk adatknt, s dolgozhatjuk fel mint informcit, mint azokban a tblkban, amelyek valarnilyen konkrt objektumot

  • .. ....... ..... -" 1JJ!t:....IVI.lUIent"f!Z,_ hogy "relqi':J. - -

    rnak le. Olyan esemnyeket rgzthetnk pldul, mint a brsgi trgyalsok, az osztalkkifizets, a laborleletek vagy egy fldtani mrs. Az 1.2. brn pldul egy olyan esemnyt brzol tblt lthatunk, amelyet letnk sorn mindnyjan tlnk- egy orvosi vizetet

    Patient Visit PatientiD V"ISitDate VisitTime Physician BloodPressure Temperatura j

    92001 2006-05-01 10:30 Ehrtich 120 l BO 98.8 97002 2006-05-01 13:00 Hallmark 112/74 97.5 99014 2006-05-02 9:30 l Fournier 120 l BO 98.8 96105 2006-05-02 11:00 Hallmark 160 l 90 99.1 96 203 2006-05-02 14:00 Hallmark 110/75 99.3 98003 2006-05-02 9:30 Fournier 120 l 82 98.6

    1.2. bra Esemnyt brzol tbla

    Mezk A mez az adatbzis legkisebb szerkezeti egysge, amely a hozz tartoz tbla trgynak egy jellemzjt rja le. A mezk azok a szerkezetek, amelyek az adatokat tnylegesen troljk. A mezkben lev adatokat azutn kinyerhetjk s informciknt megjelenthetjk, szinte brmilyen elkpzelhet formban. Vssk az esznkbe, hogy az adatokbl kinyert informcik minsge egyenesen arnyos az id mennyisgvel, amit arra fordtunk, hogy maguknak a mezknek az adat- s szerkezeti kvetkezetessgt biztostsuk A mezk fontossgt nem lehet tlbecslni.

    Egy megfelelen megtervezett adatbzisban minden mez kizrlag egyetlen rtket tartalmaz, s a neve azonostja a benne trolt rtk tpust. gy nagyon egyszerv vlik az adatok bevitele a mezkbe: ha olyan nev mezket ltunk, mint a FirstName (Keresztnv), a LastName (Vezetknv), a City (Vros), a State (llam/Megye) vagy a ZipCode (Irnytszm), pontosan tudni fogjuk, hogy milyen rtket kell rnunk az egyes mezkbe, s az adatok rendezse (pldul llam szerint) vagy az sszes olyan szemly kikeresse, akinek a vezetkneve Viescas, ugyancsak knny lesz.

    Rekordok A rekord egy adott tbla trgynak egy egyedi pldnyt jelkpezi, amely a tbla adott sorban tallhat sszes mezt tartalmazza, fggetlenl attl, hogy az egyes mezkben szerepeinek-e rtkek. A tblk meghatrozsnak mdjbl kvetkezik, hogy minden rekordot egy egyedi rtk azonost a teljes adatbzisban, s ez az rtk a rekord elsdleges kulcs mezjben troldik.

    Az 1.1. brn pldul minden rekord egy-egy klnbz vsrlt jell a tblban, s az adatbzisban az egyes vsrlkat a CustomedD (Vsrlazonost) mez azonostja. Amint emltettk, az egyes rekordok a tbla adott sorban tallhat sszes mezt tartal-

  • 8 SOL-iekrdezsek fldi halandknak

    mazzk, s minden mez egy-egy tulajdonsgt rja le a rekord ltal brzolt vsrlnak A rekordok kulcsfontossgak a tblakapcsolatok megrtsben, rnivel tudnunk kell, hogy egy tbla rekordjai rnilyen viszonyban llnak egy msik tbla rekordjaivaL

    Kulcsok A kulcsok klnleges mezk, amelyek meghatrozott szerepet tltenek be az egyes tblkban. Ezt a szerepet a kulcs tpusa hatrozza meg. Br egy tbla tbbfle kulcsot tartalmazhat, rni csak a kt legfontosabb tpust trgyaljuk az elsdleges kulcsot s az idegen kulcsot.

    Az elsdleges kulcs olyan mez vagy mezcsoport, amely egyedileg azonostja a tblban tallhat sszes rekordot. (Ha az elsdleges kulcs kt vagy tbb mezbl ll, sszetett elsdleges kulcsrl beszlnk.) Kt oka van annak, hogy rnirt az elsdleges kulcs a legfontosabb: az rtke egy konkrt rekordot azonost a teljes adatbzisban, a mezje pedig ugyanott egy adott tblt. A2 elsdleges kulcsok emellett a tbla szintjn biztostjk a kvetkezetessget, s segtenek kapcsolatokat kialaktani ms tblkkal. A2 adatbzisaink minden tbljnak rendelkeznie kell elsdleges kulccsal.

    A2 1.3. brn lthat AgentiD (gynkazonost) mez j plda az elsdleges kulcsra, mert egyedileg azonostja az egyes gynkket az Agents (gynkk) tbln bell, s a tbbszr szerepl rekordok kikszblsvel gondoskodik a tblaszint kvetkezetessgrL A kulcsot ezenkvl arra is hasznljuk, hogy az Agents s az adatbzis ms tbli (pldul -ahogy az brn lthatjuk - az Entertainers tbla) kztt kapcsolatokat alaktsunk ki.

    Elsdleges---+ kulcs

    Agents AgentiO l AgentFirstName l AgentlestName l DataHired AgentHomePhone < >

    1 l William l Thompson l 1997-05-15 555-2681 ... -2--fsctt ___ ..... : Bishop ----r 1998-02-05 555-2666 r----.-.. ---____ 3 _____ 1Carl-- ---rv,es-ca-s----11997-=1;-::19 ---555-2571--r-----------

    Idegen kulcs

    Els

    ;

    es -t-_. EntertaineriD l AgentiD l EntertainerNeme l EntertanerPhone l < > 1001 i 1 Caro! Peacock T rio 555-2691

    Entertainers -

    )o2 - ---3--: Topazz ----;- 555'-2591 __________ _ -loo:l---- -3---r.w&fieileejiS;X---------

    t

    1.3. bra Elsdleges s idegen kulcsok

    Amikor eldntjk, hogy kt tblt valarnilyen mdon sszekapcsolunk, a kapcsolatot ltalban gy hozzuk ltre, hogy az els tbla elsdleges kulcst lemsoljuk s beszrjuk a msodik tblba, ahol az idegen kulcs lesz. (Az idegen kulcs kifejezs onnan ered, hogy a msodik tblnak mr van sajt elsdleges kulcsa, s az els tblbl tvett elsdleges kulcs a msodik tbla szmra "idegen".)

  • Az 1.3. brn egy j pldt lthatunk az idegen kulcsra. A pldban az AgentiD elsdleges kulcs az Agents tblban s idegen kulcs az Entertainers tblban. Amint lthatjuk, az Entertainers tblnak mr van egy elsdleges Irulcsa-az EntertaineriD. Ebben a kapcsolatban az AgentiD az a mez, amely megteremti az sszefggst az Agents s az Entertainers tbla kztt.

    Az idegen kulcsok nem csak abbl a nyilvnval szempontbl fontosak, hogy segtenek kapcsolatot teremteni kt tbla kztt, hanem azrt is, mert biztostjk a kapcsolatszint kvetkezetessget, vagyis a kt tbla rekordjai mindig helyes kapcsolatban fognak llni egymssal, rnivel az idegen kulcs mez rtkeinek a hivatkozott elsdleges kulcs rtkeibl kell szrmazniuk Az idegen kulcsok a rettegett "rva rekordokat" is segtenek elketlni, amelyek klasszikus pldja egy olyan rendelsi rekord, amelyhez nem tartozik vsrl. Ha nem tudjuk, ki adta fel a rendelst, nem lesznk kpesek feldolgozni azt, s termszetesen kiszmizni sem tudjuk, ami rontja a negyedves eladsi mutatinkat.

    Nzettblk A nzet vagy nzettbla olyan virtulis tbla, amely az adatbzis egy vagy tbb tbljnak mezibl pl fel. A nzettblt alkot tblkat alaptblknak hvjuk. A relcis modell azrt tekinti virtulisnak (ltszlagosnak) a nzettblkat, mert azok adatai ms tblkbl szrmaznak. Maguk a nzettblk nem trolnak adatokat; az adatbzisban valjban a szerkezetk az egyetlen informci, ami troldik rluk.

    A nzettblk lehetv teszik, hogy az adatbzisban trolt informcikat szmos klnfle szempontbl tekintsk meg, ami nagy rugalmassgot nyjt az adatok kezelsben. Nzettblkat tbbflekppen is ltrehozhatunk -klnsen akkor hasznosak, amikor tbb, egymssal kapcsolatban ll tblra alapozzuk ket. Ltrehozhatunk pldul egy olyan nzettblt, amelyik olyan informcikat sszegez, rnint a Seattie belvrosban dolgoz csok ltal ledolgozott rk teljes szma, vagy egy olyat, amelyik adott mezk szerint csoportostja az adatokat. Ez utbbi fajtra j plda egy olyan nzettbla, amelyik egy adott terlet llamait veszi alapul, hogy megmutassa az egyes vrosokban az alkalmazottak teljes szmt. A nzettblk jellemz felptst az 1.4. brn lthatjuk.

    Sok RDBMS program a nzettblkat mentett lekrdezsknt valstja meg, s ezen a nven vagy egyszeren lekrdezsknt hivatkozik rjuk. A lek rdezsek a legtbb esetben rendelkeznek a nzettblk minden jellemzjvel, vagyis csupn a nevk az egyetlen klnbsg kztk (Mi mr gyakran morfondroztunk rajta, hogy ehhez nem egy marketingcsapatnak van-e kze.) Fontos megjegyezni, hogy egyes gyrtk mr kezdik a valdi nevkn nevezni a lekrdezseket, de rnindegy, hogy a mi relcis adatbzis-kezelnk hogy hvja ket, az adatbzisban valjban nzettblkkal dolgozunk.

    Knyvnk cme ettl fggetlenl SQL-lekrdezsekfldi halandknak, mikzben elssorban azt szeretn megtantani, hogy miknt ptsk fel a nzettblinkat Ahogy a 2. fejezetbl majd megtudhatjuk, egy relcis adatbzist akkor terveznk meg helyesen, ha

  • az adatainkat gy bontjuk fel, hogy minden trgyhoz vagy esemnyhez egyetlen tbla tartozzon. Ugyanakkor tbbnyire sszefgg trgyakrl vagy esemnyekrl szecetnnk informcit szerezni - mely vsrlk s milyen rendelst adtak fel, mely tanrok milyen rkat tartanak, s gy tovbb -, ehhez pedig nzettblt kell ltrehoznunk, s tudnunk kell, hogy milyen SQL kddal rhetjk ezt el.

    Customers

    Engagements

    EngagementNumber CustomeriD l StartDate EndDate Startrune < > 3 10001 l 2007-09-10 2007-09-15 13:00 13 10003 l 2007-09-17 2007-09-20 20:00 14 10001 l 2007-09-24 2007-09-29 16:00 17 10002 l 2007-09-29 2007-10-02 18:00

    < < tovbbi sorok > > )

    Customer Engagements (nzettbla) -EngagementNumber CustFirstName CustlastName StartDate EndDate

    3 Doris Hartwig 2007-09-10 2007-09-15 13 Peter Brehm 2007-09-17 2007-09-20 14 Doris Hartwig 2007-09-24 2007-09-29

    ______

    1_ 7 ____ __ Deb ________ L---- --qp_7-0929 l 2007-10-02 < < tovbbi sarok > >

    1.4. bra Plda egy nzettblra

    Kapcsolatok Ha egy adott tbla rekordjai valamilyen mdon egy msik tbla rekordjaihoz trsthatk, azt mondjuk, hogy a tblk kztt kapcsolat ll fenn. A kapcsolat megteremtsnek mdja a kapcsolat tpustl fgg. Kt tbla kztt hromfle kapcsolat llhat fenn: egy-az-egyhez, egy-a-tbbhz (egy-a-sokhoz) vagy tbb-a-tbbhz (sok-a-sokhoz) A kapcsolatok fajtinak ismerete ltfontossg ahhoz, hogy megrtsk, hogyan mkdnek a nzettblk, s hogy miknt kell a tbbtbls SQL-lekrdezseket megtervezni s hasznlni. (Errl a III. rszben tanulunk majd bvebben.)

    Egy-az-egyhez Kt tbla akkor ll egy-az-egyhez kapcsolatban, ha az els tbla egy rekordja a msodik tbla egyetlen rekordjhoz kapcsoldik, s a msodik tbla egy rekordja is egyetlen rekorddal ll kapcsolatban az els tblbl. Ebben a fajta kapcsolatban az egyik tbla elsdleges tbla, mg a msik msodiagos tbla lesz. A kapcsolatot gy hozzuk ltre, hogy vesszk

  • .J .JejL!._I'l jl.!!t!ch()gy_:lcj'J__J J

    az elsdleges tbla elsdleges kulcst, s beszrjuk azt a msodiagos tblba, ahol idegen kulcs lesz belle. Ez a kapcsolatok klnleges fajtja, mivel sok esetben az idegen kulcs egyben a msodiagos tbla elsdleges Irulcsaknt is viselkedik.

    Az egy-az-egyhez kapcsolatra az 1.5. brn lthatunk egy jellemz pldt: itt az Agents (gynkk) az elsdleges, a Compensation (Djazs) pedig a msodiagos tbla. A kt tbla kztt olyan kapcsolat ll fenn, amelyben az Agents tbla egy-egy rekordja csak egy-egy rekordhoz kapcsoldik a