You are on page 1of 372
Paul DuBois MySQ) Traducere de Mihai Manastireanu Teora CX ACL oD & { Titlu original: MySQL © Copyright © 2001 Teora Toate drepturile asupra versiuni fn mba roména apartin Edituri Teora Reproducerea integrald sau parialé a textului sau ailustratilor din aceasté carte ‘este posibilé numai cu acordul prealabil soris al Edituri Teora, ‘Authorized translation from the English language esition published by New Riders Publishing, Copyright © 2000. ‘tights reserved, No par of his book may be reproduced or ansmited in any form or oy aay moans sacvore or mechericl musing photocopying recording or Dy any Plarlaion abrage rttoval ystom, witout possi om Nb Publisher Asmaniancngogge edition puolanod by Toure Publishing ' S00. eae @ get, 3,004 SAL Copyright © 2000. Teora Caloa Moglor nr. 211, sector 2, Bucuresti fax: 01/210.38.28 e-mail: teora@teora kappa.ro, ‘Teora —Cartea prin posta CP 78-30, cod 72450 Bucuresti, Romania tol: 01/252.14.31 e-mail: cpp@teora.kappa.ro Coperti: Gheorghe Popescu Tehnoredactare: Catalin Sleam NOT 4897 CAL MY SOL ISBN 973-20-0246-8 Printed in Romania gavor Cuprins Despre autor Despre referenti.. Prefapi.. Introducere -.. Partea I: Capitolul 1 Capitolul 2 Capitolul 3 Capitolul 4 Partea a Ia: Capitolul 5 Capitolul 6 Capitolul 7 Capitolul 8 Partea a ha Capitolul 9 Capitolul 19 Capitolul 11 Capitolul 12 Capitolul 13 Ufilizarea generald a sistemului MySQL ....... Introducere in MySQL $i SQL... 24 Lucrul eu date in MySQL si SQL. 99 Sintaxa gi utilizarea SQL in MySQL 158 Optimizarea inverogitilor.. Utilizarea interfefelor de programare ale sistemului MySQL... 217 Introducere in progeamarea MySQL. 218 Interfata API MySQL pentru C. 237 Interfaya API pentru Perl DBI... 293 Iatesfaya API pentru PHP.. Administrarea sistemului MySQL Incroducere in administrarea sistemului MySQL .. Catalogul de date MySQL... Administrarea generals a sistemului MySQL, Securitate.. Intresinerea si repararea bazelor de date 6 Cuprins Porton a 'V-a: Anexa A Anexa B Anexa C Anexa D Anexa E, Anexa F Anexa G Anexa H Anexa I Anexa J Index ‘Anexe Objinerea si instalarea programelor .. Referingi de tipuri de coloane.. Referingi de operator si funcy Referinga de sintaxi SQL. Referinga de programe MySQL... Referingi APT C.. Referingi API Perl DBI Referinyi API PHP. Instrumente utile produse de terge pirgi. Furnizori de servicii Internet Despre autor fn ultimii 15 ani, Paul DuBois a fost administrator de reea gi de baze de date la Univer- sitatea Madiscn a statului Wisconsin, Este autorul volumelor Sofiware Portability with iimake gi Using sh & tesh (O'Reilly 8 Associates, ISBN 1-56592-226-3 fi 1-56592-132-1) sia redactat materiale pentru manualul de refering MySQL. Despre referenti David Axmark a luerat drept consultant software timp de peste 15 ani, Printre niume- roasele proiecte la care a activat se numari un sistem ultramodern de cercetare a pietei (CommonLISP+CLOS+MySQLs-ISAM), grafic industrialé avansati (in 32k de RAM), precum ji un sistem de scriere a ordinelor de functionare pentru o companie de elec- triciate. A scris numeroase linii de program in limbajele 6502 gi in asambloral 280, BASIC, C, CommonL isp, (Bourne)-Shel si Perl. A inceput si se implice in MySQL la ciziva ani fnante de prima lansare publici a limbajului. David locuieste in Uppsala, Suedi, cu plantele gi calculatoarele lui. Vijay Chaugule lucrea2i ca administrator principal de sisteme pentru o companie din Bay Area care manipulesed o rejea UNIX de mari dimensiuni. Are opt ani de experienst in gestiunea sstemelor gi a rejelelor gia utilizat 0 multime de instrumente comerciale fi sub licengi GNU. Adori si serie scripruri in Perl sis compileze sisi instaleze programe GNU. In present, foloseste MySQL la un proiect pentru induscrafts.com. Chad Cunningham este dezvoltator de sisteme pentru departamencul de matematicd a Universitit de Stat din Ohio, acolo unde se concentreaz’ asupra dezvoltarii unor instrumente de invigare bazate pe Web, care si potenteze procesul tradifional de instra- ire din sala de curs. Bill Gerrard ext vicepresedinte responsabil cu tchnologia al firmei Daze Networks, In. din Huntington Beach, California. Daze Networks executi servili Internet, inclusiv serverele Web virtuale DigitalDaze, care vi oferi un control complet dsupra proprivhui dumneavoastel server MySQL de baze de date, precum si bNscentr).com, care ofer’ fnregistrarea rumelor de domenii, parcare, tansmitere prin Web (Web forwarding) yi reexpedierea mesajelor de e-mail folosind MySQL ca baza de date back-end, jo George John este fndrumitortehnic in cadeul Divizci de dezvolare sofware a grupt~ hui de analiza chimic3 din cadrul companiei Hewlett-Packard. Are experienfiin dezvolarea de programe de sistem i de apliayie pentru instrumente chimice. A hucrat eu programe apropiate instrumentelor sau dispozitivelor dar si cu aplicati pentru baze de date de mari dimensiuni. In prezent,foloseste MySQL. la un proiect pentru induscratts.com Fred Read igiare propriul siv servieiu de consultants, Serval an Systems Limited, de 14 ani, ServaLan Systems este specializatain producria de sisteme UNIX tn domenica tele comunicapile, bazele de date, finange si Internet. In prezent, lucreaza la un sistem de, comutafie pentru celecomenicafi. fn ulti tei ani, aitresinut gi un furnizor de servicii™ Internet (PremierISP) so mic afacere de publicitate in Web (PremierAds), Este insurat cu Helen de now ani, Cei doi au tei copii (dou’ fete si un baiae) si locuiese in Anglia Dr. Egon Schmid lucreaza la Six Offene Systeme GmbH din Leinfelden-Echterdingen, Germania, unde face parte din echipa de dezvoltare care realizeazi solusiisofsticase de baze de date bazate pe Web. De asemenea, este membru al grupului de realizare a docu- ‘mentafiei pentru limbajul PHP. A fost co-autor al primei cirsi de PHP scrisi in limba Jani Tolonen este dezvoltator software al sistemului MySQL, Este un student fn virstl de 23 de ani al Universitit de Tehaologie din Helsinki, unde se dedicX tehnologieical- culatoarelor gi programirii de produse software in multe domenii, Jani s-a aflat sub indrumarea lui Michael “Monty” Widenius, ereatorl sistemului MySQL, si doreste si se dedice in continuare dezvoltiri acestui sistem. Jani si Monty au devenit din reseali* foarte buni prieteni: au fost vecini cu peste 10 ani in urmi, Activitatea lui Jani Jn domeniul MySQL a inceput la pusin timp dup ce Monty a inceput si creeze MySQL in 1995, Michael “Monty” Widenius este un finlandez vorbitor de suede, care a lucrat cu baze de date din 1978. A fost angajat de TeX (al clrei co-patcon a devenit) din 1981 gi a scris §n toraltate componenta UNIREG (predecesorul lui MySQL) si cea mai mare parte a programului server MySQL. A studiat fizica la Universitatea de Tehnologie din Helsinki, dar in materie de programare este in cea mai mare parte un autodidact. A lucrat mai ales in Basic, Assembler, C, LISP, Perl, SQL, C++ (in aceastd ordine), dar ddoreste mereu si examineze limbaje noi, atunci cand dispune de timpul necesar. Este {nsurat gi are doi copii (un baiat gio fati - Max si My), dout broayteyestoase, un caine si doi serpi. In prezent, ii petrece majoritatea timpului rispunzind la mesaje de e-mail. Editura New Riders doregte si mulgumeasci gi lui Thomas Karlsson, Colin McKinnon, Sasha Pachev, Erie Savage, Derick H. Siddoway si Bob Worthy pentru contribuyia adusi Ia aceasta carte, Prefata (Cand mi s-a cferit posibilitaea de a efectua o expertiza tehnic a crs lui Paul, nu m-am asteptat si mi ,infepenesc" la prefapS. Am fost intotdeauna de pirere c% un programator nu trebuie niciodat3 lisa s&scrie o carte, nici micar una pentru programatori, Sear putea si am un oarecare talent pentru construirea unor lini de program uiilizabile dar, din fericire, Paul are un mare talent de a explica lucruri pe care un mare numir de utlizator le-aringelege altfl foarte greu. Aceia dintre noi care am lucrat la MySQL ne-am striduit din grew pentra a face ca acest limb si fie rapid gi ugor de folost, dar MySQL are numeroase caracteristici distincte, iar marea majortate a utlizatorilor vor avea nevoie de informafii care por fi acumulate numai din experienti pentru a putea utiliza MySQL [a maximum de potengal, fn anul care a trecut, Paul a lucrat la manualul MySQL, proces in cursul ciruia ne-a pus multe sute de intrebiri privind modul de fancyionare a limbajului MySQL, intr-un efort de a ingelege totul. fn aceasté carte, cl vi ‘mpartageste fi dumneavoastrd cunostingele acumulate, (De asemenea, suntefi bineveniti si lucragi cu manualul electronic de MySQL, chiar dacd acum aveti la dispozigie © de a ingelege MySQL) Manualul de MySQL a fost intotdeauna privit de noi, cei de la TeX, ea o refering tehnict pentra MySQL. Am avut intotdeauna nevoie de un manuel de utilizare care si poati transmte conceptele tehnice intr-un mod mai yrelaxat". Credem c& volumul de api va umple in mod elegant acest gol! Unul dintre scopurile limbajului MySQL este de afi cat mai ccmpatibil eu putinsd cu versiunile anterioare, Suntem siguri ci in ciuda rit- tmului rapid de dezvoltare al imbajului MySQL, majoritatea conceptelor din aceasti carte isi vor pastra veridicitacea pentru o lung’ perioadi de timp. act mi mai bucur de atengia dumneavoastra, a5 dori si mi folosese de aceastl ocazie pentru a mulsumi soi mele, Carola, pentru timpul pe care m-a lisat { micl petrec eu MySQL in utimii ere ani, Ag vrea si le mulgumese si copiilor mei, Max si My, care au fnjeles ci, chiar dac8 tatil lor hucreazd acasi, mu este intotdeauna disponibil. De aseme- nea, doresc s?-i mulqumesc lui David pentru ci m-a convins si seriu MySQL, precum si lui Allan Larson, care mi-s ofert posibilitatea de a face acest ucry, De asemenea, am avut parte de un mare afutor din partea echipei actuale de MySQL: Jani Tolonen, Sinisa alfenevis, Anes Halonen 9 Ton Semel Ty final, dar main ulin rin, dores 8 le :mulfumese tuturor acelora care au scrs interfere API gi programe client, care au tximis remedii si rapoarte privind unele defecte, care ne-au ajutat si transformim MySQL in programul de succes care este astizi, Michael “Monty” Widenius Helsingfors, 14 noiembrie 1999 Din partea autorului Volumul de faji a beneficiat in mare misuri de comentarile, corecturile si criticile furnizate de referengii tchnici: David Axmark, Vijay Chaugule, Chad Cunningham, Bill Gerrard, Jjo George John, Fred Read, Egon Schmid gi Jani Tolonen. Mulgumir speciale pentru Michael “Monty” Widenius, principalul creator al limbajului MySQL, care nu ‘humai ci arevizuit manuserisul, dara rdieat sute de increbari la care am rispuns pe par~ ccursul redactiii cri. Evident, toate erorile rimase imi apart, De asemenea, af dori sii muljumese lui Tomas Karlsson, Colin McKinnon, Sascha Pachey, Erie Savage, Derick H. Siddoway si Bob Worthy, care au examinat manuscrisul inigial gi au ajutat la transpunerea acesteicdrti in forma sa actuald. Personalal edirurii New Riders este responsabil in primul rind pentru conceperea aces- tei ciri sitn al doilea rand pentra transformarea mizgilelilor mele in opera finité pe care o aveti in fas. Laurie Petrycki a fost editor executiv. Katie Purdum, editor responsabil cu achiziile, ma ajutat si-mi ,intru in forma" sia preluat toate criticle acunci cind nu reugeam si respect termenele. Leah Williams a fost nu numai editor de dezvoltare, dar gi redactor de carte propeiu-zis;ahucrat tirziu de mult ori, mai ales in fazele finale ale proiectului, Cheryl Lenser si Tim Wright au produs indexul. John Rahm a fost editor de proiect. Debra Neel a corectat manuscrisul. Gina Rexrode si Wil Cruz, tehnoredactori, fu aranjat cartea fn forma pe care o vedesi acum. Mulpumirifiectruia dintre ei Cel mai mit, dorese si-mi exprim recunostinja faya de sofia mea, Karen, care s-a impi- cat cu inci o carte, precum si pentru injelegerea si ribdarea ei atunci cind dispiream, tineori cut zilele, in ,zona de scriere™. Sprijinul ei mi-a uyurat munca in multe sitvagi gi sunt bucuros simi exprim recunostinga; ea m-aajutat si sriu fiecare paging a ci Introducere Unsistem de gestiune a bazelor de date relaionale (SGBDR) este un instrument esential in numeroase medi, de la utliarile mai tradiionale in contexte de afaceri, cercetare si invlpimant si pana la aplicapile mai recente, cum ar fi operarea motoarelor de ckwrare din Internet. Toru, in ciuda imporcangei unei baze de date performance pentru gestiu~ nea gi accesul Ia resursele informationale, aceasta s-a dovedit a fi dincolo de resursele financiare a aumeroase insticupii. Din punct de vedere istoric, sistemele de baze de date au constituit © propunere costisitoare, firmele distribuitoare percepnd onorarii sub- stangiale, att pentea program cit si pentru asistenta necesari, iar deoarece motoarele de baze de date prezentau frecvent ceringe hardware substantiale pentru a potea ruls cu performange cit de cit rezonabile, costurileerau si mai mari, In anii din urma, situayia s-a schimbat, ait din punct de vedere al echipamenteloy it i din acela al programelor. Caleulatoarele personale au devenit necostsitoar, dar puternice, pe de alti parte, a apirut o intreagi migcare in direcyia scrierii unorsisteme de operare cu ‘performange ‘dicate pentru aceste caleulatoare, ssteme disponibile la prequl unui compact disc ietn, saa chiar gratuit, prin Internet. Acestea inchud numeroase sisteme derivate din BSD UNIX (FreeBSD, NetBSD, OpenBSD), precum si diferite forme de Linux (RedHat, Caldera, LinuxPPC, pentru a numi doar citeva). Productia de sisteme de operare gratuite care si permit utilizarea ealeulstoarelor per- sonale Ia maximum de capacitate s-a desfigurat in mod concertat cu dezvoltarea unor instrumente disponibile gratuit, cum ar fi gcc, compilatoral GNU de G, fiind in mare smiisurk positill datoritl acestora din urmi. Aceste efortuti dea pune programele la dis- pozigia oricirui doritor au avut ca rezultat ceea ce se mumeste acum migcarea Open Source gi au generat multe programe importante. Cel mai solcitat sit FTP din lume, i snume ftp.cdrom.com, ruleazi FreeBSD. Apache este cel mai folosit server Web din Internet, Alte succese ale inigativei Open Source sunt limbajul de scripting de wz. gen ral Perl si PHP, un limbaj a cirui popularitate este intro crestere rapid, datoriek ‘upuringei cu care permite serierea paginilor Web dinamice. Toate avestea contrasteazi cu solupile ,de firma", care vi obligi si folosisi produse costisitoare, greate de fabricant care nici micar nu furnizeaza codul sursi. 5 Programele ce baze de date au devenit i ele mai accesibile Sistemele de baze de date pre- cum Postgres si mSQL au devenie disponibile gratuit sau la un pref scizut. Mai recent, producitorii comerciali, precum Informix si Oracle au inceput si-gi ofere programele gratuit pentrs sisteme de operare precum Linux. (Totugi, aceste din urm® produse sunt Tivrate, in general, numai in form’ binari, fErk suport, ceea cele limiteaza utilitaea.) Unul din noi venitifa domeniul bazelor de date cu prey scizut sab gratuite este MySQL, un sistem client/server de gestiune a bazelor de date relationale originar din Scandinavia. ‘MySQL include un server SQL, programe client pentru accesul la server, instrumente administrative gi o interfaji de programare pentru scrierea propriilor dumneavoastré programe, . Bazele sistemului MySQL au fost puse in 1979, o dati cu instrumentul pentru baze de * date UNIREG, creat de Michael “Monty” Widenius pentru compania suedeza TeX. In 1994, TeX a inceput si caute un server SQL. pentru a-l utiliza le dezvoltarea aplicayilor 12 Infroducere ‘Web. Compania a testat unele servere comerciale, dar toate s-au dovedit' fi prea lente pentru tabelele de mari dimensiuni ale firmei. De asemenea, compania a examinat mSQL, dar acestuia ii lipseau anumite caracteristici obligatorii pentru, TeX. In con- i put sf programeze un server nou. Interfaga de programate era proiectati in mod explicit pentre a fi similar celei folosite de mSQL, deoarece pentru ‘mSQL erau disponibile numeroase instrumente gratuite, iar prin wilizarea unei inter~ feje similare accleagi instrument puteau fi folosite pentru MySQL, cu un efort de portare minim. {In 1995, David Axmark de la Detron HB a inceput si faci presiuni pentru ca TeX si lanseze MySQL pe Internet. De asemenea, David lucra la documentafie sila a determina MySQL si construiascé folosind utiltarul GNU configure. MySQL 3.11.1 a fost dat lumii intregi in 1996, sub formé de distibusie binari pentru Linux si Solaris. In prezent, MySQL funeyioneazi pe mult mai multe platforme geste disponibil att in form’ binars, cat si sursi. MySQL nu este un proiect Open Source, deoarece este necesari o licengi in anumite Tomasi, MySQL se bucuri de © ampli popularitate in comunitatea Open Source, deoarece termenii de liceng nu sunt foarte restrictivi. (In esengi, MySQL este {in general gratuit, daci nu dori si obgine profie prin vanzarea sistemului sau'a unor servicii care necesiti utilizarea acestuia.) Popularitatea sistemului MySQL nu este limitatl la comunitatea Open Source. Da, ruleazi pe calculatoare personale (intr-adevir, o bun parte din programarea cu MySQL are loc pe sisteme Linux ieftine). Dar MySQL este portabil si nuleaz§ pe sisteme de ope- rare comerciale (precum Solaris, Irix si Windows) si pe echipamente care merg pani la servere de intreprindere. in plus, performantele sale rivalizeazi cu acelea ale oricirui sis- tem de baze de date cu care doriti si il comparayi si poate manipula baze de date de mari dimensiuni, cu milioane de inregistriri, ‘MySQL apare foarte clar in imaginea care se desfigoari dinaintea ochilor nostri: de operare disponibile gratuit, care ruleaz3 pe echipamente puternice, dar necostisitoare, punind la dispozitia unui numar de oameni mai mare ca oricind o putere substantiali de prelucrare a datelor gi alte caracterstci, pe o varietate de sisteme mai larg ca oricind. Aceasti ,coborire a barierelor economice in ceea ce priveste prelucrarea automat a datelor pune solutii puternice pentru baze de date la dispozitia unui num fied precedent de mare de persoane si insticupii. De exemplu, eu folosese MySQL. cu Perl, Apache si PHP pe calculatoral meu G3 PowerBook, care ruleazi LinuxPPC. Aceasta imi permite sf-mi transport oriunde rezultatele actvitigi mele, Prey rota: costul caleulatorului PowerBook. Instituit care in teu se mirgineau si viseze la aexploata in folos propriu puteres unui SGBDR cu performange ridicate au acum aceasti posibilitate, Ia un pry foarte redus, Utilizarea bazelor de date este tot mai frecventi sila nivel individual. Oameni eare au se gindeau niciodatd ci vor folosi baze de date incep si iain considerare to felul de uti- liziti ale acestora, din moment ce procurarea unui sistem de baze de date este facili ~ de exemply, stocarea si accesul la rezultatele unor cercetiri genealogice, urmitirea si intretinetea colectiilor de diferitetipuri (fluturi, mirci postale, cir de joe cu jucitori de baseball etc.) asistenti in demararea unei afacri sau furnizarea de posibilitg! de cdutare pentru situri Web personale, Introducere 13 De ce sa optez pentru MySQL? Dacf sunteti in ciutarea unui sistem gratuit sau necostisitor de gestiune a bazelor de date, putet lege din mai multe optiuni: MySQL, mSQL, Postgres, unul din motoarcle gratuite (dar firi suport) furnizate de produeitorii comerciali gi aga mai departe. Cand comparaji MySQL cu alte sisteme de baze de date, gindiji-vi la ceea ce este cel mai important pertra dumneavoastri. Performansi, suport, caracteristici (conformangé cu SQL, extensi atc.) condi si restrict de licentiere, pret; toate acestea constituie factori cate trebuie ltayi in considerare, Date find aceste consideragi, MySQL are de oferie rnumeroase caracteristieiatractive: © Vitez3. MySQL este rapid, Programatorii pretind c& MySQL este cel mai rapid sistem de bane de date pe care prio gta: Pang verbs accu akmoge eited http: / anm.ysql.com/benchnark.htn2, o paging de comparafie a performangelor din sical Web MySQL. © Usuringd in utlizare, MySQL este un sistem de baze de date cu performange ridicate, dr sla simp a ciruiconfgurare gi administrare sunt mult mai simple deci in cazul sistemeor mai mari Cost, MySQL este gratuit pentru majoritatea utiliziilor interne. Vezi sectiunea MySQL este gratuit? ulterior in aceasta introducere. *Suport pentru limbaje de interogare. MySQL ingelege SQL (Structured Query Language ~ imbaj de interogare structurat), limbajul preferat al tuuror sistemelor moderne de baze de date, De asemenea, puteyi avea aeces'la MySQL folosind aplicaii care aceeptd ODBC (Open Database Connectivity), un protocol de comunicatie cu bazele de date creat de Microsoft. ‘© Caracteristii. La server se pot conecta mai multi liens simultan. Client pot folosi mai multe beze de date simultan. Putefi obyine acces la MySQL in mod interact folosind numeroase interfege care vi permit si introduce interogiri sisi vizualizayi rezultate: clieni in linie de comands, browsere Web sau cliengi X Window System. De asemenea, este disponibili o varietate de interfese de progeamare pantru limbaje pre~ cum C, Perl, Java, PHP si Python. Astfel, aveti optiunea de a foloshprogeame client preambalate sau de a vi scrie propriile programe client pentru aplicatii personalizate. ‘© Concetivitate gi securitate. MySQL poate fi folosit integral in reyele, iar bazele de date sunt accesible de oriunde din Internet, deci vi putefi partaja datele cu oricine, oriunde, Dar MySQL are controlul accesului, astfel inet persoanele care nu au drep- tul si vi citeased datele nu vor avea soeastt posibilitae, * Portabilitate MySQL ruleaz’ pe numeroase varietiti de UNIX, precum si pe alte sis- teme non-UNIX, ca Windows i OS/2. MySQL ruleaza pe echipamente de la calcu- Jatoare de birow Ia servere cu performange ridicate. Distribute liserd. MySQL este usor de obsinut; pentru aceasta folosi-va browserul de Web. Daci mu intelegeri funcyionarea unei componente sau suntefi curios cu privire \, Ja un algoritm, vi puteti procura codul sursi gi il puteti examina, Daci nu va place ‘modul de fun:tionare a unei componente, il putesi modifica. Dar suportul? Bund intrebare; o baz de date mu este de prea mare folos dact nu putefi obgine asistengiin raport cu ea. Natural, mi-ar plicea si ered ei aceast3 carte conyine tot 14 Inlroducere ajutoral de care averi nevoie. Realist vorbind, inst, vetiavea intrebiri la care nu m-am indie niciodaté sau pentra care nu am avut spafiu suficient, Veti descoperi cd mai exist Slalteresurse, dar gi ck MySQL este dotat cu un sistem de asisten performant: © MySQL include wn manual de refering! de mari dimensiuni (450 de pagini i mai reste.) © Sunt disponibile contracte de asistengS tehnici de la dezvoltatorii MySQL, pentru cei care preferi un acord formal. © Existd o listd de corespondensd activi, la care se poate insctie oricine. Aceast listé confine numerosi participangi util, inclusiv deavoltatorii MySQL. Ca resursi pentru asistenfi, mulfio gisesc suficienti pentru necesitgile propri Comunitatea MySQL, programatori gi ne-programator, este extrem de cooperanti Rispunsurile la intrebirile din lista de corespondengi sosesc, de regula, in cdteva minute La semnalarea unor hibe, programatori lanseaz un remediu in citeva zile (uneori ore!) iar remedille sunt disponibile imediat prin Internet. Comparafi aceasta cv experienga deseori frustrantd a navigirii prin eanalele ,bizantine” de suport ale marilor produci- tori (Api fost pe-acolo? $i eu am fost. Stiu ce slternativa si folosese atunci cind am 0 Jntrebare despre un produs. Nu se poate face compara intre a fi pus pe apel in asteptare" la disereia unui producStor si posbilitatea de a publica o intrebare intro lists de corespondengi gia verifica existenta rispunsurilor arunci cénd fmi convine.) ‘MySQL este un eandidat deal pentru evaluare daci vi aflai in procesul de selectare a sis- temelor de baze de dave. PutetiIncerca MySQL {rd nicl un pericol de implicare finan- ciari. Totusi, daci v3 incurcapi, putey folosi lista de corespondenti pentru a fi ajutat. O evaluare costi o parte din timpul dumneavoastri, da acest lucru este valabilindiferent de sistemnul de baze de date pe care il avepi in vedere ~ si este perfect adevirat ck timpul de instalare i configurare pentru MySQL este mai redus decit pentru multe alte sisteme. Folositi deja un alt SGBDR? Daci fn prezent utilizagi un alt sistem de baze de date, trebuie si teeceyi la MySQL? Nu fn mod necesar. Dach suntesi satisficut de sisterul dumneavoastri actual, de ce 8% vi deranjagi cu o atare wranzijie? Dar dack vi simpiilimitat de sistemul folosit, trebuie cate goric si aveti in vedere MySQL. Poate ci performantele sistemului dumneavoastré Eurent reprezintd o problemi, sau poate c& sistemul respectiv este ade firma” si nu vi place si fii ,blocat” de acesta. Poate afi prefera si folositi componente hardware care fu sunt acceptate de sistemul dumneavoastri actual sau poate ci programmul este furnizat Jn format bina, iar dumneavoastei preferai si ave la dispozitie codul surs8. Sau poate eX pur gi simplu e prea costisitor! Toate acestea reprezintS motive pentru a lua in con- Siderare MySQL. Folosii aceast§ carte pentru a vi familiariza cu posibilitiilesistemu- ui MySQL, puneyi citeva intrebisi in ista de corespondenta MySQL si probabil eS vezi sisi rispunsurile necesare pentru a lua 0 decizie, ‘Dac avetiin vedere trecerea de la un alt sistem de baze de date SQL la MySQL, exami- nafi pagina de comparayie din situl Web MySQL, la adresa http: /Juam.nysql.con/ trash:ae-choose. ntay. Apoi, consultati capitolele care trateaza tipurile de date MySQL si dialectal SQL. Puteri ajunge la concluzia ci versiunea de SQL acceptati de sistemvul Sumneavoastra curent de gestiune a bazelor de date relationale este mult prea difert i c& portarea aplicatilor dumneavoastr3 ar implica un efort semanificativ. pans BIBLIOTECA | Autor. si Cate. | Introducer 15 © parte din evaluarea dumneavoastri trebuie ef 0 Fepf@tinee Tncercarea de 2 porta diferite exemple, desigur, deoarece s-ar putea si nu fie atic de greu precum credeyi. S-ar ‘putea si nu fie chiar atit de greu chiar daca sistemul dumneavoastra de baze de date este lunul mai vechi, care nu ingelege SQL. Eu am convertit recent un sistem de gestiune a inregistrisilor de la un SGBDR care nu era bazat pe SQL. Nu exista nici o aseminare fntre limbaje care si poati fi utilizati, iar unele dintre tipurile de date nu aveau echiva- ent in SQL. Acest proces a necesitat conversia metodelor de acces la retea gi zeci de pro~ grame de introducere bazate pe ecran gi de interogiri ,conservate'. A fost necesari 0 Juni gi jumitete de eforturi ,cu norma intreagi“, ceea ce n-a fost chiar atit de riu, Instrumente furnizate cu MySQL Distribuyia MySQL include urmatoarele instrumente: Un server SQL. Acesta este motorul care activeazi’ MySQL si care furnizeazi acce- sul la bazele dumneavoastei de date. ‘© Programe client pentru accesul la server. Un program interactiv vi permite si intro- dlucefi interogiri in mod direct si s& vizualizayi rezultatele, iar numeroasele programe administrative gi ueiitare vi ajutd si vi rulagi sil. Un utilitar va permite si controlati serverul. Altele vi permit si importayi sau si exportati date, si verificagi permisiunile de acces si multe altele. © O bibliotect client pentru scrierea propriilor dumneavoastra programe. Putey serie programe client in C, deoarece biblioteca este scrisi in C,dar biblioteca mai furnizeazi si baza pentru terge asocieri pentru alte limbaje. {In afara programelor furnizate eu MySQL, MySQL insusi este folosit de-citre aume- roase persoane talentate gi capabile, cirora le place sf scrie programe pentru a-si imbu- nitiqi productivitatea gi care dorese si puna la dispozitia publicului aceste programe. Rezuleatul este cf aveti acces la o diversitate de instrumente produse de terye pari, care faciliteazi utilizarea sistemului MySQL sau care extind aria de actiune a acestuia in domenii precum dezvoltarea siturilor Web. p MySQL este gratuit? MySQL nu este un produs Open Source, dar, in general, poate fi folosit gratuit, Trebuie cons manutd refering’ MySQL penta deli prvind ee, da prnspe fe bazi sunt urmitoarcle: Programele clint biblionecad programare a enor sone rast, erate plat formele. © Pentru UNIX gi alte platforme non-Windows, serverul MySQL poate fi folosit gra- tut, cu excepfia situapilor cind dorigi si vindefi serveral sau alte programe sau servicii care impun utilizarea acestuia, In aceasta situatie, trebuie si obrinetilicent pentru server. [dees este ef, daci obyineti un profit din MySQL, este normal ca dezvoltatorit™ sistemului st primease¥ o parte din acesta. (200 de dolari este o nimica roaté pentru un specialist SGBDR care vi ajuti si obsineti un profits existi o multime de programe gratuite pe care vi le putes! procura pentru a folosieficientsistemmul.) 16 Introducere © Versiunes Windows a serverului MySQL impune obginerea unei licen ‘* Versiunile mai vechi de MySQL sunt disponibile in condigile licentei publice GNU (GPL) §i pot fi folosite in orice scopuri, fark nici © platd. MySQL 3.20.32a este disponibil in condigile GPL. Indiferent dacd aveyi sau mu nevoie de o licen pentru server, se poate objine o asistens formalA, contra cost, de la programatorii MySQL, gi vi sfituiese si folosiqi aceastd ‘ocazie, mai ales daci lucratiintr-o firm& a clrei conducere ,mirdie* Ia fiecare program pentru care nu existi un astfel de acord, Sunt disponibile numeroase niveluri de suport sh in afard de obginerea unei asistenge excelente, veri contribui la dezvoltarea in conti- nuare a sistemului MySQL si, implicit, a intregii comunitisi MySQL. not despre licenja Windows Uneorse pune intebarea: Cum acc tebue 68 obi cents pentru sereru MySQL numal finda ulez Windows? Aceasta este © initebare rezonabld, la care exisié un raspuns rezonebil Gandia la aspectel economic ale problemel.Penitu v8 engea in dazvltarea de programe, ave nevoe de un sistem de operae gi de uneleinsumente de dezvotare, cum arf un editor sun compilto. Relay la aceslo corinfe, ex o dierent fundamentaléinre dezvoterea pentru UNIX si deevotarea pent Windows. Sub UNIX, put obtine rat cam to osea ce ave neva: 1 Pentru sisterul de operee, avel nurneroase opfun, cum sunt Linux sau una din vaiantete BSD gra- lite, cum sunt FreeBSD, NetBSD gi OpenBSD. 1" Peniruinsrumentole de dezvotae, toate acest sistome de opeare sunt dcate cu editoereprecum vi 4 emacs, procum gi compliatoae ca goo gi egcs. ' Cand sunt ansate actual ale sistemelor de operare sau ale Insrumentelr de dezvotare, le pute urs smplu descérca din iniemet sau v8 pute procura un compact ise necostistor. Ast cr ese \alabl chir gi pentu revzurle substan Pe de at parte, dezvoltareaprogrametor in Windows est relat costtoare: 1 Sistemul de operare nu este grat 1 insirumentele de dezvollr, precum complaorl, nu sunt ratte ' Cin sun ansate actual al sistemuii do operare sau ale nstrunentslr, vetue 8 lt dn nou, chiar acd acstea nu sutton dectromedi poniru he cau atuzaticremeniae de ics impor ‘Toate acestea inseam cn tip oe costule pentru dezvotaea progmelor in UNIX sun in esent’, ‘ule, pantu Windows acestea pot atinge vlor considerable. Se pres poate ca dezvotatorir MySQL 58 lopacd ef uereze cu MySQL, dar nual de mult int 98 fe ispusl sé platens pena aco preg, Costure de dezvotare sub Windows tebuie recuperate in-un fel sau atl iar taxa penta ican este ‘modu n cre se produce aceasté recuperae, In pus, ezvoator au descopert ci programaree sub Windows necesté mai ml inp dect cea sub LUNIK. Deosrece timoul dezvottorior are o matime fk, acesta este un cost care trebule supotal pe spezele versiunll UNIX (care este, n fond, patforma primar de dezvalare a sistemulll MySQL) Taxa 6& cents Windows furrizeazB un stimulet pentru erentarea Umpuli ia efoturlor spe potl Windows. Deca dort 8 rua Windows, dar nu dr obinet cena pony sever, vet unele opti: 1 Bist versune shareware a ssemull MySQL, pe cae o pute tela pent evaluare. Acces versune ‘i ole 30 de ae pei ulizareaserveruli, dup car pte decide dacs veh pt ena pen el. 1 Dac8 rat serverul Windows in sopuri educonale sau In institu univestare sau de cerceare ‘gwvemameniale, puto core dezvotatarior <8 va seutasc8 de taxa de licen 1 Programele cient sunt grate n ce caz, del dac8 pel gis! pecineva cae rueazd dele un server ‘este oispuss8 vi perm 8B flosj ave acces comple fs caraciorisile ester MySQL, Introducere 7 Ce puteti astepta de la aceasta carte Citind volumu! de fai, putes tnviga si folosysistemul MySQL in mod eficient, astfel in si vd putet face reaba intrsun mod mai produetiv. Vefi putea determina modul de intro- ducerea inforrasilor dumneavoastr3 intro baz& de date gi vei invifa si formula interogi care $i vi ofere rispunsurilaintrebiri pe care dori si le punetirelati la ace date. [Nu trebuie si fgi programator pentru a ingelege sau pentru a folosi SQL. Aceasti carte viva arita cum funcfioneaz§ sistemul. Dar, pentru ainjelege modul de utlizare adecvatd a unei baze de date, nu este suficent si cunosti sintaxa SQL. Lucrarea pune accentil pe caracteristcle unice ale sistemului MySQL si indica modul de utlizare a acestors. Alte inf se concentreaz3 asupra limbajului SQL in general, respectiv asupra dialeccului SQL alunui alt SGEDR. De asemenea, vesi vedea care este modul de integeare al sistemului MySQL cu alte instrumente. Cartea prezinté modul de utilizare a sistemului MySQL cu PHP sau Perl pentru a genea pagini Web dinamice, create din recultaele interogirilor aplicate bazelor de date. Veqi invija si scrieti propriile dumneavoastri programe caré si aiba acces la bazele de date MySQL. Toate acestea imbunatifesc posibilittile SQL de a satis- face cerintele aplicapilor dumneavoastri particulare. Dact vesifiresponsabil cu administrarea unei instaliri MySQL, aceasti carte vi va arita care sunt indatoririle dumnesvoastré si modul de indeplinire a acestora. Vet! invija si configuragi conturi de uilizator, si executati copii de siguranti ale bazclor de date $i si Juayi maisuri pentru a asigura securitateasitului durmneavoadtra, »Harta rutiera® a acestei cirti Lucrarea de far este structuratS in patru parti. Partea I: Utilizarea generali a sistemului MySQL . ‘ Introducere in MySQL si SQL. Discutl despre modul in eare MySQL vi poate fi de folos si consire un manual general care prezinti programul client interactiv MySQL si care trateazi elementele fundamentale ale imbajului SQL. ‘*Lucrul cu date in MySQL. Discuti tipurile de coloane furnizate de SQL pentra descrierea datslor dumneavoastra, proprietiyle si dezavantajele fiecSrui tip, cand si cum si utiliza aceste tipuri, modul de selectare dintre tipurisimiare, evaluarea expre- sillor gi conversia ipurilor, ‘ Sintaxa si utiizarea SQL in MySQL, Fiecare SGBDR important existent in prezent Sngelege SQL, dar fiecare motor de baze de date implementeazi un dialect SQL. usor dliferit. Acest capitol discuté despre SQL, cu accent asupra acelor caracteristci dis- tinctive ale sistemului MySQL. De asemenea, discuti despre caracteristiei prezente in alte sisteme de baze de date, dar inexistente in SQL, precum i solusile existente. lor. Un mod mai eficient de rulare a interogitilor. © Optimizarea interog: 18 Introducere Partea a Il-a: Utilizarea interfefelor de programare ale sistemului MySQL # Introducere in programarea MySQL. Discuti despre unele interfege de programare a aplicagillor disponibile sub MySQL si congine o comparatie generalé a interfegelor API pe care cartea le trateaza in detaliu. # Interfata API MySQL pentru C. Modul de seriere a programelor C folosind inter~ faa API furnizati de biblioteca client inclusi in distribugia MySQL. ‘ Interfata API pentru Perl DBI. Modul de scriere a scripturilor Perl folosind modu- Jul DBI. Trateazi scripturile autonome gi scripturile CGI pentru programarea siturilor Web. © Interfata API pentru PHP. Modul de utilizare a limbajului de scripting PHP pentru a scrie pagini Web dinamice, care objin acces la bazele de date MySQL. Partea a Ill-a: Administrarea sistemului MySQL ‘© Introducere in administrarea sistemului MySQL. Prezinti indatoririle unui admi- nistrator de baze de date si noyiunile pe care trebuie si le cunoagteti pentru a rula un sic peeformant. © Catalogul de date MySQL. O examinare aprofundati a organizarii si conginutului catalogului de date, regiunea in care MySQL stocheaza bazele de date i fisierele de © Administrarea general a sistemului MySQL. Modul in cae vi puteiasigura ci serverul dumneavoastra porneste, respectiv se opreste in mod adecvat atunci cid sistemul dum- nneavoastrl execu aceast operatic. De asemenca, include inscucfiuni pentru configurarea conturilor de utilizator MySQL si discuri despre intreginerea fiserelor jurnal, despre strategile de ereare a copilor de sigurang’, despre ajustarea serverelor si despre strategile de realizare a copilor de sigurang, respectiv de refacere a bazelor de date. ‘# Sccuritate. Ceea ce trebuie si tigi pentru a proteja instalarea sistemnului dumneavoas- tei MySQL impotriva intrusilor, ae2t contra altor utilizatori ai gazdei serverului, ct gi a clienilor care se conecteazi prin refed. # Intretinerca si repararea bazelor de date. Modul de a reduce posibilitatea de aparitie a dezastrelor printi-o tnucfinere preventivi, procum 7i metodele de a efectua refacerea fn urma ciderilor, daci dezastrele survin in ciuda misurilor dumneavoastrl de pre- Partea a IV-a: Anexe © Obfinerea gi instalarea programelor. De unde si vi procurati principale instru- mente descrise in carte si modul de instalae a acestora, © Referingi de tipuri de coloane., Descrierea tipurilor de coloane MySQL © Referinga de operatori si functii. Descrierea operatorilor si a functilor care se pot folosi pentru a serie expresii in instructiunile SQL. © Referinga de sintaxi SQL. Descrierea fiecirei instructiuni SQL pe care MySQL 0 poate inelege. Inroducere 19 ‘© Referinga de programe MySQL. Descrierea fiecirui program furnizat in distributia MySQL. ‘© Referingi API C. Descrierea tipurilor de date sia functiilor din biblioteca client C a istemului MySQL. ‘© Referingi ATI Perl DBI. Desericrea metodelor gi a atributelor furnizate de modulul Perl DBL ‘© Referingi APL PHP, Descrier ale functilor furnizate de PHP pentra suportul MySQL. Instrumente utile produse de terfe parfi. O suceintd trecere in revisté a unora dintre instrumentele disponibile pentru a vi ajuta si utilizayi MySQL, cum sunt utlitarelé de conversie a datelor sau utlitarele administrative. ‘¢ Furnizori deservicii Internet. Ce anume trebuie avutin vedere atunci cind alegeti un ISP care furnizeaz’ acces MySQL. Ce anume trebuie avut in vedere atunci cind functionafi ca furnizor de servicit Internet care asigur’ clienilor servicii MySQL. Cum si citifi aceasta carte Indiferent de portiunea din carte pe care o citi la un moment dat, cel mai bine este si incercati exemplele pe misur’ ce parcurgeticartea. Daci MySQL nu este iastalat in sis- temul dumneavoastri, trebuie sii instalapi sau si ragati pe cineva sil instaleze. Apoi, procurafi-vé figerele necesate pentru configurarea bazei de date demonstrative la care ‘vom face referite pe parcursul cirpii. Anexa A, ,Objinerea 4 instalarea programelor", vi arati de unde vi putesi procura toate acestea si confine instrtiuni pentra instalarea lor. Daci mu aveti ici cele mai clementare notiuni privind MySQL sau SQL, incepeti de la ceapitolul I, ,lntroducere in MySQL si SQL". Acest capitol vi oferi o introducere de tip manual cate vi prezinti fundamentele concepizlor privind MySQL si SQL si vi oferd cele necesare pentru a putea parcurge restul ciii. Apoi,trecet la capitolul 2, .Lucrul cu date in MySQL", respectiv capitolul 3, ,Sintaxa si utilizarea SQL in MySQL", pentru a descoperi modtl de descriere si manipulare adatelor dumaeavoastr, astfel incSt si puteyi exploata caracterstcilesistemului MySQL pentru proprile dumneavoastraplicai Daci averi unele notiuni de SQL, trebuie totus si citisi capitolele2 gi 3. Implementir SQL difera gi vepi dori s& stip care sunt elementele distinctive ale implementirii MySQL in raport cu alts implementiri pe care, poate, le cunoastei Daci avefi experienti cu MySQL, dar avefi nevoie de mai multe informaii privind detallle de efectuare a anumitor operaii, puteti folosicartea ca pe o refering, cZutind subiectele dorite in functie de necesita Daci suntefi interesat in avi serie propriile dumneavosstrl programe pentru accesul la bazele de date MySQL, citi capitolele referitoare la API, incepand de la capitolul 5, aIntroducere ta programarea MySQL". Dack doriti si generafi o interfags bazati pe ‘Web la bazele dumneavoastei de date pentru a faclita accesul la acestea sath invers, pen- ini a furniza un back end de baze de date pentru situl dumneavoastra de Web in scopul dea vi imbunitigi situl cu un conginut dinamic, examinaficapitolele 7, »Interfaya APL pentru Perl DEI“, respectiv 8, ,Interfafa API pentru PHP". 20 Introduces Daci evaluafi MySQL pentru a-l raporta la sistemul dumneavoastri curent de gestiune a bazelor de date relationale, numeroase portiuni ale citi vi vor fide ajutor. Citi capi- tolele referitoare la tipurile de date si la sintaxa SQL din Partea I pentru a compara MySQL cu sistemul SQL cu care sunteyi obignuit, capitolele de programare din Partea a Il-a daci avesi aplicafit personalizate, respectiv capitolele despre administrare din Partea.a Il-a pentrt a estima nivelul de supore administrativ necesar unet instaliri a sis- temului MySQL. Aceste informarii sunt de asemenea utile daci mu folositi in mod curent o bazi de date, dar efeetuati o analiza comparativi a sistemului MySQL i a altor sisteme de baze de date, in scopul de aalege unl din ele, Dac doriti acces la MySQL si clutayi un furnizor de servicé Internet (ISP) care si-1 ofere, vezi Anexa J, ,Furnizori de servicii Internet", pentru sugestii privind alegerea ‘unui furnizor. De asemenea, aceasti anexi consine sfaruri pentru furnizorii de servicii care dorese si asigure MySQL penteu a-s atrage noi clieng sau pentru ai servi mai bine pe client aetuali Versiuni de programe tratate in aceasta carte In momencul scrierii acestor rinduri, versiunea curent stabili de MySQL este seria de vyersiuni 3.22, iar seria 3.23 se afld intr-un proces de dezvoltare activa. Cartea se ocupi de ambele serii, Acolo unde anumite caracteristici mu existé in versiunile anterioare (nclusiv seria 3.21), acest lucru este semnalat. Pentru celelalte pachete principale de programe discutate aici, versiunile recente sunt suficiente pentru exemplele date in carte. Versiunile curente sunt: Pachet Versiune Perl DBI 1413 Driver Perl DBI pentru MySQL 1.22.xx (stabili), 1.23.xx (beta) PHP 3.0.12 (4.0 se ali la orizont) Apache 139 CGLpm 256 “Toate programele discutate in accasti carte sunt disponibile din Internet. Anexa A furizeaz& instrueyiuni pentru incircarea in sistem! dumneavoastra a sistemului MySQL, a suportului pentru modulul Perl DBI, a limbajului PHP, a serverului Apache sia limbajului CGI.pm, Aceasté anexé mai conjine instructiuni pentru procurarea bazei de date demonstrative folosite in exemplele din carte, precum sia programelor exemplu create in capitolele de programare. Conventii folosite in carte ‘Conventiile tipografice folosite sunt urmatoarele: Corpul de literi monospariat indici nume de gazde, nume de fisiere, nume de cataloage, comenzi, optiuni si situri Web. Introducere 24 Acolo unde comenzile sunt indicate atunci cind le introduceti, caracterele aldine indici textul pe care il introducefi. Promptul indici modul de rulare a comenzii: * ‘Comanda este rulati ca utlizator UNIX obignuit * Comanda este rulati ca utilizator UNIX ridicin (root) cae Comanda este rulatd in Windows Corpul de literé cu caractere italice din comenzi indicé locul unde trebuie si introduces o valoare la libera dumneavoastrialegere. fn instructiunile SQL, euvintelecheie si numele functiilor SQL. sunt serise eu caractere majuscule. Numele bazelor de date, ale tabelelor gi ale coloanelor sunt serise cu carac~ tere minuscule, fn desrierile stasis, paranezele drepte ({ 1) indie infrmi coptionale. Resurse suplimentare Aceastt carte incearci si vi spunii practic tot ceea ce trebuie si gtji despre MySQL. Dar ack avetiointrbare al cei rispuns mu se gisese fn carte incotro tebuie sf vi indreptagi? ntre resursele utile sunt incluse siturile de Web pentru programele in raport cu care aveti nevoie de ajutor: Pachet Sit Web principal MySQL http://w. mysql.con/ oc. htm. Perl DBI http: / wm synbo2stone..org/technolegy/pert/08t/ PHP http: / /wm.php.net/ Apache http: fmen.apache.org/ CGLpm http: / /stein/cshl.org/WM/software/COI/ Urilizarea manvalului electronic de referinjis MySQL B Nu uta sé examinaf ocazional manus electronic de refit MySQL pent inforatiprivnd cele mai recente inbunj efertoare la MySQL. Manuaiul a f madiicatcontnw, pe masure april de nol schimbar Aceste situri coagin indicator’ spre dferite forme de informayie, cum ar fi manualele de refering liste eu intrebirifreevente (FAQ) si liste de corespondenti: # Manuale de referings Principala documentatie inclusé chiar in SQL este manualul de referingé. Acesta este disponibil in numeroase formate, inclusiv o versiune electronic’. Manual] PHP este disponibil, de asemenca, in mai multe versiuniy tora, versiunea electronica tinde si fie mai complecé dectt versiunea in format tiptrit, Modulul DBI si driverul situ specific pentru MySQL au 0 documentatie separati Documentul DBI congine concepte de ordin general. Documentul driveruhui MySQL discuta caracteristicispecifice sistemului MySQL « fntrebiri frecvente (FAQ) Existi liste FAQ pentru DBI, PHP si Apacke. 22 Introducere: # Liste de corespondenta Existi mumeroase liste de corespondenga orientate spre programele discutate fn aceast carte, Este o idee bun si vi abonatila cele care se refer la instrumentele pe care doriti ‘ile utilizai. Vi rugim si nu uieay, torus, cl trebuie si invigai si folosigi arhivele (pentru listele care dispun de asemenea arhive). Dac sunteti incepitor in vtilizarea ‘unui instrument, vei avea multe intrebiri care au fost puse (gi la care s-a rispuns) de tun milion de ori, deci nu avefi nici un moriv si intrebati din nou daci putesi gisi rspunsul printr-o efutare rapid prin athive. Instructiunile pentru a vi abona la listele de corespondent’ variaz’, dar puteti gisi informatii la adresele URL preventate aiciz Pachet Instructiuni pentru lista de corespondenga MySQL hetp: //ww.nysal.com/éoe. ted Peel DBL http://w, symbolstone. org/techaelogy/per1/0B1/ PHP vetps/ Jum. php.net support ohn Apache http: nw. apache. org/foundation/maiingiists. htm « Situri Web subordonate ‘In afarasiturilor Web oficiale, unele dintre instrumentele discutate aici dispun de situri subordonate, care furnizeaai informapii suplimentare, cum ar fi cod sursi demonstra~ tiv sau articole centrate pe anumite subiecte. Cautatio regiune “Links” (legitui) din situl oficial pe care il vizitayi PARTEA | Utilizarea generala a sistemului MySQL 1 Introducere in MySQL si SQL 2. Lucrul cu date in MySQL si SQL 3. Sintaxa $i utilizarea SQL in MySQL 4 Optimizarea interogérilor Caritowut I Introducere in MySQL si SQL Acest capitol constituie ointroducere in sistemul de gestiune a bazelor de date relayionale (SGBDR) MySQL gi in limbajul de interogare structurat (SQL) pe care il ingelege sis emul MySQL. Capitolul prezinté termeni si concepte fundamentale pe care trebuie si le injelegeti, descrie baza de date demonstrativi pe care 0 vom folosiin exemplele din carte si contine un manual care VA indick modul de utilzare a sistemului MySQL pentru a crea © bazd de date si pentru a interactiona cu aceasta. Incepeti de aici dack sunteri un neofit in domeniul bazelor de date si, poate, nu sunteyi sigur dacd aveyi nevoie sau daci puteyi folosi 0 bazi de date. De asemenea,trebuie si citi capitolul de faya dac& au stip nimic despre MySQL sau SQL gi aveti nevoie de un hid introductiv pentru faceput. Cisitorii cu experienji in MySQL sau cu sistemele de Baze de date pot omite acest material. Totugi, toaté lumes trebuie si citeasc& secriunea 10 bazi de date demonsteativi", deoarece este cel mai bine si fig familiarizat ow Tria gi conginutul bazei de date pe care o vom folosi in mod repetat pe parcursul cir Cum vi poate ajuta MySQL ‘Aceasti sectiune descrie situapii in care sistemul de baze de date MySQL poate fi util. ‘Astfel, vi veti forma o pirere cu privire la tipurile de operafii pe care le poate efectua MySQL gi la modalititile in care acest sistem va poste ajuta. Daci nu trebuie si vi convingeti de utilitatea unui sistem de baze de date ~ poate fiindca deja avegi o problema ‘in minte si doriti pur gi simplu si aflagi care este modul in care puteti folosi MySQL pen- tru a Vi ajuta si o rezolvagi ~ puteti trece la secfiunea ,O bazi de date demonstrativa". Un sistem de baze de date este, in esenti, o modalitate de a gestiona liste cu inform: Informatiile pot proveni dintr-o varietate de surse. De exemplu, pot reprezenta date de cercetare, inregistriti de afaceri, cereri ale cliensilon statistici sportive, rapoarte de vanziri, informatii despre hobby-urile proprii, inregistrisi de personal, rapoarte privind. defecriuni sau notele unor elevi. Totusi, desi sistemele de baze de date pot lucra cu o gam’ larga de informagii, nu folositi un asemenea sistem doar de dragul de a-| folosi. ‘Dacd o sarcind este de la bun inceput usor de indeplinit, nu aveti nici un motiv de a insera o baz de date numai pentru ao folosi. O list de cumpirituri este un exemplu bun: scrieti articolele pe care trebuie si le cumparati, le stergeti de pe lista atunci cand le ‘cumpirafi si apoi aruncagi lista. Este putin probabil si folositi o baz de date pentru asta. Chiar daci averi un calculator de tip palmtop (care poate fi tinut in palma ~ N.T) proba- bil c& pentru lista de cumpirituri veti folosi functia sa de editare de texte, nu caracteris- ticile sale de baze de date. Capitolul 4 Introducere in MySQL siSQL_ 25 Puterea unui sistem de baze de date intri in actiune atunci cind informagile pe care dorsi si le organizayi gi sX le gestionayi devin voluminoase sau complexe, astfe]incit {nregistrivile dumneavoastri devin prea dificil de manipulat mana. Bazele de date pot fi folosite, desigur, de citre mari corporati, care prelucreaz& milioane de tranzacyi zl- nic. Dar chia: si operatiile a scar mici, care necesiti o singurd persoani pentru a intregine informayii de interes personal, pot necesita o baz de date. Nu este grew si ne sgindim la situa in care utiizarea unei baze de date poate fi benefici, deoarece nu tre- buie si aves eanttiyi imense de informati inainte ca acele informayi si devin’ dificil de gestionat. $¥ ne gindim la urmitoarele sicuaii Intreprinderea dumneavoastri de timplirie are numerosi angajayi, Trebuie 8% pastragi ‘negistrrile cu salarii si statele de placd astfel incit si tipi pe cine afi plitit si cind ai efectuat plata; de asemenea, tebuie si rezumayi aceste inregistriri pentru a putea remite declarasile de venit autoritatilor, in vederea stabiliitimpozitelor. De asemenea, trebuie si pistrafi evidenga sarcinilor pe care compania dumneavoastra a fost angajath si le indeplineasc’ si salariagii pe care i-ayi programat si ucreze la fiecare sarcin§. ‘© Suntesiadministratorul unei rejele de deporite cu piese de schimb pentru autovurisme si trebuie si sti care sunt depozitele care dispun de o anumité piesi in inventas, acfl incit si putesi onora comenzile cliengloz. © Ca vanzitor de juciri, suntet! supus cu precidere unci cereri (dependente de capricii- le cumpiritorilor) de articole pe care le puteti transporta. Doriti si stti care este traiectoria curentl a vanzirilor pentru anumite articole,astfel incdt sf puteyi estima dack si mixigi inventarul (pentru un articol care devine mai popular) sau daca si reducesi (peatru a nu Vi ,inyepeni" cu un stoe foarte mare dintr~un produs care nu se ai vinde b ne). . 1 Stiva de date de cercetare pe care le-ayi adunat in cursul mai multor ani trebuie si fie analizati in vederea publiciri, pentru ca nu curmva dictonul .publici sau dispari* si devind epitaful carierei dumneavoastré. Doriti si reduceti mari canivigi de date brute pentru a genera informagii de suma, precum si si extrageti subseturi selectate de observa tr vederea une analize statistice mai detaliate ‘* Sunteji un crator cunoscut, care cilitoreste prin far pentru a partitipa la numeroase tipuri de aduniri, cum sunt festivtiyile de absolvire, intlnirile de afaceri civice si conventii politice. V-afi adresat publicului de atitea ori, incit este dificil si vi amintif ce anume afi spus in fiecare loc unde afi fost, deci afi dori si pistrai inregis iri ae discursurilor dumneavoasted trecute gi sile folosigi pentru a vi ajuta in plani- ficarea angaamentelor dumneavoastri viitoare. Daca reveniti inuun loc unde afi mai vorbit, nu dorsi si tinesi un discurs similar cu unul pe care I-afi mai ginut in acel loc, iar 0 fnregistrare a fiecirui loc pe unde afi fost vi va ajuta si evita repetirle. De asemenea, dorii si retineti modul in care au fost receptate discursurile dumneavoas- rk. (Monologul dumneavoastri ,De ce-mi plac pisicle" de la Metropolitan Kennel Club a fost oarecum un fiasco, deci nu vrei si facesi din nou acceasi greseali, daci reveniti acolo.) s ‘© Sunteyi un profesor care trebuie si-si pistreze evidenta notelor date gi a prezenpei la cours, De fievare dati cind dari un test sau un chestionar, inregistrati nota obsinuti de 26 —Parteal__Usiizarea general a sistemului MySQL fiecare elev. Este destul de simplu si scrieyi notele intr-un catalog, dar utilizarea ulte- rioarl a notelor este o treaba dificil. Preferai si evita sortarea notelor de la fiecare test pentru a determina distributia notelor; de asemenea, preferati si nu adunafi punc~ tajele fiecdrui elev atunei cand determinayi mediile finale de la sfirpitul perioadei de notare, Niel numitarea absenyelor fiecirui eley nu are nei un haz. ‘ Instituya al crei secretar suntefifoloseste un catalog al membrilor. (Institugia poate avea orice profil: o socitate profesionali, un club, o companie cu depozite,o orchestra sim- fonied sau un club pentru intreyinerea condite zie.) Infiecare an, general acest eata- Jog in forma srs pentru membri, in functie de un document creat cu un procesor de texte pe care il edit’ atunci cind informapile despre membri se modifica. ‘V-ati plitisit si folositicatalogul in acest mod, deoarece limiteaz modurile de wi- lizare a acestuia, Sortarea intrirlor in diferite modusi este dificilé si nu puteti selecta ‘cu usuringS mai anumite pirgi ale fieckrelintriri (cum ar fi o lise aledtuitd numai din nume ji numere de telefon). Nici mu puteri descoperi usor un subset de membri, ‘cum sunt aceia care trebuie si-i plavease fn curind cotizatia; dac& ap putea, aj elimina necesitatea dea eluta lunar in dferiterubriei pentru avi gisi pe acei membri cirora tre- buie sili se trimitéingtiinpiri pentru plata cotizafici. De asemenea, dori efectv si evitayi si editai personal caalogul, dar bugetalsociet cste limita, jar angajarea unei alte persoane este in afara oricei discupii. Aji auzit despre sbicoul irk hati care ar rezulea din intreyinerea electronic& a inregistririlos, dar inc ‘hu ati ysimgie" nici un avantaj al acestuia. fnregistrrile pentru fiecare membru sunt in format electronic dar, ironic, nu se afld into formi care poate fi folosité cu usuringi in orice scop, mai pugin yenerarea de hart prin tipSriea catalogului membrilor! Aceste scenarii variazi de la situa care implici mari canttiqi de informagi si pind la cazuri cu un volum de informagiirelativ redus. Elemental comun este existenfa unor ‘operagii care por fi efecruate manual, dar care pot fi executate mai eficient de eitre un sistem de baze de date. (Cate sunt avanrajele concrete pe care trebuie si le agteptafi din uilizarea unui sistem de baze de date precum MySQL? Aceasta depinde de necesitiile si ceringele dumneavoas- tri specifice, iar acestea sunt extrem de variate, asa cum s-a aritat in exemplele prece- lente. 5t examinkm un tip de situagie care survine frecvent yi care astfl exte destul de reprezentativ pentre utilizarea bazelor de date. Sistemele de gestiune a bazelor de date sunt frecvent wtilizate pentru executarea unor ope raj cum sunt cele pentru care se folosesc fiierele (nu cele electronice -N.T).fntr-adevar, co bazi de date este un fier de mari dimensiuni din anumite puncte de vedere, dar un fisier eu un sister de fare incorporat. Pistrarea prin metode electronice a inregistrilor pre- int’ clteva avantaje importante fal de pistrarce manvali a fnregistrrilor. De exemplu, dlaci jucraji inte-un birou in care sunt pistrate inregistrrile clientilos iaté citeva modali- 184i in care MySQL vi poate ajuta: (© Timp redus de figare a inregistrarii, Nu trebuie X chutai fn sertarelefisierelor pentru a determina unde si puneti 6 noui tnregistrare. ,fnménafi" inregistrareasistermului de figare si ii permitep si plaseze inregistrarea Ia locul potrivit pentru dumneavoastrs, Capitolul 1 Introducere in MySQL siSQL 27 # Timp redus de regisire a inregistrati, Cand ciutayi inregiseriri, nu cSucati personal in fiecare inregistrare pentru a le gisi pe cele care contin informatie dorite. $a pre- supunem c luerayi intrun cabinet stomatologic. Daci doriti si trimitesi ingting&ri tuturor pacientlor care nu s-au prezentat la control de mai mult timp, cere ide fgare si giseasc’ inregistririle adecvate. Desigus, veti proceda altel decit dact ajivorbi cu o altd persoand. Acesteiai-afi spune: .Fit amabil i aflé care sunt pacienti tare nu s-au prezentat la control in ultimele 6 uni" tn fafa unei baze de date, emiteyi o incantayie bizar SELECT nume, prenune, ultina_vizita FAO pacient WHERE ultina_vizite, i Partea optiun$ a liniei de comand yset poste fi vidi, dar cel mai probabil va trebui si emitei o comand ca urmicoarea 4 mysql -h mune gazde -u nuoe_vtslizetor -p Ene posibil si nu fie necesar si specifcati toate aceste opyiuni cind invocaji nysa}s pela la administrtorul MySQL pentru a afl sintaxa exacté a comenaii pe care trebuie si 0 folosig, Probabil ci va trebui si specifica cel pugin un nue gi o parol ‘ agi tn invgarea sistemului MySQL, probabil ci sistem siu de securitate vi se va pirea agasant, deoarece ingreuneazi electuatea operayilor dorite (Frebuie si obsineti permisiunca de a crea si dea objine acces lao baza de date gi trebuie sivi specificay mumele gi parola de fiecare dati cdnd vi conectafila server) Totus), dup ce ves trece dincolo de baza de date demonstrativi gi vei introduce gi folosi proprile domneavoastriinregistrri, perspectiva dumneavoastrl ze va schimba radical. Apo, ve aprecia faprul ck MySQL impiediek ate persoane si vi spioheze (sau, mai eu, chiar sf vi distrugi!) datele. - ati care este semnificayia opyiunilor: Gazdsa secverului la care dorii st vi conectag. Dac serverul ruleaza pe aceasi calcu- lator pe care utlizati mysql, in mod normal aceasti optiune poate fi ompis ¢-u mume_utilizator (formé alternativi: --user*nune_utilizator) « Numele dumaeavoastri de utilizator MySQL. Dacé folosiqi UNIX $! numele dum- neavousti de utlizator MySQL este acelast ca numele dumneavoastra de deschidere a sesiunii de lucru, puteyi omite aceasté opfiune; nysal va folosi numele de deschidere a sesiunii de lucru'ca nume MySQL. Sub Windows, numele de utilizator prestabili este 086, ceea ce nu este foarte util. Fie specifiayi un nume ta linia de comands, fie stabilisi un nume prestabilit in medi dumneavoasts prin configurarea varabilel see. De exemplu, pot folosi urmitoarea comandi set pentru a specifica numele de utilizator paul: ‘set USER=pas © -p (formi alternativi: --password) Aceastd opriure indici programului nysq? si vi solicite parola dumneavoastri MySQL. ‘Novi: vi putes insera parola in linia de comanda tastand-o sub forma -poarola_avs form’ altenativis--parolarparota_dvs). Tocusi, din motive de securitate, cel mai bine

You might also like