Administrarea bazelor de date MySQL din linia de comanda MySQL este unul dintre cele mai folosite sisteme de gestiune a bazelor de date client-server, fiind utilizat deseori în combinaţie cu scripturi PHP. Spre deosebire de lucrul cu alte baze de date, care presupune utilizarea unor biblioteci suplimentare (.dll), operarea cu baze de date MySQL este implicit “inclusă funcţional” în motorul interpretorului PHP (built-in). Operatiile care se desfasoara cel mai adesea intr-un sistem de gestiune a bazelor de date sunt: - conectarea la server; - afisarea bazelor de date existente; - selectarea unei baze de date cu care trebuie sa se lucreze; - afisarea tabeleor continute intr-o baza de date; - crearea unei baze de date; - crearea tabelelor din interiorul unei baze de date si precizarea campurilor continute in acele tabele; - popularea tabelelor cu date; - inserarea, regasirea, modificarea sau stergerea datelor din tabele; - efectuarea unor interogari asupra datelor cuprinse in tabele; - deconectarea de la serverul de baze de date. Conectarea la MySQL Conectarea clientului la serverul MySQL implică o comandă de genul (tastată la prompter-ul sistemului de operare, in directorul mysql\bin): mysql –h hostname –u username –p unde: -hostname este numele sau adresa IP a calculatorului pe care rulează serverul MySQL. Dacă programul client rulează pe acelaşi calculator ca şi programul server, optiunea –h hostname poate fi omisă. Nu există nici o legătură între numele user-ului de conectare la serverul (Linux sau Windows) pe care este instalat MySQL-ul şi numele de user MySQL. -username este numele de user. -opţiunea –p cere user-ului care se conectează să introducă parola corespunzătoare (va apare un prompt pentru parolă). După instalare, un user implicit este creat pentru conectare (pentru host-ul pe care este instalat serverul MySQL, respectiv pentru un host-client la distanţă), fără nume şi fără parolă. În acest caz conectarea (de pe host-ul local) se face tastând doar comanda ‘mysql’ fără parametrii (sub Linux) sau lansând mysql.exe (sub Windows). În cazul unei conectări reuşite, programul client MySQL va afişa prompter-ul corespunzător liniei de comandă: mysql>
La apariţia liniei de comandă, serverul MySQL este pregătit pentru a primi comenzi. Pentru început, se vizualizează bazele de date care sunt momentan sub gestiunea severului: mysql> SHOW DATABASES; Observaţie: Încheierea unei comenzi trebuie să se facă neapărat prin ‘;’. În cazul în care lipseşte ‘;’, şi se tastează ENTER, se consideră că respectiva comandă este scrisă pe mai multe rânduri, aşteptând-se continuarea editării comenzii, până la introducerea caracterului ;. Altfel spus, ENTER după caracterul ; înseamnă executarea comenzii iar ENTER după orice alt caracter însemnă continuarea editării comenzii pe o noua linie. Spre exemplu, comanda anterioară poate fi scrisă pe 3 linii astfel: mysql>SHOW ->DATABASES ->; Se recomandă scrierea unei comenzi de lungime mare pe mai multe linii. Execuţia comenzii SHOW DATABASES are următorul efect pe ecran: +------------+ | Database | +------------+ | mysql | | test | +------------+ 2 rows in set (0.00 sec) Serverul MySQL-ul utilizează o prima bază de date, numită ‘mysql’, pentru a stoca numele user-ilor, parolele corespunzătoare acestora şi drepturile lor (în diverse tabele, asupra cărora se va reveni). Ştergerea acestei baze de date (operaţie nerecomandată) poate conduce la erori în funcţionarea server-ului. A doua bază de date (test) este un exemplu de bază creată implicit în urma instalării fiind, după cum îi spune şi numele, o bază pentru testare. Comanda „create database” Inaintea crearii grupului de tabele care vor servi la memorarea datelor, trebuie creata o baza de date folosind comanda create database. Exemplu: mysql>create database evidenta; Comanda „use” Pentru a lucra (a selecta) o baza de date, aceasta trebuie precizata folosind instructiunea use urmata de numele bazei de date respective.
mysql>use evidenta; Comanda „create table” Dupa crearea bazei de date si selectarea ei se poate trece la crearea tabelelor (fisierelor) bazei. Instructiunea create table are sintaxa: mysql>create table nume_tabela( mysql>nume_col1 tip atribute, mysql>nume_col2 tip atribute, mysql>primary_key(nume_col1) mysql>); Atributele campurilor unui tabel • • •
•
unsigned – precizeaza ca nu sunt admise valori negative. not null – precizeaza ca la efectuarea unei inregistrari acel camp trebuie neaparat completat cu o valoare potrivita, deci nu este permisa valoarea nula auto_increment – este un atribut special in MySQL si functioneaza astfel: la efectuarea unei inregistrari in tabel, daca nu se precizeaza valoarea acestui camp, atunci MySQL genereaza automat un numar unic, mai mare cu o unitate decat valoarea maxima de pe coloana respectiva in acel moment (de obicei, pentru campuri cu numere intregi). MySQL impune ca o coloana cu atributul auto_increment sa aiba o valoare unica. primary_key- arata ca acea coloana din tabel este indexata pentru cautari rapide si ca fiecare valoare din acel camp trebuie sa fie unica.
Comanda “alter” Modificarea definitiei unei tabele se realizeaza folosind comanda alter. 1.Modificarea numelui unei tabele: mysql>alter table nume_vechi rename nume_nou; 2.Adaugarea unei coloane: mysql>alter table nume_tabela add column nume_coloana tip atribute; Comanda “insert” Insert serveste la adugarea de inregistrari (linii) intr-un tabel al bazei de date curente. Sintaxa comenzii este: mysql>insert into nume_tabela(col1, col2,...) values (val1,val2,...); Valorile de tip text trebuie puse intre ghilimele simple. Comanda “update”
Comanda update permite modificarea valorilor unor campuri dintr-un tabel. Sintaxa ei este: mysql> update nume_tabela set col1=val1,col2=val2...where col1=value; Desi conditia din clauza where poate fi complexa, de cele mai multe ori ea este de forma cheie_primara=valoare. Comanda “select” Comanda select este cea mai complexa comanda din limbajul SQL si este destinata regasirii unor anumite informatii. Daca se doreste selectarea tuturor inregistrarilor dintr-o tabela, sintaxa comenzii este: mysql>select * from nume_tabela; Daca se doreste selectarea doar a unor inregistrari dintr-o tabela, care indeplinesc o anumita conditie, sintaxa comenzii este: mysql>select * from nume_tabela where nume_camp=100; Daca se doreste selectarea doar a unor coloane dintr-o tabela, sintaxa comenzii este: mysql>select nume_camp1,nume_camp2 from nume_tabela; Daca se doreste selectarea doar a unor coloane dintr-o tabela, care indeplinesc o anumita conditie, sintaxa comenzii este: mysql>select nume_camp1,nume_camp2 from nume_tabela where nume_camp=100; Comanda “delete” Pentru a sterge unul sau mai multe articole existente, dintr-o tabela se va utiliza comanda delete cu sintaxa: mysql>delete from nume_tabela where nume_camp=100; Pentru a sterge toate articolele existente dintr-o tabela, sintaxa comenzii este; mysql>delete from nume_tabela; Comanda “drop” Comanda drop permite suprimarea unui tabel din baza de date curenta sau distrugerea intregii baze de date. Sintaxa comenzii este: mysql>drop table nume_tabela; mysql>drop database nume_baza; Comanda “show” Comanda show se foloseste pentru listarea bazelor de date existente, a tabelelor din baza de date curenta sau pentru listarea campurilor unei tabele. Sintaxa ei este: mysql>show databases; mysql>show tables;
mysql>show fields from nume_tabela; Comanda “quit” Comanda determina intreruperea conexiunii cu serverul MySQL si inchiderea sesiunii de lucru a clientului MySQL. Este echivalenta cu exit. mysql>quit; mysql>exit;
Dezvoltare de aplicaţii PHP cu baze de date MySQL Principial, operarea în PHP cu baze MySQL este extrem de asemănătoare cu cea cu bazele de date InterBase (deosebirile apărând doar prin funcţiile diferite utilizate).
4.5.1 Interogare fără parametrii a unei baze de date Exemplul următor prezintă una din cele mai simple modalităţi de interogare neparametrizate a unei tabele MySQL, cu o afişare formatată a rezultatelor sub o formă tabelară (vezi fig.1).
NUME | VIRSTA |
\n". " $nume | \n". " $virsta | \n". " \n"); } mysql_close($link); // închidere conexiune
?>
Fig.1 Interogare fără parametrii, cu afişare tabelată Analizând codul sursă, se poate observa o parte de cod HTML pentru realizarea capului de tabel necesar afişării, după care urmează scriptul PHP propriu-zis pentru interogarea bazei de date. La această parte a codului se vor face referiri în continuare. Apar câteva funcţii PHP noi, care permit operarea cu baze de date MySQL: - mysql_connect – permite conectarea la un server MySQL - mysql_select_db – permite selecţia bazei de date MySQL - myql_query – interogarea efectiva a tabelei MySQL (ca parametru putându-se practic folosi orice string reprezentând o comandă MySQL validă) - mysql_fetch_row – returnează un şir de valori (corespunzând unei linii din tabela interogată), iar când nu mai sunt alte linii – returnează FALSE - mysql_close – închide conexiunea cu serverul MySQL Construcţia de limbaj list( ) (care, ca şi array, nu este o funcţie PHP în sens real), permite asignarea unor valori unei liste de variabile (asemănătoare practic unui şir), printr-o singură operaţie. După cum am mai menţionat, un astfel de exemplu de interogare a unei tabele, fără nici un parametru, este un exemplu pur didactic. În realitate, interogările se realizează pe baza unor informaţii furnizate sub formă de parametrii.