Bazele MySQL – Scurta introducere

0

Acest capitol asigura o introducere la tutorialul  MySQL, aratandu-ti cum sa folosesti programul client  mysql pentru a crea si pentru a utiliza o baza de date simpla. mysql (denumit uneori „terminal monitor” sau doar „monitor”) este un program interactiv ce iti permite sa te conectezi la un server MySQL, sa efectuezi interogari si sa vizualizezi rezultatele.  mysql poate fi folosit de asemenea si in batch mode: iti plasezi in prealabil interogarile intr-un fisier, apoi soliciti lui mysql sa execute continutul fisierului. Ambele cai de utilizare ale mysql sunt acoperite aici. Pentru a vizualiza o lista de optiuni furnizate de catre  mysql, invoca-o prin optiunea –help:

Acest capitol are la baza premiza ca pe computerul tau se afla instalat mysql si ca exista un server  MySQL disponibil, la care te poti conecta. In caz contrar, contacteaza-ti administratorul MySQL.

Acest capitol descrie intregul proces de constituire si de utilizare a unei baze de date. Daca nu te intereseaza decat accesarea unei baze de date deja existente,  probabil ca vrei sa treci peste sectiunile care descriu crearea bazei de date si a tabelelor pe care aceasta le contine.

Avand in vedere ca acest capitol este in fond un tutorial, numeroase detalii au trebuit sa fie omise. Consulta sectiunile corespunzatoare din cadrul manualului pentru mai multe informatii referitoare la aspectele parcurse aici.

Pentru a te conecta la server, va trebui de regula sa introduci un nume de utilizator MySQL atunci cand invoci mysql, si, cel mai adesea, si o parola. Daca serverul ruleaza pe un alt computer decat pe cel pe care deschizi sesiunea de lucru, va fi nevoie sa specifici si un host name. Contacteaza-ti administratorul pentru a afla ce parametri de conexiune trebuie sa folosesti pentru a te conecta (adica ce host, nume de utilizator, si parola sa utilizezi). Odata ce dispui de parametrii adecvati, ar trebui sa te poti conecta astfel:

host si user reprezinta host name-ul unde ruleaza serverul tau MySQL si numele de utilizator al contului tau MySQL. Introdu valori adecvate setup-ului tau. ******** reprezinta parola ta; introdu-o in momentul in care mysql afiseaza prompt-ul Enter password. Daca totul merge bine, ar trebui sa observi niste informatii introductive urmate de un prompt mysql>:

Prompt-ul mysql> te anunta ca mysql este gata pentru a primi comenzile pe care tu le vei introduce. Daca lansezi sesiunea de lucru pe acelasi computer pe care ruleaza MySQL, poti omite host-ul, folosind, pur si simplu:

Daca, atunci cand incerci sa te loghezi, primesti un mesaj de eroare precum ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2), inseamna ca daemon-ul serverului (Unix) sau serviciul (Windows) corespunzator lui MySQL nu functioneaza.

Unele instalatii MySQL permit userilor sa se conecteze ca utilizatori anonimi (unnamed) la serverul ce ruleaza pe host-ul local. In cazul in care acesta este chiar computerul tau, ar trebui sa te poti conecta la server invocand mysql fara nici o alta optiune:

Dupa ce te-ai conectat cu succes, te poti oricand deconecta tastand QUIT (sau q) la aparitia prompt-ului mysql>:

Pe Unix, te poti de asemenea deconecta prin combinatia de taste Control-D.

Majoritatea exemplelor din sectiunile ce urmeaza pornesc de la premiza ca esti conectat la server. Ele indica acest lucru prin prompt-ul mysql>.

Asigura-te ca esti conectat la server, dupa cum s-a specificat si in sectiunea anterioara. Procedand astfel nu vei selecta in mod automat nici o baza de date cu care sa lucrezi, dar este in regula. In acest stadiu, este mai important sa afli cate ceva despre cum sa emiti interogari decat sa treci direct la crearea tabelelor, incarcarea datelor la interiorul acestora, respectiv extragerea respectivelor date. Aceasta sectiune descrie principiile de baza ale introducerii comenzilor, folosind cateva interogari pe care le poti incerca pentru a te familiariza cu modul in care functioneaza mysql. Iata o comanda simpla care cere server-ului sa iti returneze numarul versiunii sale, precum si data curenta. Introdu-o dupa cum urmeaza, folosind prompt-ul mysql> si apoi apasa Enter:

Aceasta interogare arata mai multe lucruri despre mysql:

• O comanda consta de obicei intr-o instructiune SQL urmata de punct si virgula. Exista anumite exceptii in care semnul „punct si virgula” poate fi omis – QUIT, dupa cum am mentionat mai devreme, este una dintre ele. Vom ajunge mai tarziu si la altele.
• Cand introduci o comanda, mysql o trimite catre server in vederea executiei si afiseaza rezultatele, iar apoi returneaza un alt prompt mysql> pentru a indica faptul ca este gata pentru o alta comanda.
• mysql afiseaza iesirile interogarii in formular tabelar (randuri si coloane). Primul rand contine etichete pentru coloane. Urmatoarele randuri reprezinta rezultatele interogarii. In mod normal, etichetele coloanelor constituie numele coloanelor pe care le-ai apelat din tabelele bazei de date. In cazul in care extragi valoarea unei expresii, mai degraba decat o coloana a unui tabel (precum in exemplul pe care tocmai l-am aratat), mysql va eticheta coloana folosind chiar respectiva expresie.
• mysql iti arata cate randuri au fost returnate si cat a durat executarea interogarii, ceea ce iti va da in mare o idee despre calitatea de exploatare a serverului. Aceste valori sunt aproximative, intrucat ele reprezinta timpul fizic petrecut in functia respectiva (si nu cel al computerului sau al unitatii centrale de prelucrare-CPU), dar si pentru ca sunt afectate de factori precum capacitatea de incarcare a serverului si latenta retelei (timpul de acces la date). (Pentru o mai mare concizie, instructiunea „rows in set” nu va fi intotdeauna inclusa in restul exemplelor din acest capitol.)

Cuvintele cheie pot fi introduse fie cu majuscule, fie cu litere mici. Astfel, urmatoarele interogari sunt echivalente:

Iata o alta interogare. Aceasta demonstreaza faptul ca poti folosi mysql pe post de simplu calculator:

Interogarile aratate pana acum au fost instructiuni de intindere relativ restransa, de cate un singur rand. Poti chiar sa introduci mai multe instructiuni pe un singur rand. Trebuie doar sa adaugi punct si virgula dupa fiecare dintre ele:

Nu este neaparat ca o comanda sa fie data in intregime pe un singur rand, asa ca acelea care sunt lungi si necesita mai multe randuri nu constituie o problema. mysql determina punctul in care se incheie comanda ta cautand semnul „punct si virgula”, care o inchide, si nu punctul in care se termina randul introdus. (Cu alte cuvinte, mysql accepta intrari cu format liber: el colecteaza liniile de intrari, insa nu le executa pana cand nu citeste semnul „punct si virgula”).

Iata o instructiune simpla scrisa pe mai multe randuri:

Observa in acest exemplu modul in care prompt-ul se schimba din mysql> in -> dupa ce introduci primul rand al unei interogari formate din mai multe randuri. Acesta este felul in care mysql indica faptul ca inca nu a citit o instructiune completa si ca asteapta sa introduci si restul. Prompt-ul iti este prieten: el iti furnizeaza un feed-back indispensabil. Daca valorifici acest feed-back, vei putea permanent sa prevezi ce anume asteapta mysql.

In cazul in care decizi ca nu vrei sa executi o comanda pe care esti in curs de a o introduce, anuleaza-o tastand c:

De remarcat, si de aceasta data, prompt-ul. Dupa ce ai tastat c, se va schimba la loc inmysql>, asigurandu-ti un feed-back ce iti indica faptul ca mysql este gata sa primeasca o noua comanda.

Urmatorul tabel iti prezinta fiecare prompt pe care ai putea sa il intalnesti, precum si un mic rezumat a ceea ce indica referitor la starea in care se afla mysql:

Prompt

Semnificatie

mysql>

Gata pentru o noua comanda.

->

Asteptand urmatorul rand al comenzii formate din mai multe randuri.

‘>

Asteptand introducerea urmatorului rand, asteptand incheierea unui sir care a inceput cu ghilimele simple (“”).

„>

Asteptand randul urmator, aspeptand incheierea unui rand care a inceput cu ghilimele duble (“”).

>

Asteptand urmatorul rand, astaptand incheierea unui identificator care a fost deschis cu un backtick (“”).

/*>

Asteptand urmatorul rand, asteptand incheierea unui comentariu care a fost deschis cu /*.

Instructiunile formate din mai multe randuri intervin adesea accidental in momentul in care intentionezi sa emiti o comanda pe un singur rand, insa uiti punctul si virgula de final. In acest caz, mysql va astepta o noua intrare:

Daca ti se intampla acest lucru (ai impresia ca ai introdus o instructiune, insa singura reactie este un prompt ->), cel mai probabil mysql asteapta punctul si virgula. Daca nu sesizezi ceea ce iti spune promptul, ai putea sa astepti ceva vreme inainte sa iti dai seama ce ai de facut. Introdu punctul si virgula pentru a incheia comanda, iar mysql o va executa:

Prompturile ‘> si „> apar in cursul colectarii sirului (un alt mod de a spune ca MySQL asteapta inchiderea unui sir). In MySQL, poti scrie siruri marginite fie de caracterul „„, fie „” (de exemplu, ‘hello’ sau „goodbye”), iar mysql iti permite sa introduci siruri care se desfasoara pe un interval de mai multe randuri. Atunci cand vezi un prompt ‘> sau „> , inseamna ca ai introdus un rand care contine un sir ce incepe cu ghilimele de tip „” sau „” , insa nu ai introdus inca si perechea respectivului caracter, care incheie sirul. Acest lucru indica adesea faptul ca ai uitat din neatentie un caracter din perechea de ghilimele. De exemplu:

Daca introduci instructiunea SELECT, iar apoi apesi ENTER si astepti rezultatul, nu se intampla nimic. In loc sa te intrebi de ce interogarea dureaza atat de mult, baga de seama indiciul furnizat de catre promptul ‘>. Acesta te instiinteaza ca mysql asteapta restul sirului incomplet. (Observi eroarea din instructiune? Sirului ‘Smith ii lipseste al doilea caracter de tip ghilimele simple.)

Ce vei face odata ajuns in punctul acesta? Cel mai simplu este sa anulezi comanda. Totusi, in cazul de fata nu poti sa tastezi pur si simplu c , deoarece mysql va interpreta acest lucru ca fiind o parte a sirului aflat in curs de elaborare. In schimb, trebuie sa inchizi ghilimelele (astfel, mysql va sti ca ai terminat sirul), iar apoi sa tastezi c:

Promptul se va modifica la loc in mysql>, indicand faptul ca mysql este gata pentru o noua comanda. Promptul > este asemanator prompturilor '> si "> , insa arata ca ai inceput, fara a incheia, un identificator cuprins intre caractere backtick. Este important sa stii ce inseamna prompturile '>, ">, si > , pentru ca, daca introduci din greseala un sir neterminat, orice alt sir ulterior va parea sa fie ignorat de catre mysql – inclusiv un eventual rand continand QUIT. Acest lucru poate fi destul de debusolant, mai ales daca nu stii ca trebuie sa inchizi ghilimelele inainte de a anula comanda in curs.

Leave A Reply