mysql

Published on March 2017 | Categories: Documents | Downloads: 34 | Comments: 0 | Views: 537
of 65
Download PDF   Embed   Report

Comments

Content

 

1

 

 

 

2

 

Cuprins ul " Tutori al al-ului -ului MySQL" MySQL" 1. Introducere in aplicatii web si baze de date. date. . . . . . . . . . . . . . . . . . . . . . 3  



 



 



Functionarea aplicatiilor Web  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Ce este MySQL  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Baze de date relationale   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2. Instalarea serverului MySQL, a Apache si a PHP-ului. PHP-ului . . . . . . . . . . . . 7  



 



 



 



 



Instalare MySQL sub Windows  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Instalare Apache sub Windows  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Instalare PHP sub Windows  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Instalare MySQL sub Linux   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Instalare PHP/Apache sub Linux  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3. Utilizarea server-ului MySQL. MySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13  



 



 



 



 



 



 



 



 



 



 



Conectarea la server  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Privilegiile utilizatorilor  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Crearea bazelor de date si a tabelelor 15 Tipuri de campuri  . . . . . . . . . . . . . . . .  .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 16 Inserarea de inregistrari  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Actualizarea inregistrarilor  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 Extragerea inregistrarilor cu SELECT  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Join-uri intre tabele   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Stergerea inregistrarilor si a tabelelor  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Crearea indecsilor  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27 Modificarea tabelelor  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4. Limbajul folosit de MySQL. MySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29  



 



   

 

 



 



 



 



 



 



 



 



 



1

Siruri de caractere  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 Numere  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 NULL  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Numele folosite  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Variabile definite de utilizator  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 Comentarii  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 Cuvinte rezervate   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Functii pentru compararea de siruri  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32 Functii matematice  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Functii pentru siruri de caractere   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 34 Functii pentru date si timp   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Functii diverse   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Sintaxa completa a celor mai folosite comenzi  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

 

5. Administrarea server-ului MySQL. MySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41  



 



 



 



 



 



Administrarea utilizatorilor  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41 Controlul accesului  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Comezile GRANT si REVOKE   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Backup-ul bazelor de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Securitatea datelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45 Optimizarea MySQL  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46

6. Configurarea server-ului MySQL MySQL.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47  



 



 



 



 



 



 



Schimbarea setului de caractere   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47 Mesaje de eroare in romana  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Utilitarele MySQL  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 mysql  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 mysqladmin  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49 mysqldump  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 mysqlimport  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

7. Utilizarea MySQL cu PHP. PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52  



 



 



 



 



 



 



 



 



Crearea tabelelor   .  .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .53 . 52 Conectarea la bazacudePHP date Deschiderea bazei de date  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53 Executia comenzilor  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53 Adaugarea de inregistrari  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53 Formulare HTML  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53 Afisarea inregistrarilor  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54 Actualizarea inregistrarilor  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Functiile PHP pentru lucrul cu MySQL   . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

8. Quiz MySQL. MySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 9. Linkuri utile. utile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

 

2

 

Introducere in aplicatii Web si baze de date relationale

 



 



 



Functionarea aplicatiilor Web  Web  MySQL  Ce este MySQL  Baze de date relationale  relationale 

 Aplicatiile Web sunt prezentul si viitorul. Orice limbaj de programare pro gramare ai fi facut in trecut, sau daca stii numai HTML, CV-ul tau va fi vazut altfel cu experienta in dezvoltarea aplicatiilor Web. La nivel cel mai de jos World Wide Web-ul se bazeaza pe o arhitecura client/server. Asta insemna ca si severul central dar si aplicatia-client sunt responsabile de o parte din procesarea p rocesarea datelor. datelor. Clientul   Aplicatiile care se pot dezvolta folosind MySQL si PHP folosesc un singur client: browser-ul Web. Unele aplicatii ap licatii mai sofi sofisticate sticate  pot folosi si un applet Java (spre (spre exemplu un client de chat in timp real). Singurul client de care trebuie sa fii preocupat este  browser-ul care va interpreta aplicatiile aplicatiile tale. Server-ul   Aproape tot ce fac aplicatiile Web are loc pe un server. O aplicatie specifica, specifica, numita server Web, va fi respon responsabila sabila pentru comunicarea cu browser-ul. In cele din urma, mai este e ste nevoie de un limbaj care sa intermedieze cereri intre server-ul web si un server de baze de date, in cazul c azul nostru si sa realizeze sarci sarcini ni prin  program asupra informatiilor informatiilor ce vin si se duc spre sever-ul Web. Toate aceste trei elemente (server-ul Web, limbajul de de  programare si serverul serverul de baze de date) ttrebuie rebuie sa fie compatibile compatibile si cu sistemul de operar ope raree din d in calculatorul calculatorul pe care c are sunt folosite. Cele mai folosite sisteme de operare pe serverele Web sunt Windows NT/2000 si UNIX (peste 90% din numarul nu marul total de servere de pe Web). Ce ar trebui sa folosesti pentru aplicatii Web ?   Ei bine, foarte foarte pe scurt PHP si MySQL sunt produse p roduse gratuite, spre deosebire deosebire de celelate optiuni gratuitatea nu inseamna ca nu au aceleasi perf performante ormante ca sistemele de mii de dolari. Windows NT sau Windows 2000 95 /98/Me. Cu toate acestea, in lumea de este o buna bun a alegere, dar poti folosi MySQL si PHP si pe Windows 95/98/Me afara aproape toate aplicatiile PHP/MySQL PHP/MySQL ruleaza pe o versiune de UNIX: Linux, Irix, Solaris, HP-UX..

Server-ul Web 

Cele mai folosite servere Web sunt Apache si Microsoft's IIS. Apache este si el gratuit g ratuit si in sistem Open Source ca si PHP, MySQL si Linux. El functioneaza bine pe un sistem UNIX dar si pe un sistem Windows (dar nu pe p e un server foarte incarcat). Cea mai buna alegere este realiza realizarea rea si testarea aplicatiei pe Windows cu Apache, PHP si MySQL si apoi transferul aplicatiei pe un server Linux fara fara schimbari in script-uri.  Middleware 

 

3

 

PHP face parte din clasa limbajelor middleware  (ASP, Perl, ColdFusion etc.). Aceste limbaje limb aje lucreaza cu serverul Web pentru a interpreta cererile facute facute din d in dinspre World Wide Web, proceseaz aceste cereri, interactioneaza interactionea za cu alte programe pe server pentru a indeplini cererile si va indica, apoi, server-ului exact ceea ce trebuie servit  browser-ului  browser-ului clientului. Limbajul middleware va fi folosit pentru marea majoritate majoritate din munca ta. O tranzactie normala cu baza de date Web se constituie din urmatorii pasi (numerotati in figura):

1.  Browser-ul unui utilizator face o cerere HTTP pentru o anumita pagina (spre exemplu se cauta o anumita carte un site prin intermediul fisierului results.php). 2.  Server-ul Web primeste cererea pentru results.php, cauta fisierul si il paseaza motorului PHP  pentru a fi procesat. 3.  Motorul PHP incepe procesarea si gaseste o comanda de conectare la o baza b aza de date si o interogare dupa un anumit criteriu. PHP deschide o conexiune cu server-ul MySQL si ii trimite interogarea. 4.  Server-ul MySQL primeste interogarea si o proceseaza si trimite rezultatul rezultatul (o lista li sta de carti, in cazul nostru) PHP-ului. 5.  PHP-ul termina de rulat script-ul (de obicei are loc o formatar formataree a rezultatelor interogarii in HTML) returneaza fisierul rezultat server-ului Web de unde 6.  si Server-ul Web trimiteHTML HTML-ul inapoi catre browser und e utilizatorul poate vedea lista cartilor  pe care le-a cerut. cerut.

De ce sa folosesti PHP si MySQL ?    



 



 



 



 



 



Daca ai un calculator, Linux, Apache Ap ache si PHP sunt absolut gratuite. La fel si MySQL cu unele limitari. PHP si MySQL pot fi folosite pe majoritatea platformelor. platformelor. Desi MySQL nu dispune d ispune de toate caracteristicile suportate suportate de concurenta, este la fel de rap rapid id si de  puternic. Conectivitatea, viteza si securitatea face server-ul MySQL extrem de potrivit po trivit pentru accesarea  bazelor de date pe Internet. Internet. PHP a reusit sa ajunga ajung a la mix-ul perfect de putere, rapiditate, structura si usurinta in folosire. Si PHP si MySQL sunt imbunatatite in mod constant

Ce este MySQL ?   MySQL este un server SQL pentru pen tru baze de date foarte robust, rapid, mu multi-utilizat lti-utilizator, or, multi-thread.

 MySQL este un sistem de gestiune a bazelor de date .  O baza de date  este o colectie strucurata de date. Ca sa adaugi, sa accersezi si sa procesezi informatiile informatiile din baza de date ai nevoie de un sistem de gestiune a bazelor de date ca, de exemplu MySQL.  MySQL este un sistem de gestiune a bazelor de date relationale.  O baza de date relationala memoreaza date in tabele separate in loc de a stoca toate informatiile in formatiile intr-o intr-o singura structura adaugand astfel viteza si flexibilitate. Tabelele sunt legate prin relatii permitandu-se

 

4

 

afisarea datelor combinate afisarea comb inate la cerere. Sistemele de gestiune a bazelor de date relationale (SGBDR) ofera o cale excelenta pentru a stoca si a accesa informatii complexe. Cele mai populare popu lare SGBDR-uri sunt Oracle, In Infomix, fomix, Microsoft's SQL Server, IBM's db2 si SGBD-uri SGBD-u ri "open-souce": MySQL, Postgres si Interbase.

Baze de date relationale  Tabele  Tabela are un nume, un numar de coloane co loane corespunzatoare corespunzatoare tipurilor de informatii si linii corespunzatoare inregistrarilor inregistrari lor din d in tabele. De exemplu: CLI ENTI ID Nume Adr es esa a Or as 1 J ul i e Smi t h 25 Oak St r eet eet Lon Londo don n 2 Al an Wong 47 Hai nes Avenue Avenue New Yor k 3 Mi chel chel l e Ar t hur 357 Nor t h Road oad Chi cago cago Coloanele au un nume unic si contin con tin informatii diferite. Fiecare are are un tip de d e date asociat (de exemplu, integer pentru 'ID' si string pentru 'Nume', 'Adresa' si 'Oras'). Coloanele mai sunt numite campuri sau atribute. Liniile reprezinta cate un client difer di ferit it in tabela noastra. Mai sun t numite inregistrari sau tupluri. Valorile specificate la intersectia coloanelor cu liniile trebuie sa aiba ai ba tipul de date corespunzator. Cheile reprezinta o cale de a identifica fiecare inregistrare inregistrare in parte. Baze de d date ate care au mai multe tabele folosesc o cheie primara sau o cheie externa(Primary Key sau Foreign Key ) ca referinta de la o tabela t abela la alta.

Daca adaugam o noua nou a tabela cu comezile facute de clienti, putem face legatura intre cele doua tabele pe  baza campului comun 'ID' 'ID' care este PK in tabela tabela 'clienti' si FK in in 'comenzi': COMENZI ENZI ComI D I D Cant ant i t at e 1 3 30. 30. 66 2 1 23. 23. 00 3 2 5. 00 4 4 40. 40. 87

Relatii  Exista 3 tipuri de relatii intr-o BD relationala:  



 



 



Relatie una-la-una - Exista cate una/unul din fiecare in relatie (dcaca am fi pus adresele intr-o tabela separata intre CLIENTI si ADRESE ar fi existat un corespondent co respondent pentru fiecare inregistrare). Relatie una-la-mai-multe una-la-mai-multe - O linie dintr-o tabela e legata la mai multe linii din alta tabela (un client ar putea face mai multe comenzi). Relatie mai-multe-la-mai-multe mai-multe-la-mai-multe - Mai multe linii din tabela 1 sunt legate la mai multe din tabela 2 (de exemplu, in cazul c azul a doua tabele, CARTI si AUT AUTORI, ORI, o carte ar putea fi scrisa de doi coautori, fiecare dintre ei mai avand si alte carit scrise).

Sfaturi de proiectare pentru baze de date  

 

5

 

1.  Gandeste-te la obiectele reale pe care le modelezi. 2.  Evita sa stochezi informatii informatiile le care sunt sun t redundante. 3.  Foloseste valori "atomice" in coloanele tabelei (adica nu memora valori multiple in cadrul aceluiasi camp al tabelei). 4.  Alege chei foarte sensibile, care c are pot identifica unic o inregistrare. inregistrare. 5.  Gandeste-te la ce vrei sa ceri prin interogari din b aza de date si include informatii aditionale. 6.  Evita sa folosesti prea multe atribute nule (coloane din inregistrari inregistrari fara continut).

 

6

 

Instalare MySQL, PHP PHP si Ap ache

 



 



 



 



 



Instalare MySQL sub Windows  Windows  Windows  Instalare Apache sub Windows  Instalare PHP sub Windows  Windows  Instalare MySQL sub Linux  Linux  PHP/Apache sub Linux Instalare PHP/Apache Linux  

MySQL este disponibil pentru Windows, Linux si alte variante de Unix. Se poate copia de la site-ul MySQL: www.mysql.com www.mysql.com.. Versiunea Windows are un nume asemanator cu mysql-sharewaremysq l-shareware-x_xx_xxx_xx_xxwin.zip (unde 'x' este versiunea. Download-ul RPM este cel recomandat pentru versiunea Linux. Pachetul MySQL este compus din:  



 



 



Serverul MySQL : Este inima MySQL-ului (programul (pro gramul care se ocupa cu bazele tale de date). Programe-client MySQL: Cel mai folosit este mysql.exe care ofera o interfata prin care se pot po t inteorga bazele da date pentru a afla informatiile dorite din d in baza de dateMySQL comes with many client programs. The one with which we'll be dealing a lo lott is called mysql (note: smallcaps). This  provides an interface through through which you can issue SQL statements and have the results display displayed. ed. Libraria-client MySQL: Ajuta la scrierea programelor client in C.

Diferenta dintre MySQL si mysql   MySQL se refera la toata pachetul de distributie MySQL, in timp ce mysql  este  este doar un program-clie p rogram-client. nt.

Instalare pe Windows W indows Trebuie sa ai instalat protocolul TCP/IP (e pe CD-ul cu Windows) si libraria Winsock 2 (Windows 95 nu-l are!!) ca sa mearga MySQL.  

Pentru a instala pachetul p achetul copiat, dezarhiveaza-l dezarhiveaza-l intr-un director temporar si ruleaza Setup.exe . Implicit MySQL-Windows se va instala in `C:\mysql'. Daca vrei sa-l instalezi in stalezi in alt director, instaleaza-l instaleaza-l mai intai in `C:\mysql' si apoi apo i muta-l unde vrei, trebuind apoi apo i sa specifici programului cand il startezi noua cale cu comanda: C: \ > D: \ pr ogr ogr ams\ mysql ysql \ bi n\ mysql ysql d - - basedi asedi r D: \ pr ogr ogr ams\ mysq ysqll   Copiaza fisierul ‘C:\mysql\my-xxxxx.cnf’ in ‘C:\my.cnf’ si modifica mo difica optiunile implicite ale serverului dupa preferinte (vezi sectiunea de "Adminis "Administrare trare MySQL"). MySQL"). Instalarea e acum completa. Pentru a testa daca MySQL merge incepe o sesiune MS-DOS M S-DOS (in casuta Start menu-Run tasteaza c ommand ) in directorul d irectorul c:\mysql\bin c:\mysql\bin si scrie urmatoarea comanda: mysql ysql d- shar shar ewar e - - st andal ndal one  Se va porni serverul serverul MySQL. Tasteaza T asteaza mys ql  si promptul se va schimba in mysql. Tasteaza T asteaza show dat dat abases abases  si ar trebui sa obtii urmatorul rezultat:

 

7

 

+- - - - - - - - - - - - - - - - + | Dat abase abase | +- - - - - - - - - - - - - - - - + | mysql ysql | | te es st | +- - - - - - - - - - - - - - - - + 2 r ows i n set ( 0. 00 sec)

Acum vei adauga o p arola pentru utilizatorul root in locul utilizatorului anonim care poate fi folosit de oricine: C: \ > C: \ mysql ysql \ bi n\ mysql ysql mysql ysql < mysql > DELETE ELETE FRO FROM user WHERE ERE Host Host =' l ocal host ' AND User =' ' ; mys ysql ql > QUI T C: \ > C: \ mysql ysql \ bi n\ mysql ysql admi n rel oad oad C: \ > C: \ mysql \ bi n\ mysql adm admi n - u r oot oot pass pass wor d you your _passwor _passwor d

Acum, pentru a opri op ri serverul vei folosi comanda: C: \ > mysql adm admi n - - us er =r oot - - pass pass wor d=your your _ passw ass wor d shut shut do dow wn  Tasteaza qui t  la promptul mysql.

Windows 95/98  Versiunea de MySQL pentru Windows 95/98 are doua versiuni de servere: mysqld si mysqld-opt, optimizat pentru procesoare Pentium. Poti starta serverul cu comanda: C: \ m ysql ysqopri l \ bicu n\ comanda: mysql ysql d- opt   si-l poti C: \ mysql ysql \ bi n\ mysql ysql adm admi n - u r oot oot shu shutt down 

Windows NT/Win2000  Serviciul e instalat cu numele MySQL si trebuie pornit po rnit din Services Control Manager (SCM) Utility din Control Panel. Poti configura serverul MySQL sa relueze ca serviciu prin: C: \ mys ysq ql \ bi n\ mysq sqll d- nt - i nst al l   Acum poti porni/opri po rni/opri serviciu cu: NET START mys ysql ql M NET ST STO OP mys ql   Daca nu vrei sa rulezi MySQL M ySQL ca serviciu, il poti porni cu comanda: C: \ > C: \ mysq sqll \ bi n\ mysql ysql d- nt - - st andal on one e  In continuare, vei instala serverul APACHE.

Este recomandat sa download-ezi versiunea de Apache pentru Windows cu extensia '.exe' de la Apache.org daca Apache.org daca esti incepator si nu vrei sa compilezi codul sursa. In continuare, tot ce trebuie sa faci e sa dai click pe fisierul executabil executabil si Apache se va instala pe disc. d isc. Poti rula Apache de la o fereastra-consola fereastra-consola sau ca un serviciu Windows. Pentru Pen tru a rula Apache de la consola alege optiunea 'Start Apache as console App' din grupul Apache din meniul Start. Se va deschide o fereastra ferea stra de consola con sola care va ramane activa pana vei opri serverul Apache alegand 'Shutdown Apache Ap ache as Console App' sau apasand CTRL+C in ferestra de consola sau d deschiza eschizand nd alta fereasta MS-DOS si tiparind: C: \ Pr ogr ogr am Fi l es\ Apache ache Gr Gr oup\ oup\ Apache pache> > apach apache e - k shut shut do dow wn

Apache va "asculta" protul 80 dup a ce va fi pornit. po rnit. Pentru a te conecta la server, deschide browser-ul de Internet si scrie una din d in adresele:  

8

 

ht t p: / / l oc al hos t /   ht t p: / / 127. 0. 0. 1/  

Se va deschide o pagina p agina HTML de bun-venit bun -venit si informatii despre Apache. Daca nu se intampla nimic si apare o eroare deschide fisierul error.log din direcotrul logs al Apache si s i vei alfa ce a mers rau. Daca ai schimbat portul (altul decat 80) adauga :numar_port dupa adresa de URL La drum cu PHP... PHP.net si  si dezarhiveaza pachetul in directorul 'C:\php4\'. Din acest director d irector Copiaza distributia PHP de la PHP.net

copiaza fisierele and PHP4TS.DLL in 'c:\windows\system'. Apoi, redenumeste php.inidist in php.ini andMSVCRT.DLL muta-l in directorul in care e instalat Windows-ul ('c:\windows\'). Deschide acest fisier cu Notepad si caua c aua sirul de caractere "extensio_dir". "extensio_dir". Schimba valoarea implicita cu 'C:\php4'. Daca ai nevoie de extensii speciale speciale (de exemplu, e xemplu, pentru grafice) sterge comentariile (caracterul ;) din fatza randului din php.ini de genul:

; ex extt ensi ensi ons=php_* *. dl l  

Acum ve trebui sa faci legatura intre PHP, Apache si MySQL. Du -te in directorul in care ai instalat Apache, cauta fisierul 'httpd.conf' din direct di rectorul orul '\conf' si adauga aceste linii: Scri pt Al i as / php4/ "c: / php4/ " AddType ype appl i cat i on/ on/ x- ht t pd- php4 . php AddTyp Type appl appl i cat i on/ x- ht t pd- php4 . php3 AddTyp Type appl appl i cat i on/ x- ht t pd- php4 . php4 AddTyp Type appl appl i cat i on/ x- ht t pd- php4 . pht ml Act i on ap appl i cat cat i on/ on/ x- ht t pd- php4 "/ php4/ php. ex exe e"

Si gata. Porneste server-ul Apache. Creaza un fisier in Notepad cu continutul: con tinutul: <? php phpi nf o( ) ?>

Salveaza-l ca test.php test.php in "\htdocs" din directorul Apache (locul in care va trebui sa s a pui toate scripturile PHP ca sa mearga). Apoi deschide-l in browser: b rowser: ht t p: / / l ocal hos t / t es e s t . php 

 

9

 

Se va obtine un fisier HTML cu informatii despre configirarea PHP. PHP poate fi folosit si fara server-ul server-ul Apache prin rularea din linia de comanda (Command Prompt) cu  parametru un fisier fisier *.php: C: \ php4 hp4\ php t ext ext . php

Pentru a folosi PHP cu Apache, se vor copia toate fisierele *.php in directorul htdocs din folder-ul  /Apache Group/Apache.  

Instalare pe Linux Linux Varianta 1 - Distributia RPM MySQL   Este metoda recomandata de a instala MySQL pe Linux. L inux. Fisierele RPM care te intereseaza su sunt: nt:

MySQL-VERSION.i386.rpm - Server-ul MySQL. MySQL-client-VERSION.i386.rpm MySQL-client-VERSI ON.i386.rpm - Programele-client MySQL. MySQL-VERSION.src.rpm MySQL-VERSION.src. rpm - Codul Cod ul sursa al tutoror RPM-urilor. Intra ca superuser (Tasteaza "su" la prompt si da d a parola de root). Intra in di directorul rectorul cu RPM-urile copiate si tasteaza: sh she el l > r pm - i vh " mysql ysql _f i l e_nam _name. r pm"   Acum vom stabili o parola pentru utilizatorul root: shell l > mysql adm she admi n - u r oot oot passwor asswor d par ol a_t a  Pentru a starta clinetul mysql: sh she el l > mysq sqll - u r oot - p  Vei fi intrebat parola. Tasteaz-o (e cea pe care ai pus-o in loc de 'parola_ta' in comanda de d e mai sus). Daca sql st ar t  si acum porneste nu esti intrebat in trebat de parola intra in '/etc/rc.d/init.d/' si tasteaza . / mysql po rneste serverul mysql ca mai sus. Odata ce clientul mysql a pornit po rnit vei primi promptul mysql>. Tasteaza: shel l > s how how dat dat abases; abases;   Rezulatul va fi unul similar cu: +- - - - - - - - - - - - - - - - + | Dat abase abase | +- - - - - - - - - - - - - - - - + | mysql ysql | | te es st | +- - - - - - - - - - - - - - - - + 2 r ows i n set ( 0. 00 sec)

Linux Varianta 2 - distributia sursa (Doar pentru avansati !!!)

Copiaza fisierul .tar.gz de la http://www.mysql.com/downloads/. http://www.mysql.com/downloads/. Dezarhiveaza-l cu: gunzi p mysq sqll - 3. 23. 22. t ar. gz t ar xf mysq sqll - 3. 23. 22. t ar   Se va crea un director d irector cu numele distributiei. Intra in acest director cu 'cd'. Comenzile pe ccare are le vei folosi  pentru a instala distributia distributia sursa sunt: shel l shell l she sh she el l shel l she shel l

 

> > > > >

gr oup oupadd add mysql user user add add - g mysql mysql gunzi p < mysq sqll - VERSI ON. t ar. gz | t ar - xvf xvf cd mysql - VERSI ERSI ON . / con conf i gur e - - pr ef i x=/ usr/ l ocal cal / mysql sql

10

 

shel l sh she el l she shel l sh she el l sh she el l sh she el l sh she el l sh she el l

> > > > > > > >

make make i nst al l scri pt s/ mysql sql _i nst al l _d _db b cho chown - R r oot / usr / l ocal cal / mysq sqll ch cho own - R mysql ysql / usr / l oca ocal / mysql ysql / var var chg chgr p - R mysq sqll / usr / l oc oca al / mysql ysql cp su sup ppor t - f i l es/ my- med edii um. cnf cnf / et c/ my. cn cnff / usr / l oc oca al / mysql ysql / bi n/ saf e_mysql ysql d - - user=m ser=mysq ysqll &

Primul pas acum e sa rulezi confiruar con firuarea ea serverului cu comanda: . / c onf i gur e - - pr ef e f i x=/ pat h/ h / t o / i ns t al al l at i on 

Apoi: make make ake i nst al l  

Configurare post-instalare  

Se vor instala tabelele de grant (cu dreptur d repturile ile de utilizatori) si se porneste server-ul cu comenzile: - pt. distributia d istributia sursa: she shel l > . / scr scr i pt s/ mysql sql _ i nsta l l _ db db  sh she el l > cd mysq sqll _i nst al l at i on_d _dii r ect or y  sh she el l > . / bi n/ saf e_mysql ysql d - - user=m ser=mysql ysql &  - pt. distrubita binara(nu cea cu pachete p achete RPM sau pkg: sh she el l > cd mysq sqll _i nst al l at i on_d _dii r ect or y  she shel l > . / bi n/ mysql sql _i nst al l _d _db b  sh she el l > . / bi n/ saf e_mysql ysql d - - user=m ser=mysql ysql &  Testeaza acum daca serverul e pornit porni t si functioneaza: shell l > BI NDI R/ mysql adm she admi n vers i on  shell l > BI NDI R/ mysql she ysql adm admi n var var i abl abl es  PHP si Apache pe Linux 

Pe UNIX PHP e instalat ca o extensie e xtensie a Apache. Deci instalarea lor se va face simultan. Incepe prin dezarhivarea pachetelor pachetelor PHP si s i Apache. gunzi p apa apache che 1. 1. 3. x. t ar . gz t ar xf apa apache che1. 3. x. t ar gunzi p php- 4. 02. t ar . gz t ar xf php- 4. 02 

Foloseste 'cd' pentru a ajunge in directorul in care ai dezarhivat Apache si ruleaza 'configure' pentru a specifica calea in care se va instala Apache: . / con conf i gur e - - pr ef i x=/ pat h/ t o/ apache che  Acum, revino la PHP si dupa du pa ce-ai rulat 'configure' da-i comenzile: make make ake i nst al l  

In directorul Apache ruleaza din nou 'configure': 'con figure': . / con conf i gur e - - pr ef i x=/ pat h/ t o/ apache che - - act i vat vat e- modu odul e=sr c/ modul es/ php4/ l i bphp4. a 

Apoi: make make ake i nst al l  

Apache e instalat acum in director di rectorul ul specificat. Ultimii pasi: in directorul PHP copiaza fisierul php-ini.dist in /usr/local/lib/php.ini si deschide fisierul 'httpd.conf' din '/conf' al Apache Apach e si sterge comentariul (semnul ;) din fat fataa liniei: liniei : AddType ype ap appl i ca catt i on/ x- ht t pd- php . php  Starteaza Apache din directorul '/bin': . / apache chectl st ar t  

 

11

 

Felicitari! Ai reusit sa instalezi MySQL, PHP si Apache. Daca, totusi, ceva a mers rau consulta sectiunile de F.A.Q. din documentatiile aferente .

 

12

 

Utilizarea server-ului MySQL

 



 



 



 



 



 



 



 



 



 



 



Conectarea la server   Privilegiile utilizatorilor   Crearea bazelor de date si a tabelelor   Tipuri de campuri campuri   Inserarea de inregistrari inregistrari   Actualizarea inregistrarilor   Extragerea inregistrarilor SELECT   inregistrarilor cu SELECT Join-uri intre tabele tabele   Stergerea inregistrarilor inregistrarilor si a tabelelor   Crearea indecsilor   Modificarea tabelelor  

Conectarea si deconectarea de la server Primul lucru pe care trebuie sa-l observi este ca fiecare comanda data server-ului se termina cu ';'. Fara aceste terminator nu se va intampla nimic. Asta inseamna ca poti avea linii lini i noi in mijlocul unei comenzi co menzi sau poti da mai multe mu lte comenzi pe aceeasi linie: 1. 2. -> -> -> 3.

mys ysql ql > SELECT SELECT VER VERSI SI ON( ) ; SELECT SELECT NO NOW( ) ; mys ysql ql > SELECT SELECT USER SER( ) , CUR URREN RENT_ T_ DATE; mysql ysql > grant grant sel ect ->

Acest ultim prompt insemna ca MySQL mai asteapta sa fie introdus ceva c eva (asteapta ';'). Alta caracteristica de notat este ca declaratiile declaratiile SQL (Structured Query Language - un limbaj de interogare a bazelor de date) nu sunt case sensitive   Daca vrei sa nu mai executi o comanda pe care c are ai scris-o scris-o partial, o poti po ti anula cu '\c': mys ysql ql > SELECT - > USER SER( ) -> \c mys ysql ql >

Ce insemna prompt-urile mys ysql ql > Gat a pent r u o noua comanda. anda. - > Ast eap aptt a ur ur mat oar ea l i ni e di di nt r - o com comand anda. mul t i - l i ni e. ' > Ast ept a co con nt i nuar ea unui si r de car car act er e car car e i ncepe cepe cu ' . "> Ast ept a co cont i nuar ea un unui si r de car car act er e car car e i nce cep pe cu ".

 

13

 

Este important de stiut ce inseamna prompt-urile '> and "> , deoarece daca din greseala introduci un sir neterminat, orice altceva ce vei tasta (chiar si qui t ) nu va fi luat in seama. Pentru a te conecta la server, de obicei esti nevoit ne voit sa dai numele de utilizator si parola: sh she el l > mysql - h host - u user user - p Ent er passwor d: *** *** **

Comanda mys ql  invoca programul-monitor prog ramul-monitor MySQL, un program client care te conecteaza la server.- h  specifica numele gazdei (host) la care te vei conecta (doar daca te conectezi pe alta statie de lucru). - u  specifica numele tau de utilizator ('root' daca ai MySQL pe propria statie, sau alt nume dat de administrator..). - p spune server-ului ca te vei conecta folosind o parola. sh she el l > mysql ysql - h host - u user user - p Ent er passwor d: *** *** ** Wel come t o t he MySQL moni t or . Commands ands end wi t h ; or \ g.  Yourr MySQL connect  You connect i on i d i s 459 459 t o ser ver ver si on on:: 3. 22. 22. 20a20a- l og  Type  Typ e ' hel p' f or hel p. mys ysql ql >

In functie de cum ai instalat i nstalat si configurat MySQL, ai putea fi lasat sa te conectezi la server far faraa nume nu me de utilizator sau parola: shel l > mysql   Dupa ce te-ai conectat cu succes la server te poti deconecta cu comanda QUI T sau apasand CTRL+D  mys ysql ql > QUI T 

 

14

 

Crearea utilizatorilor Sistemul de privilegii al MySQL Una dinte cele mai bune caracteristici caracteristici ale MySQL este ca suporta un sistem s istem de privilegii (dreptul de a face o anumita actiune asupra unui obiect) ob iect) pentru utilizatori foar foarte te sofisticat. Cand vei crea un u utilizator, tilizator, ii vei da acces la un set de d e privilegii pentru a specifica ce anume poate sa faca si ce nu poate sa faca un utilizator. Un utilizator ar trebui sa aiba cel mai mic nivel n ivel de privilegii necesar pentru a-si indeplini sarcina. REVOKE  Crearea drepturilor pentru utilizatori se face cu comanda GRANT, GRANT, iar retragerea drepturilor cu REVOKE  Pentru a crea un administrator: mysql ysql > grant grant al l - > on * - > t o f r ed i dent ent i f i ed by ‘ mnb123’ - > wi t h gr ant ant opt i on;

Pentru a-i retrag drepturile drep turile acestui utilizator: mysql > r evoke evoke al l - > on * - > f r om f r ed; ed;

Exemplu de acordare drepturi pentru un utilizator: mysq sqll > gr ant se sell ect, i nser ser t , updat e, del et e, i ndex, al t er , creat creat e, dr op - > on car car t i . * - > t o al i na;

Crearea tabelelor Vom crea o baza de date angajati pe care o vom folosi si in alte ocazii: Pe Windws: cr eat e da dat ab aba ase an angaj at i ;   Sa vedem cate baze de date sunt in sistem: show dat dat abases abases ;   +- - - - - - - - - - - - - - - - + | Dat abase abase | +- - - - - - - - - - - - - - - - + | angaj at i | | mysql ysql | | te es st | +- - - - - - - - - - - - - - - - + 3 r ows i n set ( 0. 00 sec)

Sub Linux: Trebuie sa devii superuser si sa tastezi parola de root: roo t: cr eat e dat ab aba ase ang angaj at i ; GRANT ALL ALL ON ON anga angajj at i . * TO mar i us@l ocal host host I DENTI FI ED BY "eagl "eagl e"

Ultima conanda acorda toate drepturile d repturile asupra tabelei angajati utilizatorului Marius. Iesi cu QUIT si intra din d in nou cu nume de utilizator de aceasta data:

 

15

 

mysql - u user user _ nam name - p 

Ar trebui sa apara ca in continuare: [ mari us@l ocal ho host st mar i us] $ mysql ysql - u mar i us - p Ent er passw passwor or d: Wel come t o t he MySQL moni t or . Commands ands end end wi t h ; or \ g.  Yourr MySQL connect  You connect i on i d i s X t o ser ver ver s i on: 3. XX. XX

Deschiderea unei baze de date se poate face cu una din d in metodele:  



 



 



 



 



Specificand nume bazei de date la inceputul sesiunii: mysql ang angaj at i ( sub Wi nd ndow ows) mysql ysql angaj at i - u user1 - p ( su sub b Li nux)

Cu comanda USE: mysql>USE mysql> USE angajati; Specificand direct numele bazei de date la prompt:

mysql ysql >\ u ang angaj at i ;  

Daca nu specificam o baza de date cand c and lucram cu MySQL, se va genera o eroare! Pentru baza noastra de date vom avea o tabela cu detalii despre angajati si o tabela cu date d ate personale. Dupa ce ai selectat baza de date angajati dai urmatoarea comanda: mysql > CREATE EATE TAB TABLE angaj angaj at i _ dat dat a ->( - > emp_i d i nt unsi gned not nul nul l aut aut o_i ncr ement ent pr i mar y ke key, y, - > f _nam _name var var ch char ar ( 20) , - > l _nam _name var var ch char ar ( 20) , - > t i t l e var cha char ( 30) , - > ag age e i nt , - > yo yos s i nt , - > sal sal ar y i nt , - > per ks i nt , - > emai l var var ch char ar ( 60) -> ); Query OK OK, 0 r ows af f ect ed ( 0. 01 sec) sec) CREATE TABLE e urmata de numele tabelei si poia de numele si tipul de date al campurilor din baza de

date. 'varchar' inseamna caractere caractere de lungime variabile. Numarul din paranteza este lungimea maxima de caractere admise.'not admise.'not null' specifica ca nu avem voie sa avem valori nule pe acel camp in inregistrari. 'int' inseamna numar inreg, iar 'unsigned' numar nu mar pozitiv. 'auto_increment' specifica pentru MySQL sa atribuie o valoare automat la o noua adaugare de inregistrare cu o v valoare aloare mai mare cu 1 decat cea mai mare valoare din acel camp (necesar pentru un camp ID). 'primary key' speciofica ca acel camp va fi indexat (fiecare valoare va fi unicat).

Tipuri de campuri Cele trei tipuri de baza b aza pentru campuri sunt: numeric, data si timp si ssir ir de caractere(string). caractere(string). Cand alegi un anumit tip sau subtip, poti p oti specifica si lungimea maxima admisa (M, maxim 255). Tipurile de date numerice   Pentru numerele in virgula flotanta (float), poti specifica cu D numarul nu marul de cifre dupa puctul zecimal.

 

16

 

Pentru numerele intregi poti sa specifici daca vor fi doar pozitive cu 'unsigned'. Tipuri de date intregi   Ti p I nt er val  TI NYI NT[ ( M) ] - 127. 127. . 128 128 or 0. . 255 SMALLI NT[ ( M) ] - 32768 768. . 3276 2767 or 0. . 655 65535 MEDI UMI NT[ ( M) ] - 8388 838860 608. 8. . I NT[ ( M) ] I NTEG TEGER[ ( M) ] BI GI NT[ ( M) ]

8388607 or 0. . 1677 167772 7215 15 - 231. . 231- 1 or 0. 0. . 232- 1

( Byt es) 1

Descr esc r i er e Foar t e mi c i nt eger eger s

2

I nt r egi mi ci

3

Mar i me medi e

4

I nt r egi nor mal i

- 263. . 263- 1 8 or 0. 0. . 264- 1

Si noni oni m cu I NT I nt r egi mar i

Tipuri de date flotante    Ti p I nt er val ( Byt es) FLOAT( pr eci si on) on) depi nde dub ubll a FLOA FLO AT[ ( M, D) ] ±1. 17549 549435 4351E 1E-- 38 4 ±3. 402823466E+38 DOUBLE[ ( M, D) ] ±1. 7976 797693 9313 1348 4862 6231 3157 57E E 8 +308 ±2. 2250738585072014 2250738585072014E E - 308 308 DOUBLE UBLE PRECI SI ON[ ( M, D) ] l a f el REAL[ ( M, D) ] l a f el DECI MAL[ ( M[ , D] ) ]

var var i aza

NUMERI C[ ( M, D) ]

l a f el

Descr esc r i er e Preci zi e si mpl a sau pr eci zi e Pr eci zi e si mpl a Pr eci zi e dubl dubl a

M+2

Fl oat oat st oc ocat at ca ch char ar .

Si noni m cu DECI MAL.

Tipurile pentru data si timp    Ti p I nt er val Descr esc r i er e DATE 1000 1000-- 0101- 01 O dat a( YYYYYYYY- MM- DD) . 9999 9999-- 1212- 31  TI ME - 838: 838: 59: 59: 59 Un t i me( HH: MM: SS) SS) . 838: 38 59 1000 10 00-:- 59: 0101:- 59 01 00: 00: 00 9999 9999-- 1212- 31 23: 59: 59  TI MESTA ESTAM MP 1970 1970-- 0101- 01 [ ( M) ] 00: 00: 00  YEAR  YEA R[ ( 2| 4) ] 70– 70– 69 f or mat . 1901–2155 DATETI TETI ME

Dat a si t i mp( YYYYYYYY- MM- DDHH: MM: SS) SS) .

Un t i mest amp, f ol osi t i n t r anzact i i . Un an i n f or mat cu 2 s au 4 ci f r e You can speci f y 2 or 4 di gi t

TIMESTAMP-uri   Type  Typ e Speci Speci f i ed Di spl ay  TI MESTA ESTAM MP YYYYM YYYYMMDDHHMMSS  TI MESTA ESTAM MP( 14) 14) YYYYM YYYYMMDDHHMMSS  TI MESTA ESTAM MP( 12) 12) YYMMDDHHMMSS  TI MESTA ESTAM MP( 10) 10) YYMMDDHHMM

 

17

 

 TI MESTA ESTAM MP( 8)  TI MESTA ESTAM MP( 6)  TI MESTA ESTAM MP( 4)  TI MESTA ESTAM MP( 2)

YYYYM YYYYMMDD YYMMDD YYMM YY

Tipuri pentru siruri de caractere  Se impart in trei grupuri:s grupu ri:siruri iruri normale: CHAR (fixed length leng th character) si VARCHAR (variable length character),, siruri TEXT si character) s i BLOB pentru siruri lungi/date binare b inare si sirurile SET si ENUM (valori  predefinte). Tipuri pentru siruri de caractere regulare    Ti p [ NATI ONAL] CHAR( M) [ BI NARY RY]] [ NATI ONAL] VARCH VAR CHAR( AR( M) [ BI NARY] Tipuri TEXT si BLOB 

I nt er val 1 t o 255 255 1 t o 255 255

L ungi me max axii ma ( Car act er e) 2828- 1 ( 255)  TI NYTEX YTEXT 2828- 1 BLOB BLO B 216- 1 ( 65. 535)  TEXT  TEX T 216216- 1 MEDI EDI UMBLOB 224- 1 ( 16. 777. 215) MEDI EDI UMTEXT 224- 1 LONGBLOB BLOB 232- 1 ( 4. 294. 967. 295) LONGTEXT 232- 1 Tipuri SET si ENUM   Ti p Nr . val or i i n set Descr esc r i er e ENUM( ‘ val val oar e1’ e1’ , 65535 O si ngu ngur a val val oar oar e di n l i st a sau NULL ‘ val oar e e2 2’ , . . . ) SET( ‘ val oar e1’ , 64 Un set set di nt re val or i l e di n l i sta. ‘ val oar e e2 2’ , . . . )  Ti p  TI NYBLO YBLOB B

Exemplu: cr t te aut t ab le n _tcraem bee ln at1 p ( r i mar y key i deian au t o_i key,, answer enu enum ( ‘ da’ , ‘ nu’ ) def aul t ‘ nu’ );

Tipul de camp NULL   Pentru a face o valoare dintr-un camp NULL, nu include acel camp in d declaratia eclaratia INSERT. INSERT. Campurile C ampurile au ca valoare implicita NULL daca nu specifici 'NOT NULL'. Pentru P entru compararea valorilor cu NULL se folosesc 'IS NULL' sau 'IS NOT NULL'. Descrierea tablelelor Permite afisarea detaliilor despre campurile tabelei. mysql > DESC ESCRI BE anga angajj at i _dat a;

 

18

 

+- - - - - - - - +- - - - - - - - - - - - - - - - - - +- - - - - - +- - - - - ++- - - - - - - - - +- - - - - - + | Fi el d | Type | Nul l | Key | Def aul t | Ext r a| +- - - - - - - - +- - - - - - - - - - - - - - - - - - ++- - - - - - +- - - - - +- - - - - - - - - +- - - - - - | | emp_i d | i nt ( 10) unsi gned | | PRI PRI | 0 | | | | aut o_ i ncr em ement | | | | | | f _nam _name | var ch char( ar( 20) | YES | | NULL | | | l _n _na ame | var char( char( 20) | YES | | NULL | | | t i t l e | var cha char( 30) | YES | | NULL | | | age | i nt ( 11) | YES | | NULL | | | yos | i nt ( 11) | YES | | NULL | | | sal sal ary | i nt ( 11) | YES | | NULL | | | per ks | i nt ( 11) | YES | | NULL | | | emai l | var char( char( 60) | YES | | NULL | | +- - - - - - - - +- - - - - - - - - - - - - - - - - - +- - - - - - +- - - - - ++- - - - - - - - - +- - - - - - + 9 r ows i n set ( 0. 00 sec)

Inserarea inregistrarilor in tabele Comanda SQL INSERT inseareaza inseareaza informatii in tabele. I NSERT i nt o nume_t abel abel a ( camp1, p1, camp2. . . . ) val ues ( va v al 1, val 2. . . ) ;

Exemplu:

mysql > I NSERT ERT I NTO anga angajj at i _dat a - > ( f _n _na ame, l _n _na ame, t i t l e, age, yos, sal sal ar y, per ks, emai l ) - > val val ue ues s - > ( "Mani ani sh", " Shar ma", " CEO" , 28, 4, 200000, - > 5000 50000 0, " mani ani sh@bi gnet gnet . com" ) ; Query OK OK, 1 r ow af f ect ed ( 0. 00 sec) sec)

Daca vrei sa inserezi unul dintre urmatoarele caractere intr-un camp de tip text, trebui sa-i adaugi adaug i inainte un caracter backslash(\): ‘ ( ap apos t r o off ) : \ ' “ ( gh ghi l i mel e) : \ " \ ( bac ks l as h) h) : \ \ % ( pr oc o cent ) :\%  _ ( l i ni ut a de subl i ni er e) : \ _

Actualizarea datelor din tabele Se face cu comanda SQL UPDATE. UPDATE PDATE nume_ e_tt abel a SET nume_ c amp1 = val 1, nume_ c amp2 = val 2, num nume_c e_cam amp3 = val 3 . . . [ WHERE con condi t i i ] ; UPDA PDATE ang angaj aj at i _dat a SET SET sal ar y = sal ar y + 2000 0000,

 

19

 

per ks = per ks + 5000 WHERE t i t l e=' CEO' ; Query OK OK, 1 r ow af f ect ed ( 0. 01 sec) sec) Rows mat ched: 1 Changed hanged:: 1 War ni ngs: 0

Extragerea informatiilor dorite din tabela Informatiile dorite sunt extrase din tabela (preocesul de interogare) cu comanda SELECT SELEC ELECT num nume_campur i f r om num nume_t abel abel a [ WHERE ERE . . . cond condi t i i ] ;   De exemplu, pentru a extrage e xtrage nume si prenumele tuturor angajatilor (presupunand ca ai mai adaugat pe  parcurs mai multe inregistrari inregistrari cu INSERT sau LOAD DATA INFILE): mysql > SELEC SELECT T f _name, l _name f r om ang angaj at i _dat a; +- - - - - - - - - ++- - - - - - - - - - - - + | f _nam _name | l _nam _name | +- - - - - - - - - ++- - - - - - - - - - - - + | Mani ani sh | Shar har ma | | J ohn | Hag aga an | | Ganes h | Pi l l ai | | Anami ka | Pan Pandi t | | Mar y | Anch chor or | | Fred | Kr uger | | J ohn | Mac acFa Farr l and | | Edw Edwar d | Sakam Sakamur o | | Al ok | Nand anda | | Hassan ssan | Raj abi | | Paul | Si mon | | Ar t hur | Hoopl a | | Ki m | Hunt er | | Roger | Lew Lewi s | | Dann anny | Gi bson | | Mi ke | Harper arper | | Moni ca | Sehg ehgal | | Hal | Si ml ai | | J os ep eph | I r vi ne | | Shahi da | Al i | | Pet Pet er | Cha ham mpi on | +- - - - - - - - - ++- - - - - - - - - - - - + 21 r ows i n se sett ( 0. 00 sec)

Pentru a afisa intreaga tabela, in loc sa specificam toate campurile vom folosi simbolul '*': SELEC LECT * f r om angaj at i _dat _dat a;   Selectia conditionala Puterea SGBD-ului sta in permiterea de a extrage informatii dupa anumite anu mite conditii specificate SELEC ELECT f _name, l _ name f r om ang angaj at i _dat a wher e f _name = ' J ohn ohn' ; +- - - - - - - - +- - - - - - - - - - - - + | f _nam _name | l _nam _name | +- - - - - - - - +- - - - - - - - - - - - + | J ohn | Hagan | | J ohn | MacFar cFar l and | +- - - - - - - - +- - - - - - - - - - - - + 2 r ows i n set ( 0. 00 sec)

 

20

 

Comparatiile MySQL sunt case insensitive ceea ca inseamna ca "john", "John" sau "JoHn" ar merge in exemplul de mai sus. Operatori de comparatie   Oper at or Nume = eqal eqal i t at e > mai mar e

Exempl u cust omer i d = 3 amount >60. 00

< >=

amount <60. 00 amount >=60. 00

mai mi c mai mi c s au egal

<= mai mi c s au egal amount <=60. 00 ! = sa sau u di f er i t quant i t y ! = 0 <> I S NOT val val oar oar e nen nenul a NULL I S NULL val val oar oar e nul a BETWEEN EEN i nt er val de val or i amount ount bet bet ween 0 and 60. 60. 00 IN i ncl us i nt r- un set set prede redef i ni t ci t y i n ( “Ca “Car l t on”, “Moe”) NOT I N nei ncl us i nt r - un se sett pr edef i ni t ci t y not i n ( “Ca “Car l t on”, “Moe”) LI KE NOT LI KE REGEXP EXP

caut caut ar e pat t er n caut caut ar e pat t er n expr expr esi e r egul egul ar

name l i ke

( “Fr ed %”)

name r egexp egexp

Daca am vrea sa afisam angajatii al caror nume incepe cu 'J'?

sel ect f _nam _name, l _nam _name f r om ang angaj at i _dat _dat a wher e f _nam _name LI LI KE " J %" ; +- - - - - - - - +- - - - - - - - - - - - + | f _nam _name | l _nam _name | +- - - - - - - - +- - - - - - - - - - - - + | J ohn | Hagan | | J ohn | MacFar cFar l and | | J osep seph | I r v i ne | +- - - - - - - - +- - - - - - - - - - - - + 3 r ows i n set ( 0. 00 sec)

Conditiile SQL pot contine con tine si operatorii logici: AND, OR si NOT NOT.. Sa afisam numele angajatilor care au numele incepand cu 'S' sau 'A': SELEC ELECT l _name f r om ang angaj at i _dat a wher her e l _nam _name l i ke ' S%' OR l _nam _name l i ke ' A%' ; +- - - - - - - - - - + | l _nam _name | +- - - - - - - - - - + | Shar Shar ma | | Ancho chor | | Sakam Sakamur o | | Si mon | | Sehgal | | Si ml ai | | Al i | +- - - - - - - - - - + 7 r ows i n set ( 0. 00 sec)

 

21

 

Alte exemple: SELEC LECT f _n _nam ame, l _nam _name, t i t l e f r om   - > ang angaj at i _d _da at a wher e t i t l e - > I N ( ' Web Desi gner ' , ' Syst em Admi ni st r at or ' ) ; +- - - - - - - - - +- - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - + | f _n _na ame | l _na _name | t i t l e | +- - - - - - - - - +- - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - + || A nam Pan Pa ndiort || W || Mar yi ka || A nchor nch Web eb D Desi esi g gn ner er | Ro Roger | Le Lewi s | Sy Syst em Admi ni st r at or | | Da Danny | Gi Gi bson | Syst Syst em Admi ni st r ator | +- - - - - - - - - +- - - - - - - - ++- - - - - - - - - - - - - - - - - - - - - - + 4 r ows i n set ( 0. 00 sec) sel ect f _nam _name, l _nam _name, age age f r om   - > angaj angaj at i _ dat a wher e age BETW ETWEEN EEN - > 32 AND 40; +- - - - - - - - - ++- - - - - - - - - - - - +- - - - - - + | f _nam _name | l _nam _name | age age | +- - - - - - - - - ++- - - - - - - - - - - - +- - - - - - + | J ohn | Hag aga an | 32 | | Ganesh | Pi l l ai | 32 | | J ohn | Mac acFa Farr l and | 34 | l ssan ok n || R Naj and ana db ai 33 2 || || A Ha ssa || 3 | Ar t hur | Hoopl a | 32 | | Ki m | Hunt er | 32 | | Roger | Lew Lewi s | 35 | | Dann anny | Gi bson | 34 | | Mi ke | Harper arper | 36 | | Shahi da | Al i | 32 | | Pet Pet er | Cha ham mpi on | 36 | +- - - - - - - - - ++- - - - - - - - - - - - +- - - - - - + 12 r ows i n se sett ( 0. 00 sec) sel ect -> -> ->

f _n _nam ame, l _nam _name, sal ar y f r om angaj at i _d _dat at a where sa sall ar y NOT BET BETWEEN EEN 90000 AND 150000;

+- - - - - - - - - ++- - - - - - - - - - - - +- - - - - - - - + | f _nam _name | l _nam _name | sal ary | +- - - - - - - - - ++- - - - - - - - - - - - +- - - - - - - - + | Mani ani sh | Shar Shar ma | 2000 200000 00 | | Mar y | Anc nch hor | 850 85000 | | Fr ed | Kr uger | 75 75000 | | J ohn ohn | MacFar acFar l and and | 80000 | | Edw Edwar d | Sakam Sakamur o | 7500 75000 0 | | Al ok | Nand anda | 70 70000 | | Pau Paul | Si mon | 85000 | | Ar t hur | Hoo oop pl a | 75000 | | Hal | Si ml ai | 70000 | | J ose sep ph | I r vi ne | 72000 | | Shahi da | Al i | 70 70000 | +- - - - - - - - - ++- - - - - - - - - - - - +- - - - - - - - + 11 r ows i n se sett ( 0. 00 sec)

 

22

 

Sortarea datelor  Inregistrarile Inregistrar ile extraswe anterior au fost afisate in rodinea in care c are erau stocate in tabela. Pentru a le sorta folosim clauza ORDER BY a comenzii co menzii SELECT. SELEC SELECT T l _name, f _ name f r om anga angajj at i _dat a OR ORDER BY l _name; +- - - - - - - - - - - - ++- - - - - - - - | l _nam _name | f _nam _name +- - - - - - - - - - - - ++- - - - - - - - | Al i | Shahi da | Anch cho or | Mary | Champi on | Pet Pet er | Gi bson | Dann anny | Hagan | J ohn ohn | Har per | Mi ke | Hoopl a | Ar t hur | Hunt er | Ki m | I r v i ne | J os ep eph | Kr uger | Fred | Lew Lewi s | Roge oger | MacFar cFar l and | J ohn ohn | Nanda | Al ok

+ | + | | | | | | | | | | | | |

| Pan Pa | A nn ae msi ka P in ld l iati Ga h | | Raj abi | Has assa san n | | Sakam Sakamur o | Edw Edwar d | | Sehgal | Moni oni ca | | Shar ma | Mani ani sh | | Si ml ai | Hal | | Si mon | Paul aul | +- - - - - - - - - - - - ++- - - - - - - - - + 21 r ows i n se sett ( 0. 00 sec)

sau (ordine descrerscatoare): SELE LEC CT f _nam _name f r om ang angaj at i _dat _dat a ORDER by f _ name DESC; DESC;

Limitarea numarului de inregistrari extrase   SELEC SE LECT Tt if _d _nam e, LI _ InT am5 e; f r om a ng aj a _data ata LIl M +- - - - - - - - - +- - - - - - - - + | f _nam _name | l _nam _name | +- - - - - - - - - +- - - - - - - - + | Mani ani sh | Shar har ma | | J ohn | Hag aga an | | Ga Ganes h | Pi Pi l l ai | | Anami ka | Pan Pandi t | | Mar y | Anch chor or | +- - - - - - - - - +- - - - - - - - + 5 r ows i n set ( 0. 01 sec)

Similar, putem lista cei mai tineri doi angajati: SELEC SELECT T f _name, l _ name, age age f r om angaj at i _ dat a ORDER BY age angaj age LI MI T 2;

 

23

 

+- - - - - - - - +- - - - - - - - - - +- - - - - - + | f _nam _name | l _nam _name | ag age | +- - - - - - - - +- - - - - - - - - - +- - - - - - + | Edw Edwar d | Sakam Sakamur o | 25 | | Mar y | Anch cho or | 26 | +- - - - - - - - +- - - - - - - - - - +- - - - - - + 2 r ows i n set ( 0. 01 sec)

Forma S ELEC LECTgenerala ( . . . ) fa rclauzei om t abLIMIT el a L LIIeste: MI T nr nr _r and_i ncep ceper e, nr _i nr eg_e _ex xt r ase; se; SELEC SELECT T f _name, l _ name f r om angaj at i _d _da at a LI MI T 6, 3; +- - - - - - - - +- - - - - - - - - - - - + | f _nam _name | l _nam _name | +- - - - - - - - +- - - - - - - - - - - - + | J ohn | MacFar cFar l and | | Edw Edwar d | Saka Sakam mur o | | Al ok | Nanda | +- - - - - - - - +- - - - - - - - - - - - + 3 r ows i n set ( 0. 00 sec)

Comanda de mai sus extrage 3 angajati incepand de la inregistrarea 6. Folosirea clauzei DISTINCT permite listarea doar a valorilor distincte din baza de date d ate pentru fiecare camp in parte. Functii agregat  MI N( ) : Val oar oar e mi ni ma MAX( ) : Val Val oar e maxi ma SUM( ) : Suma val val or i l or AVG( ) : Medi a ar ar i t met i ca COUNT( ) : Numar ul i nr egi st r ar i l or extr as ase e sel sel ect MI N( sal sal ar y) f r om angaj at i _d _da at a; +- - - - - - - - - - - - - + | MI N( sal sal ar y) | +- - - - - - - - - - - - - + | 70000 000 | +- - - - - - - - - - - - - + 1 r ow i n set ( 0. 00 sec) se sell ect MAX( sa sall ar y) f r om angaj at i _d _da at a; +- - - - - - - - - - - - - + | MAX( sa sall ar y) | +- - - - - - - - - - - - - + | 200 200000 000 | +- - - - - - - - - - - - - + 1 r ow i n set ( 0. 00 sec) se sell ect SUM( sa sall ar y) f r om angaj at i _d _da at a; +- - - - - - - - - - - - - + | SUM( sa sall ar y) | +- - - - - - - - - - - - - +

 

24

 

| 1997 997000 000 | +- - - - - - - - - - - - - + 1 r ow i n set ( 0. 00 sec) se sell ect COUNT( *) f r om angaj at i _d _da at a; +- - - - - - - - - - + | COUNT( *) | +- - - - - - - - - - + | 21 | +- - - - - - - - - - + 1 r ow i n set ( 0. 00 sec)

Denumirea campurilor in SELECT MySQL permite sa denumesti campurile extrase cu termeni mai descriptivi pentru datele extrase. se sell ect av avg g( sa sall ar y) AS AS ' Sal ar i u medi u' f r om angaj at i _d _da at a; +- - - - - - - - - - - - - - - - + | Sa Sal ar i u medi u | +- - - - - - - - - - - - - - - - + | 9509 5095. 2381 381 | +- - - - - - - - - - - - - - - - + 1 r ow i n set ( 0. 00 sec)

Clauza GROUP BY permite gruparea informatiilor informatiilor similare. Deci, pentru pentru a lista toate toate functiile unice din tabela: se sell ect t i t l e f r om angaj at i _d _da at a GROUP BY t i t l e; +- - - - - - - - - - - - - - - - - - - - - - - - - - - - + | ti tl e | +- - - - - - - - - - - - - - - - - - - - - - - - - - - - + | CEO | | Cu Cust omer Ser vi ce Manag anager er | | Fi nan nance Manag anager er | | Mar ket ket i ng Execu xecutt i ve | | Mul t i medi edi a Pr ogr ogr ammer | | Pr ogr ogr ammer | | Seni or Market i ng Execu xecutt i ve | | Seni eni or Pr ogr ogr ammer | | Seni eni or Web Desi gner | | Syst em Admi ni st r at or | | Web Desi gner gner | +- - - - - - - - - - - - - - - - - - - - - - - - - - - - + 11 r ows i n set ( 0. 01 sec)

Clauza HAVING permite specificare unei conditii pentru gruparea inregistrarilor   sel sel ect t i t l e, AVG( sal sal ar y) f r om angaj at i _d _da at a GROUP BY BY t i t l e HAVI NG AV AVG G( sal ar y) > 1000 100000 00;;

 

25

 

+- - - - - - - - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - + | ti tl e | AVG( s al al ar y ) | +- - - - - - - - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - + | CEO | 200 200000 000. 0000 000 | | Fi nan nance Manag anager er | 120 120000 000. 0000 000 | | Seni eni or Mar ket ket i ng Execu xecutt i ve | 120000 000. 0000 | | Seni Seni or Pr ogr ogr ammer | 115 115000 000. 0000 000 | | Seni eni or Web Desi gner | 110 110000 000. 0000 | +- - - - - - - - - - - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - + 5 r ows i n set ( 0. 00 sec)

 Extragerea inregistrarilor inregistrarilor din mai multe ttabele abele (JOIN-uri) De multe ori, ca sa raspunzi la o intrebare trebui sa extragi date din mai mu multe lte tabele. De exemplu, pentru a afla ce clienti au facut comenzi co menzi luna asta trebuie sa folosesti tabela clienti si tabela comenzi. Pentru Pentru acest lucru in SQL trebuie realizata o relatie intre intre tabele (JOIN) pe baza unor informatii comune (un camp de ID). In exemplul nostru n ostru campul care relationeaza tabela 'angajati_data' este emp_i d, iar pentru pen tru 'angajati_per 'e_ i d. Sa extragem numele angajatilor casatoriti din angajati_data si numele sotiei din angajati_per (vom folosi functia CONCAT pentru a alipi doua d oua siruri de caractere): sel ect CONCAT( f _name, " " , l _ nam name) AS Nam Name, s_ nam name as ' Spouse Spouse Nam Name' f r om angaj at i _d _da at a, angaj at i _p _pe er wher e m_ st at us = ' Y' AND emp_i d = e_i d; +- - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - + | Name | Spouse Name | +- - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - + | Mani sh Shar Shar ma | Anam Anami ka Shar Shar ma | | J ohn ohn Hagan agan | J ane ane Donne onnerr | | Ganesh Pi l l ai | Sandhya Pi l l ai | | Anam Anami ka Shar Shar ma | Mani s h Shar Shar ma | | J ohn MacFar cFar l and | Mar y Shel l y | | Al ok Nanda anda | Mani ani ka Nanda anda | | Pau Paul Si mon | Mur i el Lov Lovel ace | | Ar t hur Hoo oop pl a | Ri na Br i ght on | | Ki m Hunt er | Mat t Shi kar i | | Dann anny Gi bson bson | Bet t y Cudl y | | Mi ke Har per | St el l a St evens | | Moni oni ca Sehg ehgal | Edgar Al an | | Pet Pet er Champi on | Ruby Ri cher cher | +- - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - + 13 r ows i n se sett ( 0. 00 sec) Tipuri de join-uri in MySQL  

Produs cartezian, Full Join, Cross join Toate combinatiile tuturor liniilor din tabela. Se specifica prin virgula si fara clauza WHERE. Inner join Poate fi specificat prin virgula intre numele tabelelor sau prin folosirea WHERE sau cu cuvintele cheie INNER JOIN. Equi-join Foloseste o conditie cu '=' pentru p entru a face corespondente intre inregistrari.

 

26

 

Left join Incearca sa gasesca corespondente intre tabele si cand nu gaseste, umple inregistrarile inregistrarile fara pereche cu NULL.

Stergerea inregistrarilor din tabela DELETE ELETE FRO FROM t abl abl e [ WHERE condi condi t i on] on] [ LI MI T n nu umber ber ] del et e f r om cust omer s w wh her e cu cust st omer i d=5;  

Stergerea tabelelor  DROP TA TABLE angaj angaj at i _ dat dat a;   Stergerea unei baze de date  DROP DATABAS DATABASE E dat abas e;  

Crearea indecsilor face INDEX sau_ispecificand iSe ndex ndpoate ex nu num me_icu ndex ndcomanda ex ( num nume_col oana oana_i ndexa ndexatt a)   la crearea unui tabel un camp ca PRIMARY KEY. cr eat e t abl e my_t abl e ( i d_col i nt unsi gned au aut o_i ncr ement ent pr i mar y ke key, anot her _col text );

Indecsi pot cuprinde si mai multe mu lte campuri: cr eat e t abl e myt abl abl e( i d_col _col i nt unsi gned not nu nul l , anot her _col _col ch cha ar ( 200) not nul l , i ndex dual _col _col _i ndex( i d_col _col , anot her _col _col ) ) ;

In versiunea MySQL 3.23 poti indexa si dupa o parte dintr-un camp i ndex ndex i ndex_na ndex_nam me ( col umn_nam n_name( col umn_l engt engt h) )   De exemplu: cr eat e t abl e my_t abl e( cha ch ar _col umn ch char ( 255) not nul l , t ext _col _col umn t ex extt not nul l , i ndex i nde ndex_on_cha x_on_charr ( ch char_ ar_ col umn( 20) ) , i) n x_on_t ex extt ( t ex extt _col umn( 200) ) ; dex i ndex_on

Modificarea tabelelor dupa creare ALTER LTER TABLE nume modi odi f i car e [ , modi odi f i car e . . . ]   Posibile modificari cu ALTER TABLE   Si nt ax axa a Descr i ere ADD [ COLU LUM MN] col umn_descr n_desc r i pt i on Adauga dauga o col oana oana [ FI RST | AFTER FTER col umn ] ADD [ COLU LUM MN] ( col umn_desc n_descrr i pt i on, on, Adauga auga o desc descrr i er e de col oana oana ADD I NDEX [ i ndex] dex] ( col umn, . . . ) Adaug auga un i ndex dex ADD PR PRII MARY KEY ( col umn, . . . ) Tr ansf ansf or ma campul pul i n PK

 

27

 

ADD UNI QUE [ i nd ndex] ex] ( col umn, . . . ) ALTER LTER [ COLUM LUMN] col umn {SET {SET DEFAU EFAULT val ue | DROP DEFAU DEFAULT} LT} CHANGE [ COLU LUM MN] col umn new new_ col umn  _  _descr descr i pt i on MODI FY [ COLU LUM MN] col umn_descr n_desc r i pt i on DROP [ COLUMN] col umn DROP PRI MARY ARY KEY DROP I NDEX i ndex ndex RENA ENAME[ AS] AS] new_ t abl e_nam e_ name

Adau dauga un i ndex pt . uni cat e Adaug auga/ st er ge val or i l e i mpl i ci t e Modi odi f i car i pent pent r u col oane oane St er ge un c amp St er ge PK St er ge i ndexu ndexull Re Reden denum umest e o t abel a

MySQL ofera 3 tipuri de tabele : ISAM, MyISAM (implicit), BDB, and Heap alese dupa sintaxa: cr eat e t abl e nu nume t ype ype=t i p_t ab abe el a( nume_col col col oana at at t r i but ) ;

Heap-urile sunt tabele hash temporare rezidente in memorie. Tabelele BDB sun suntt folosite la tranzactii, iar tabelele ISAM ISAM nu mai sunt recomandate. Deci alegerea implicita MyISAM este cea mai buna si nu trebuie sa-ti faci grji ca trebui sa specifici vreodata un tip de tabela. Sintaxe ALTER: nume_vechi r enam ename num nume_nou  (Redenumire tabela:) tabela:)al t er t abl e num (Modificare camp:)al t er t abl abl e my_t abl abl e ad add col col umn my_col umn t ext ext no nott nul l nume_t abel abel a dr dr op col umn num nume_cam e_c amp  (Stergere camp):al t er t abl e num Indecsi: al t er al t er al t er al t er al t er

 

t abl abl e my_t abl abl e add add i ndex i ndex_nam ex_name ( col umn_name1, e1, col umn_name2, e2, . . . ) t abl abl e my_t abl abl e add add uni uni que que i ndex_nam dex_name( col umn_nam n_name) t abl abl e my_t abl abl e add add pr i mar y key( key( my_col umn) t abl abl e t abl abl e_nam e_name dr dr op i ndex i ndex_nam ex_name t abl abl e_nam e_name t est 10 dr dr op pr i mar y key key

28

 

Limbajul MySQL-functii si comenzi

 



 



 



 



 



 



 



 



 



 



 



 



 



Siruri de caracter caracteree   Numere   Numere   NULL   NULL   Numele folosite  folosite  Variabile definite de utilizator   Comentarii  Comentarii  rezervate   Cuvinte rezervate siruri  Functii pentru compararea de siruri  Functii matematic matematicee  Functii pentru siruri caractere  s iruri de caractere  Functii pentru date si timp  timp  Functii diverse  diverse  Sintaxa completa a celor mai folosite comenzi  comenzi 

MySQL are o interfata SQL foarte complexa, dar si intuitiva in tuitiva si usor de invatat. in vatat. Capitolul acesta se se ocupa ocup a cu prezentarea detaliata a unor comenzi diverse (cum se folosesc ele ai aflat in Utilizare MySQL MySQL), ), tipuri de date si functii de care c are vei avea nevoie ca sa folosesti MySQL eficient.

Structura limbajului folosit Siruri de caractere  Un sir de caractere (string) este o secventa de caractere aflata aflata intre apostrofuri sau ghilimele gh ilimele ('un ('un sir' s ir' sau "un sir"). Intr-un sir de caractere, unele secvente aau u un inteles special. Aceste Aceste secvente incep cu '\'. MySQL recunoste urmatoarele secvente de escape: \0 0 ( NULL) \A'post r of \" Ghi l i mel e. \b , \ \ Backsl ash \n Li ni e nou noua a \r Car r i age r eturn \t  Tab..  Tab \z Cont r ol o l - Z ( s f ar ar s i t de f i s i er ) \% Pr ocen ocent `%' \_

 

29

 

Under so sorr e `_'

Daca vrei sa incluzi ghilimele si apostrofuri in siruri de caractere: mys ql ql > SELECT ' hel l o' , ' " he hel l o" ' , ' " " he hel l o" " ' , ' hel ' ' l o' , ' \ ' hel l o' ; +- - - - - - - +- - - - - - - - - +- - - - - - - - - - - +- - - - - - - - +- - - - - - - - + | hel l o | " he hel l o" | " " he hel l o" " | hel ' l o | ' hel l o | +- - - - - - - +- - - - - - - - - +- - - - - - - - - - - +- - - - - - - - +- - - - - - - - +   mys ql ql > SELECT "h " hel l o" , " ' hel l o' " , " ' ' hel l o' ' " , " h he el " " l o" , " \ " h he el l o" ; +- - - - - - - +- - - - - - - - - +- - - - - - - - - - - +- - - - - - - - +- - - - - - - - + | - -h-e-l -l -o- |+- -' -h-el- -l o | - -' -' -h-e-l -l o | - -h-e-l -" -l -o- + | - -" -he h-e-l -l -o- + | + - -' - + - -' -' - +

Numere   Numerele intregi sunt sunt reprezentate ca o secventa secventa de cifre, cifre, iar float-urile folosesc folosesc '.' ca separator decimal. decimal. Valoarea NULL  Valoarea NULL inseamna 'Nici o informatie' si difera de valoarea v aloarea 0 pentru intregi si de sirul s irul gol pentru siruri de caractere. Numele folosite pentru baze de date, tabele, indecsi, coloane si alias-uri   Un nume poate contine caract c aractere ere alfanumerice din setul curent de d e cacactere (implicit IS ISO-8859-1 O-8859-1 Latin1). Un nume poate incepe cu orice caracter valid in nume. Un nume poate incepe si cu un numar , dar nu  poate fi compus numai din numere. Nu poti folosi folosi '.' in nume deoarece e folosit pentru a rreferi eferi coloanele

din tabele. sensibilitatea majuscule sau in minuscule pentru numele alese depinde de  referi sistemul de operare (case sensitive in Unix silacase insensitive Windo ws). Windows). Oricum, in Windows nu poti aceeasi baza de date in aceeasi interogare cu un nume n ume in cazuri diferite. Urmatoare interogarenu merge: mys ysql ql > SELECT SELECT * FROM my_ t abl e WHERE ERE MY_ Y_TAB TABLE. LE. col co l =1;    Numele de coloane sunt case case insensitive. Alias-urile Alias-urile sunt case sensitive. sensitive. Variabile definite de utilizator   Se pot defini cu @nume_var i abi abi l a. Ele nu trebuiesc initializate, initializate, contin de la inceput valoare NULL si pot stoca un integ, un numar real, un float sau un u n sir de caractere. Poti seta o variabila la o anumita anu mita valoare cu: SET @var var i abl e= { i nt eger exp expr essi on | r eal ex exp pr essi on | st r i ng expr xpr essi on }[ , @vari abl e= . . . ] . sau cu: sel ect @t 1: =( @t 2: =1) +@t 3: =4, @t 1, @t 2, @t 3; +- - - - - - - - - - - - - - - - - - - - - - +- - - - - - +- - - - - - ++- - - - - - + | @t 1: =( @t 2: =1) +@t 3: =4 | @t 1 | @t 2 | @t 3 | +- - - - - - - - - - - - - - - - - - - - - - +- - - - - - +- - - - - - ++- - - - - - + | 5 | 5 | 1 | 4 | +- - - - - - - - - - - - - - - - - - - - - - +- - - - - - +- - - - - - ++- - - - - - +

Comentarii  MySQL suporta cometariile #pana la sfarsit de linie, --pana la sfarsit de linie si /*linii multiple*/. mysql ysql > sel ec ectt mysql ysql > sel ec ectt mysql ysql > sel ec ectt mysql > s el ect /* coment ent ar i u mul t i - l i ni i

 

1+1; # Coment ent ari u pana ana l a sf arsi t ul l i ni e 1+1; - - Coment ar i u pana l a sf ar si t ul l i ni ei 1 / * com coment ent ari u i n- l i ne */ + 1; 1+

30

 

*/ 1;

Cuvinte rezervate 

 

acti on  al t er   asc   bet ween  bl ob 

add add  af t er   avg  bi gi nt   bool  

agg aggr egat egat e  al l   and  as   avg avg_r ow_ l eng engt h  aut aut o_i ncr ement ent   bi t   bi nar y  bot h  by 

cascade  change  c ol umns  

case  check  comment  

char   checksum  co con nst r ai nt  

ch charact aract er   col umn  creatt e  crea

cross  

cur cur r ent _d _da at e 

cu curr r ent ent _t i me 

cu curr r ent ent _t i mest amp 

dat a  dat et i me 

dat abase abase  day day 

dat abases abases   day_hour  

dat e  day_m day _mi nut nut e 

day_second  dec 

dayof mont h  deci mal  

dayof week  def aul t  

dayo ayoff year year   del ayed ayed 

del ay ay_ke _key y_w _wrr i t e 

del et e 

desc 

desc escrr i be 

di s t i nc t   end  encl encl ose osed d 

di s t i nc t r ow o w  el s e  enum 

doub oubl e  escape  expl xpl ai n 

dr op  escaped  exi sts  

f i el ds   f l oat 4  f r o m  gl obal obal  

f i l e  f l oat 8  f or   gr ant ant  

f i r st st   f l us h  f ul ul l   gr ant s  

f l oat   f or ei ei gn  f uncti on  gr oup oup 

havi avi ng  hour hour _mi nut nut e  i gnor e  i nner  

heap  hour our _s econ econd d  i n  i nser ser t  

hi gh_ pr pr i or i t y  host s   i nde ndex  i ns er er t _ i d 

hour   i dent i f i ed  i nf n f i l e  i nt  

i nt eger   i nt 3 

i nt er val   i nt 4 

i nt 1  i nt 8 

i nt 2  i nt o 

i f   key 

i s  keys  

i s am am  ki l l  

l eadi ng  l i nes   l ock 

left  l i mi t   l ogs  

l engt h  l oad  l ong 

l i k e  l ocal cal   l ong ongbl ob 

l ongt ext   mat c h 

l ow_ pr pr i or i t y  medi umbl ob 

max  medi umt ext  

max ax__ r ows ows   medi umi nt  

mi ddl ei nt   modi odi f y  nat ur al   nul l  

mi n_r ows   mont h  num numer i c   on 

mi nut nut e  mont hn hnam ame  no  opt i mi ze 

mi nut nut e_s e_secon econd d  myi sam  not   opt i on 

opt i onal l y 

or  

or der der  

out out er  

 j oi n  l as t _ i ns er er t _ i d 

31

 

out f i l e  pr eci eci si on 

pack_keys   pr i mar y 

par t i al   pr oce oced dur e 

passwor d  passwor pr oc ocess ess  

pr ocessl cessl i st   r ef erence erences s 

pr i vi l eges   r el oad 

read  r egexp egexp 

real   r ename 

r epl ace  r l i k e  se sell ect  

r es es t r i c t   r ow  set  

returns   r ows ows   show 

r evoke evoke  second  s hut down 

smal l i nt  

s onam oname 

sql sql _b _bii g_t abl es   sql sql _b _bii g_sel _sel ects  

sq sqll _l ow_p _prr i or i t y_ y_u updat es   sql sql _l og_o _off f   sq sqll _l og_upd _updat e  sql sql _ se sell ect _ l i mi t   sq sqll _smal l _r esul sul t   sql sql _b _bii g_r esul sul t   sql _w _wa ar ni ngs   s t r a aii ght _ j oi n  s t ar ar t i ng  status   s t r i ng  t abl e  t abl es   t empor por ar y  t er mi nat ed  text   t hen  t i nyt ext   t ype ype  unl oc ock k 

t i me  t i nyi nt   use  unsi gned ned 

t i mest amp  t r ai ai l i ng  usi ng  updat pdat e 

t i nybl ob  t o  uni que  usage 

val val ues  var var bi nary  wher e 

var var char   wi t h  year  

var i abl es   wr i t e  year _ mont h 

varyi ng  when  z er o off i l l

 

Urmatoarele cuvinte pot fi folosite si pentru nume nu me de tabele, coloane etc.: ACTI AC TI ON BI T DATE DATE ENU ENUM NO TEXT TI ME TI MESTAMP

Functii Functii pentru compararea de siruri  LIKE  Cauta un 'pattern' intr-o expresie folosind caracterele wildcard:%(ori wildcard:%(orice ce numar nu mar de caractere) si _ (un singur caracter). exp expr LI KE pa patt [ ESCA SCAPE ‘ escapescape- ch char’ ar’ ] mysql ysql > sel ec ectt ‘ j ay gr eensp spa an’ ‘ j ay gr gr eensp spa an’ l i ke ‘ j ay%’

l i ke ‘ j ay%’ ;

1

REGEXP  Face o cautare folosind o expresie string si o expresie regulara. Returneaza 1 (a gasit) sau 0(n-a gasit). expr REGEX EGEXP P pat mysql > s el ect name f r om guest guest book book wher her e nam name r egexp egexp ‘ ^j . *g’ ; STRCMP  STRCMP(expr1,expr2) Returneaza 0 daca sirurile sunt egale, -1 daca primul sir e mai mic si 1 daca sirul 2 e mai mic ca sirul 1. Functii pentru controlul programului  IFNULL  IFNULL(expr1,expr2)

 

32

 

Daca expr1 nu e NULL, returneaza expr1, altfel ret. expr2. mysql sql > sel sel ect i f nul l ( 1/ 0, ‘ exp 1 i s nu nul l ’ ) ;   +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | i f nul l ( 1/ 1/ 0, ‘ exp 1 i s nul l ’ ) | +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | exp 1 i s nul l | +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + 1 r ow i n set ( 0. 00 sec) sec)

IF  I F( exp xprr 1, exp xprr 2, exp xprr 3) mysql ysql > sel ec ectt i f ( name l i ke ‘ j ay%’ , ‘ Yes es’’ , ‘ No’ ) as ‘ J ay Na Names’ - > f r om guest book;   Functii matematice  ABS (modulul unui numar) SIGN (semnul:-1 negativ, 1 pozitiv, 0 egal cu 0) MOD (rstul impartirii) FLOOR (cea mai mare valoare intreaga mai mica ca un numar) CEILING (cea mai mica valoare intreaga mai mare ca un numar) ROUND (un numar nu mar rotunjit la o valoare intreaga) TRUNCATE  (trunceaza un numar la un anumit anu mit numar de zecimale) mysq sqll > se sell ect t r uncat cat e( 8. 53, 0) , t r uncat cat e( 8. 43, 0) , | t r uncat cat e( 8. 53, 0) | t r uncat cat e( 8. 43, 0) | t runca runcatt e( 8. 534, 2) | | 8 | 8 | 8. 53 | 1 r ow i n set ( 0. 05 sec)

t r uncat cat e( 8. 534, 2) ;

EXP (exponentiala unui numar) LOG (log  (logaritm) aritm) LOG10 (logaritm zecimal) POW(X,Y) (X la puterea Y) SQRT (radacina patrata) PI  (aproximarea lui PI) COS (cosinus) SIN (sinus) TAN (tangenta) ACOS (arccosinus) ASIN (arcsinus) ATAN (arctangenta) COT (cot  (cotangenta) angenta) RAND (valoare la intamplare intre 0 si s i 1.0) LEAST (cel mai mic argument) mysq sqll > se sell ect l east ( 2, 7, 9, 1) ; | l eas t ( 2, 2 , 7, 9, 1) | | 1 | 1 r ow i n set ( 0. 00

sec)

GREATEST (cea mai mare valoare d intre argumente)

 

33

 

DEGREES  (converteste din radiani in grade) RADIANS (converteste din grade in radiani) Functii pentru siruri de caractere   ASCII(str) (codul ASCII) mysql sql > sel sel ect asci asci i ( ‘ \ n’ ) ; i0 i ( ‘ \ n’ n ’ ) || || as c 1 1 r ow i n set ( 0. 00 sec)

ORD(str)  CONV(N,from_base,to_base)  BIN(N) (converteste N in baza 2) OCT(N) (converteste N in baza 8) HEX(N) (converteste N in baza 16) CHAR(N1,N2,...) (sirul de caractere format format din reprezentarile reprezentarile ASCII ale argumentelor intregi) CONCAT(str1,str2,...) (concateneaza doua siruri de cacactere) LENGTH (lungimea unui sir) LOCATE(substr,str [,pos]) (cauta pozitia unui subsir intr-un sir) mysql ysql > sel ec ectt l ocat cat e( ‘ s’ , ‘ mysq ysqll f unct i ons’ ) as exa exampl e1, - > l ocat cat e( ‘ s’ , ‘ mysql sql f unct i ons’ , 4) as exa exampl e2; | exam exampl e1| e1| exam exampl e2| e2| | 3 | 15 | 1 r ow i n set ( 0. 00 sec) INSTR(str,substr) (pozitia subsirului in sir) LPAD(str,len,padstr) (sirul padstr e adaugat adaug at la stanga lui srt) RPAD  LEFT(str,len) (primele 'len' caractere din str) RIGHT(str,len)  SUBSTRING(str,pos[,len]) sau MID(str,pos,len)  mysql ysql > sel ec ectt mi d( ‘ mysq sqll f unct i ons’ , 6, 8) ; | mi d( ‘ mysql sql f unct i ons’ , 6, 8) | | f uncti on | 1 r ow i n set ( 0. 00 sec) SUBSTRING_INDEX(str,delim,count)  mysql ysql > sel ec ectt su sub bst r i ng_i ndex(‘ mysq sqll f unct i onsmysq ysqll ’ , ‘ f u’ ,

1) ;

| sub substr i ng_ i ndex( ‘ mysql sql f uncti ons’ , ‘ f u’ , 1) | | mysql ysql | 1 r ow i n set ( 0. 00 sec) mysq sqll > se sell ect su sub bst r i ng_i ndex(‘ mysql sql f unct i onsmysql sql ’ , ‘ f u’ , | su sub bstr i ng_i ndex( ‘ mysql sql f uncti onsmysql sql ’ , ‘ f u’ , - 1) | nct i onsmysql ysql 1 r ow i n set ( 0. 00 sec)

- 1) ;

| |

LTRIM  RTRIM 

 

34

 

TRIM  TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)   REPLACE(str,from_str,to_str)  SOUNDEX(str) (sirul in format SOUNDEX) SPACE(N) (un spatiu de N pozitii) REPEAT(str,count) (repeta str de 'count' ori) o ri) REVERSE (inverseaza un sir) INSERT(str,pos,len,newstr)  mysq sqll > se sell ect i nse serr t ( ‘ mysql sql f unct i ons’ , 6, 2, ’ FU’ ) ; + + | i nser ser t ( ‘ mysql sql f unct i ons’ , 6, 6, 2, ’ FU’ ) | + + | mysql ysql FUn FUnct i ons | + + 1 r ow i n set ( 0. 44 sec) FIELD(str,str1,str2,str3,...) (pozitia str in cadrul argumentelor) LCASE  (lo  (lowercase) wercase) UCASE (upp  (uppercase ercase)) LOAD_FILE (continutul unui fiser ca sir Functii pentru data calendaristica si timp   DAYOFWEEK  mysql ysql > sel ect dayo ayof week( eek( ‘ 2001- 01- 01’ ) ; + + | dayof yof week( ‘ 2001- 01- 01’ ) | | 2 | 1 r ow i n set ( 0. 33 sec)

WEEKDAY  DAYOFMONTH  DAYOFYEAR  MONTHNAME  QUARTER (semestrul din care face parte data) WEEK(date [, first]) (first=0-saptamana incepe duminica, first=1-saptamana incepe luni) YEAR  YEARWEEK (anul si saptamana in format YYYYWW) HOUR  MINUTE  SECOND  PERIOD_ADD(P,N) (adauga N luni la perioda P) PERIOD_DIFF(P1,P2)  DATE_ADD  DATE_SUB(date,INTERVAL expr type)  TO_DAYS  FROM_DAYS  DATE_FORMAT  Spe peci ci f i cat or i pent ent r u DATE_FO TE_FOR RMAT %M Luna ( J anuar y ÷Decem cember ) %W Zi ua ( Sunday÷ Sat ur da day) %D Numar ul zi l ei ( 1st , 2nd, 3r d, et c. )

 

35

 

%Y %y %a %d %e %m %c %b %j %H %k %h %I %l %i %r %T %S %s %p %w %U %u %V %v %X

Anul AAAA Anul AA Numel e abr evi at al zi l ei ( Sun. . Sat ) Numar ul zi l ei l uni i ( 00. . 31) Numar ul zi l ei l uni i ( 0. . 31) Numar ul ul l uni i ( 0 01 1. . 12) Numar ul l uni i ( 1. . 12) Numel e l uni i ( J an. . Dec) ec) Numar ul zi l ei i n an( 001. . 366) Or a ( 00. 00. . 23) 23) Or a ( 0. . 23) Or a ( 01. . 12) Or a ( 01. . 12) Or a ( 1. . 12) Mi nut el e( 00. . 59) Ti mpul , 12- or e ( hh: hh: mm: ss [ AP] M) Ti mpul pul , 2424- or e ( hh: hh: mm: ss ) Secun Secund del e( 00. 00. . 59) Secund ecundel el e ( 00. . 59) AM s au PM Zi ua sapt amani ani i ( 0=Sund Sunday. ay. . 6=Sat Sat ur day) day) Sapt Sapt amana ( 0. . 53) 53) Sapt Sapt amana ( 0. . 53) 53) Sapt Sapt amana ( 1. . 53) 53) Sapt Sapt amana ( 1. . 53) 53) Anul Anul pent r u s apt amana

%% x Aa nul pen t lr u%s apt amana C r ac tpent er er u Exemplu:  mysql ysql > sel ect dat e_f ormat ( ‘ 2001- 01- 01’ , | dat e_f ormat ( ‘ 2001- 01- 01’ , ‘ %W %M | Monda onday y J anua anuarr y 01, 2001 2001 1 r ow i n set ( 0. 00 sec)

‘ %W %M %d, %Y’ ) ;

%d, %Y’ ) | |

TIME_FORMAT  CURDATE  CURTIME  NOW (data si ora curenta YYYY-MM-DD HH:MM:SS) Alte functii diverse  Database  (numele bazeiului de curent) date curente) User (numele u tilizatorului tilizator cu rent) VERSION (versiunea MySQL) LAST_INSERT_ID (ultima valoare inserata intr-un camp 'auto_increment')

Sintaxa completa a celor mai folosite comenzi MySQL SELECT  SELECT SELEC T [ STRA STRAI GHT_J T_ J OI N] [ SQL_ SMALL_ LL _ RE RESU SULT] LT] [ SQL_ BI G_ RESULT] [ SQL_ BUFFER_ FFER_ RESULT] [ HI GH_PRI _PRI ORI TY] TY] [ DI STI STI NCT | DI STI NCTR TRO OW | ALL]

 

36

 

sel sel ect_ ex expr essi essi on, . . . [ I NTO {OUTFI TFI LE | DUMPFI LE} LE} ' f i l e_na e_name' exp expor t _opt _opt i ons] ons] [ FRO FROM t abl e_r ef er ences ces [ WHERE wher her e_def e_def i ni t i on] on] [ GROUP BY BY {u {unsi gned_i ed_i nt eger eger | col _nam _name | f or mul a} [ ASC | DESC] , . . . ] [ HAVI NG wher e_def e_def i ni t i on] on] [ ORDER BY {u {unsi gned_i ed_i nt ege eger | co coll _nam _name | f ormul a} [ ASC | DESC] SC] , . . . ] [ LI MI T [ of f set set , ] r ows] [ PROCEDU EDURE pr oc ocedur edur e_ e_nam name] [ FOR FOR UPD UPDATE ATE | L OCK I N SHAR SHARE E MODE] ]

INSERT  I NSER SERT [ LOW LOW_ PRI ORI TY | DELAYED ELAYED] [ I GNORE] RE] [ I NTO] t bl _n _na ame [ ( col col _n _na ame, . . . ) ] VAL UES ( ex e xpr es es si si on, . . . ) , ( . . . ) , . . . s au I NSERT SERT [ LOW LOW_ PR PRII ORI TY | DELAYED ELAYED] [ I GNORE] [ I NTO] t bl _n _na ame [ ( col col _n _na ame, . . . ) ] SELEC LECT . . . s au I NSERT SERT [ LOW LOW_ PR PRII ORI TY | DELAYED ELAYED] [ I GNORE] [ I NTO] t bl _name SET col _name=exp expr essi on, on, col _nam _name=expr expr essi on, on, . . .

ALTER TABLE  ALTE LTER [ I GNORE] TABLE t bl _nam _name al al t er _spec _spec [ , al t er _spec _spec . . . ] al t er _ s pe peci f i c at at i on: ADD [ COLU LUM MN] cr eat eat e_def i ni t i on [ FI RST | AFTER FTER col umn_nam n_name ] sa sau u ADD [ COLUM LUMN] ( creat creat e_d _de ef i ni t i on, cr eat e_d _de ef i ni t i on, . . . ) sau ADD I NDEX [ i ndex_na dex_nam me] ( i nd ndex ex_col _col _name, . . . ) sau ADD PRI PRI MARY KEY ( i ndex_col dex_col _name, . . . ) sau ADD UNI QUE [ i nd ndex ex_nam _name] ( i ndex_c ex_c ol _ name, . . . ) sau ADD FULLTE FULLTEX XT [ i ndex_na dex_nam me] ( i nd ndex_col ex_col _name, . . . ) sau ADD [ CONSTRA STRAI NT symbol bol ] FOREI GN KEY KEY i ndex_nam ndex_name ( i ndex_c ndex_col ol _ nam name, . . . ) [ r ef erence rence_d _de ef i ni t i on] s au ALTER [ COLU LUM MN] col c ol _ name {SET {SET DEFAU EFAULT l i t er al | DROP DEFA EFAU ULT} sau CHANGE [ COLUM LUMN] ol d_col _name cr eat e_def i ni t i on sau MODI FY [ COLUM LUMN] cr eat eat e_def e_def i ni t i on s au DROP [ COLUMN] c ol _ name s au DROP PRI MARY ARY KEY s au DROP I NDEX i ndex_ name s au DI SABLE SABLE KEYS KEYS s au ENAB ENABL L E KEYS s au RENAM ENAME [ TO] new_ t bl _ name s au ORDER BY c ol sau t ab abll e_op e_opt i ons ons

UPDATE   UPDA PDATE [ LOW LOW_ PRI ORI TY] [ I GNORE] t bl _ name SET SET col _name1= e1=exp expr 1, [ col _name2= e2=exp expr 2, . . . ] [ WHERE ERE wher e_def e_def i ni t i on] on] [ LI MI T #]

 

37

 

LOAD DATA INFILE  LOA LO AD DATA [ LOW LOW_PRI ORI TY | CONCURRENT] [ LOC LOCAL] I NFI LE ' f i l e_nam e_name. t xt ' [ REPLAC EPLACE | I GNORE] I NTO TAB TABLE t bl _ name [ FI EL ELD DS [ TER ERM MI NATED TED BY ' \ t ' ] [ [ OPTI PTI ONALLY] ENCLOSE LOSED D BY ' ' ] [ ESCAPED PED BY ' \ \ ' ] ] [ LI NES TE TERMI NATED TED BY ' \ n' ] [ I GNORE number LI NES] [ ( col _ na name, . . . ) ]

DELETE   DELETE ELETE [ LOW LOW_ PR PRII ORI TY | QUI CK] FR FRO OM t abl e_name [ WHERE ERE wher e_def e_def i ni t i on] on] [ ORDER BY . . . ] [ LI MI T rows] sau DELE LETE TE [ LOW_PRI _PRI ORI TY | QUI CK] t abl abl e_nam e_name[ . *] [ t abl abl e_n e_nam ame[ . *] . . . ] FRO FROM t ab abll e- r ef er ence ces s [ WHERE wher e_def e_def i ni t i on]

CREATE INDEX  CREATE [ UNI QUE| FULLTE FULLTEX XT] I NDEX i ndex_nam ex_name ON ON t bl _nam _name ( col _name[ ( l eng engt h) ] , . . . )

CREATE TABLE  CREATE [ TEM TEMPORARY] TAB TABLE [ I F NO NOT EX EXI STS] TS] t bl _nam _name [ ( cr eat eat e_de e_def i ni t i on, on, . . . ) ] [ t abl e_o _op pt i ons] [ se sell ect _st at ement ] cr ea eat e_ de def i ni t i on: col _ name t ype [ NOT NU NULL | NULL] [ DEFAU EFAULT def aul t _ val ue] [ AUTO_ I NCREMEN ENT] T] [ PRI PRI MARY KE KEY] [ r ef er ence_d ce_de ef i ni t i on] sau PR PRII MARY KEY ( i ndex_col ex_col _nam _name, . . . ) sau KEY [ i nde dex_n x_nam ame] ( i ndex_col ex_col _nam _name, . . . ) sau I NDEX [ i ndex_na ex_nam me] ( i ndex_col ex_col _nam _name, . . . ) sau UNI QUE [ I NDEX] [ i ndex_na ex_nam me] ( i nde dex_co x_coll _nam _name, . . . ) sau FU FULLT LLTE EXT [ I NDEX] [ i ndex_na ex_nam me] ( i ndex_col ex_col _nam _name, . . . ) sau [ CONSTR STRAI NT symbol bol ] FOREI GN KE KEY Y i ndex ndex__ nam name ( i ndex_col ndex_col _name, . . . ) [ r ef erence rence_d _de ef i ni t i on] sau CHECK ECK ( expr expr ) t ype: sau sau sau sau sau sau sau sau sau sau

 

 TI NYI NT[ ( l engt engt h) ] [ UNSI GNED] [ ZERO EROFI LL] SMALLI NT[ ( l engt engt h) ] [ UNSI GNED] [ ZEROFI LL] MEDI UMI NT[ ( l engt engt h) ] [ UNSI GNED] [ ZERO EROFI LL] I NT[ ( l eng engt h) ] [ UNSI GNED] [ ZEROFI LL] I NTEG TEGER[ ( l eng engt h) ] [ UNSI GNED] [ ZERO EROFI LL] BI GI NT[ ( l eng engt h) ] [ UNSI GNED] [ ZEROFI LL] REAL[ EAL[ ( l eng engt h, de deci ci mal s) ] [ UNSI GNED] [ ZEROFI LL] DOUBLE[ ( l eng engt h, deci mal s) ] [ UNSI GNED] [ ZEROFI LL] FLOAT[ ( l engt engt h, deci mal s) ] [ UNSI GNED] [ ZEROFI LL] DECI ECI MAL( l eng engt h, deci mal s) [ UNSI GNED] [ ZEROFI LL] NUMERI ERI C( l engt engt h, deci deci mal s) [ UNSI GNED] [ ZERO EROFI LL]

38

 

sau sau sau s au s au s au s au sau s au

CHAR( l eng engt h) [ BI NARY] VARCHAR( l engt engt h) [ BI NARY] DATE TI TI ME TI MESTAMP DATETI ME TI NYBLOB BLOB MEDI UMBLO BLOB

s au sau s au sau sau sa sau u

LONYTEXT GBLO BLOT B TI YTEX TEXT MEDI EDI UMTEXT LONGTEXT ENUM( val ue1, val val ue2, e2, val val ue3, . . . ) SE SET( va vall ue1, val ue2, val ue3, . . . )

i nd ndex ex_col _col _nam _name: co coll _n _nam ame [ ( l engt h) ] r ef er ence_d ce_de ef i ni t i on: REFER FERENCES t bl _nam _name [ ( i ndex_col _nam _name, . . . ) ] [ MATCH ATCH FU FULL LL | MATCH ATCH PARTI PARTI AL] [ ON DELET LETE E r ef er ence_op ence_optt i on] on] [ ON UPD PDA ATE r ef er ence_opt ence_opt i on] on] r ef er ence_op ce _opt t Ii C oT n: | CAS RESTRI ESTR ASC CADE | SET NU NULL | NO ACTI ACTI ON | SET DEFAU DEFAUL LT t abl e_o _op pt i ons:  TYPE = {BD {BDB | HEAP EAP | I SAM SAM | I nnoD nnoDB B | MERG ERGE | MYI SAM SAM } s au AUTO AUTO__ I NCREM CREMENT ENT = # s au AVG_ AVG_ ROW ROW_ LENGTH ENGTH = # s au CHECKSU ECKSUM M = {0 | 1} s au COMMENT ENT = " s t r i ng" s au MAX_ ROWS = # s au MI N_ ROWS = # s au PACK_ PACK_KEYS KEYS = {0 | 1} s au PASSW PASSWORD = " s t r i ng" s au DELAY_KEY_W ELAY_ KEY_WRI TE = {0 | 1} sau ROW_ FOR FORMAT= { def def aul aul t | dyna dynam mi c | f i xed | compr ess ed } s au RAI RAI D_ TYPE= {1 | STRI STRI PED | RAI RAI D0 } RAI RAI D_ CHUNKS=# RAI D_ CHUNKSI ZE=# sau UNI ON = ( t abl abl e_nam e_name, [ t abl abl e_nam e_name. . . ] ) s au sau

D ATA A DD I IRE REC CTOR TO RR Y= " "didir rect auy" I AT NDEX RECTO EC TO Y= ects sauy"

se sell ect _st at ement ent : [ I GNORE | REPLAC PLACE] SELEC SELECT T ...

( Some l egal egal sel ect s t at ement ent )

CREATE DATABASE  CREATE REATE DATA DATAB BASE [ I F NO NOT EXI STS] db_nam db_ name

DROP DATABASE  DROP DA DATABAS TABASE E [ I F EXI EXI STS] db_name

DROP INDEX 

 

39

 

DROP I NDEX i ndex_ name ON ON t bl _ name

DROP TABLE  DROP TA TABLE [ I F EX EXI STS] TS] t bl _name [ , t bl _name, . . . ] [ RESTR STRI CT | CASCADE]

RENAME TABLE  RENA ENAME TAB TABLE t bl _ nam name TO new_ t abl e_name[ , t bl _ name2 TO TO new_ t abl e_name2, e2, . . . ]

JOIN  t abl e_r ef er ence, ce, t abl e_r ef er ence t ab abll e_ref er ence [ CROSS] J OI N t abl e_r ef er ence ence t ab abll e_ref er ence I NNER J OI N t ab abll e_ref er ence t abl abl e_r ef er ence ST STR RAI GHT_J OI N t abl abl e_r ef er ence t abl abl e_r ef er ence LE LEFT FT [ OUTER TER] J OI N t abl abl e_r ef er ence ence ON cond condi t i ona nall _expr _expr t ab abll e_ref er ence LEFT LEFT [ OUTER] J OI N t abl e_r ef erence erence US USI NG ( co coll umn_l i st ) t abl abl e_r ef er ence ence NA NATUR TURAL LEFT LEFT [ OUTER TER] J OI N t abl abl e_r ef er ence ence { oj t abl e_r ef er ence ence LE LEFT FT OUTER TER J OI N t abl e_r ef er ence ence ON co cond ndii t i ona onal _expr _expr }

 

40

 

 Ad min n is t r ar area ea MySQL My SQL  A d mi

 



 



 



 



 



 



Administrarea utilizatorilor   accesului  Controlul accesului  Comezile GRANT si REVOKE  REVOKE  Backup-ul bazelor de date Securitatea datelor Optimizarea MySQL  MySQL 

Administrarea oricarui sistem de gestiune a bazelor de date relationale (SGBDR) necesita pu putina tina munca. Fiecare sistem are are propriile prop riile metode pentru administrare administrare si propriile dificultati cand vine vo vorba rba de adaugarea si stergerea de conturi ale u tilizatorilor, backup si asigurarea securitatii. Administarea serverului MySQL nu este e ste dificila per ansamblu, dar poate speria la inceput.

Administrarea utilizatorilor Tabelele de grant  Tabelele Drepturile utilizatorilor MySQL sunt stocate in cateva tabele care sunt create automat la instalarea MySQL. Aceste tabele apartin bazei de date mys ql :

   

 

mys ysql ql > use us e mys ysql ql Dat abase c hanged hanged mysql > show t abl abl es; +- - - - - - - - - - - - - - - - - - - + | Tabl abl es i n mysq sqll | +- - - - - - - - - - - - - - - - - - - + | col col umns_pr s_pr i v | | db | | f unc | | hos t | | t a bl bl es _p _pr i v | | user ser | +- - - - - - - - - - - - - - - - - - - + 6 r ows i n se sett ( 0. 00 sec)

Fiecare dintre aceste tabele corespunde corespunde controlului unu unuii nivel de acces. Poti crea un oricati u utili tilizatori zatori care  pot accesa MySQL de pe diferite gazde. Pentru Pentru fiecare combinatie combinatie utilizator/gazda, utilizator/gazda, acorzi acces la o intreaga baza de data, la anumite tabele, sau la anumite coloane dintr-o d intr-o tabele. Aditional, aceste tabele acorda privilegii de administrare. Utilizatorilor Utilizatorilor le po poate ate fi dat dreptul de a adauga/sterge baze de d ate sau de a acorda altor utilizatori drepturi de administare ad ministare.. In practica, nu ar trebui sa s a acorzi mai multe drepturi decat e necesar pentru a p proteja roteja datele de curiosi sau de incompetenti. Pentru asta trebuie sa stii ca drepturile sunt acordate intr-un mod ierarhic . Cele acordate pe tabela user sunt universale: un iversale: daca un utilizator are privilegiu de stergere(drop) in tabelauser ,

 

41

 

acesta poate sterge orice tabela din rocie baza de date din MySQL. M ySQL. Tabela db acorda privilegii asupra unei intregi baze de date. Pentru o tabela/s t abela/set et de tabele foloseste tables_priv. Tabela columns_priv  acorda drepturi asupra unor anumite colobne dintr-o d intr-o tabela. Tabela user  Orice utilizator care vrea sa lucreze in MySQL trebuie sa fie inscris in acesta tabela. Drepturile pot fi acordate in alta parte, dar fara o inscriere aici, utilizatorului nu i se va permite conectarea la server. mysql > s how how col umns f r om user ; +- - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - +- - - - - - - ++- - - - - - - ++- - - - - - - - - - - ++- - - - - - - + | Fi el d | Type | Nul l | Key | Def aul t | Ext r a | +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | Hos t | c ha har ( 60) | | PRI | | | | Us er er | c ha har ( 16) | | PRI | | | | Passwor d | cha char ( 16) | | | | | | Sel ect _ pr pr i v | enum( ‘ N’ , ’ Y’ ) | | | N | | | I ns er er t _ pr pr i v | enum( ‘ N’ , ’ Y’ ) | | | N | | | Updat e_pr _pr i v | enum( ‘ N’ , ’ Y’ ) | | | N | | | Del et e_ pr pr i v | enum( ‘ N’ , ’ Y’ ) | | | N | | | Cr eat eat e_ pr pr i v | enum( ‘ N’ , ’ Y’ ) | | | N | | | Dr o p_ p_ pr pr i v | enum( ‘ N’ , ’ Y’ ) | | | N | | | Rel oad_ pr pr i v | enum( ‘ N’ , ’ Y’ ) | | | N | | | Shut down_p _prr i v | enum( ‘ N’ , ’ Y’ ) | | | N | | | Pr o ce cess_p ss_pr i v | enum( ‘ N’ , ’ Y’ ) | | | N | | | F le prpr | enum( ‘ N’ , ’ Y’ ) | | | N | Gri a nt n_t _pr pir ivv | Ref erence rences_p s_pri ri v | enum( ‘ N’ , ’ Y’ ) | | | N | | I ndex_ pr pr i v | enum( ‘ N’ , ’ Y’ ) | | | N | | Al t er _ pr pr i v | enum( ‘ N’ , ’ Y’ ) | | | N | +- - - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - +- - - - - - - ++- - - - - - - ++- - - - - - - - - - - ++- - - - - 17 r ows i n set ( 0. 00 sec)

| | | | -+

MySQL identifica un utilizator dupa combinatia user- host . Prin urmare, un utilizator poate avea cate un set de drepturi diferite pentru fiecare gazda (host) pe care o foloseste pentru a se conecta la MySQL. Drepturile setate pe Y (yes) sunt acodate pentru toate tabele din orice o rice baza de date. Alte drepturi: pr i v acorda dreptul de a scrie si citi fisiere de pe disc. - Fi l e_ pr - pr ocess_p cess_prr i v acorda dreptul de a vedea si de a termina termin a toate comenzile si threrad-rile threrad-rile in cu curs rs de executie(poti vedea ce fac si ce tasteaza ceilalti utilizatori !!). !!). _prr i v  da dreptul de a putea acorda mai departe privilegiile proprii altor utilizatori. - Gr ant _p _prr i v e folosit, in special pentru a face comenzi f l us h  - Rel oad_p - Shut Shut dow down_pr i v  da dreptul de a opri server-ul folosind mys ysql ql admi n s hut down.

Tabela db  mysql > show col umns f r om db; db; +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | Fi el d | Type | Nul l | Key | Def aul t | Ext ra | +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | Hos t | c ha har ( 60) | | PRI | | | | Db | cha char ( 32) | | PRI | | | | Us er er | c ha har ( 16 16) | | PRI | | | | Sel ect _ pr pr i v | enum( ‘ N’ , ’ Y’ ) | | | N | | | I ns er er t _ pr pr i v | enum( ‘ N’ , ’ Y’ ) | | | N | | | Updat e_pr _pr i v | enum( ‘ N’ , ’ Y’ ) | | | N | | | Del et e_ pr pr i v | enum( ‘ N’ , ’ Y’ ) | | | N | |

 

42

 

| Cr eat eat e_ pr pr i v | enum( ‘ N’ , ’ Y’ ) | | | | Dr o p_ p_ pr pr i v | enum( ‘ N’ , ’ Y’ ) | | | | Gr a nt nt _ pr pr i v | enum( ‘ N’ , ’ Y’ ) | | | | Ref erence rences_p s_pri ri v | enum( ‘ N’ , ’ Y’ ) | | | | I ndex_ pr pr i v | enum( ‘ N’ , ’ Y’ ) | | | | Al t er _ pr pr i v | enum( ‘ N’ , ’ Y’ ) | | | +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 13 r ows i n set ( 0. 01 sec)

N | | N | | N | | N | | N | | N | | ------ ------ -----+

Drepturile specificate specificate aici merg doar pentru b aza de date specificate specificate in coloana coloan a db_ db_ col umn. Tabelele tables_priv si columns_priv   Ofera drepturi asupra unei tabele sau asupra unor coloane co loane dintr-o tabela. mysq sqll > sh sho ow col col umns f r om t abl es_pr s_pr i v; +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | Fi el d | Type | Nul l | Key | Def aul t | Ext r a | +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | Hos t | c har ( 60) | | PRI | | | | Db | cha char ( 60) | | PRI | | | | Us er er | c har ( 16) | | PRI | | | | Tabl e_n _na ame | cha char ( 60) | | PRI | | | | Gr ant or | cha char ( 77) | | MUL | | | | Ti mest amp | t i mest amp( 14) | YES YES | | NULL | | | Tabl e_ pr pr i v | s et et ( ‘ Sel ec t ’ , ’ I ns er er t ’ , ’ Updat e’ e’ , | | | | ‘ Del et e’ , ’ Cr ea eat e’ , ’ Dr op op’ , ’ Gr an ant ’ , | | | | ‘ Ref er en enc es ’ , ’ I ndex’ , ’ Al t er er ’ ) | | | | | | | | | | Col umn_ pr pr i v | s et et ( ‘ Sel ec t ’ , ’ I ns er er t ’ , | | | | | ‘ Updat e’ , ’ Ref er ences’ ces’ ) | | | +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + 8 r ows i n set ( 0. 00 sec)

Controlul accesului MySQL foloseste tabelele de privilegii pentru a determina ce are si ce nu are un utilizator dreptul sa faca in doi pasi: 1.  Verificarea Verificarea conexiunii: MySQL verifica daca ai voie sa te conectezi la server bazandu-se pe numele de utilizator (blank insemna orice o rice utilizator), utilizator), numele de gazda si pe parola. Pentru numele gazdei poti folosi caracterul wildcard '%' ca semnificand orice gazda. 2.  Verificar Verificarea ea cererii: MySQL verifica ve rifica in toate tabele de drepturi d repturi daca ai drepturile d repturile necesare pentru a obtine informatiile dorite.

Comenzile GRANT si REVOKE Tabele descrise mai sus sunt tabele normale MySQl si pot fi modificate cu comenzile invatate. De exemplu, pentru a crea un nou no u utilizator: I NSERT I NTO use serr ( Host , User ser , Passwor d, Sel ec ectt _p _prr i v, I nse serr t _p _prr i v, Updat e_p _prr i v, Del et e_p _prr i v, Cr Cr eate_pr ate_pr i v, Dr op_p _prr i v, R Re el oa oad d_p _prr i v, Shut down_p _prr i v, Pr oc oce ess_pr ss_pr i v, Fi l e_pri _pri v, Gr ant _pr _pr i v, Ref er ences_p ces_prr i v, I ndex_p _prr i v, Al t er _p _prr i v) VALUES ( ‘ l ocal cal host ’ , ‘ j uan’ , ‘ pas s wor d d’’ , ‘ N’ , ‘ N’ , ‘ N’ , ‘ N’ , ‘ N’ , ‘ N’ , ‘ N’ , ‘ N’ , ‘ N’ , ‘ N’ , ‘ N’ , ‘ N’ , ‘ N’ ,

 

43

 

‘ N’ )  

 Nu este insa ce si-ar si-ar dori sa fac fac administratorul de fiecare fiecare data. Din fericire, fericire, MySQL ofera cateva comenzi care fac lucrul cu utilizatorii mult mai usor:

GRANT GRANT pr i vi l egi i [ col col oane] ON obi obi ect  TO ut i l i zat or [ I DENTI FI ED BY ‘ parol par ol a’ ] [ WI TH GRAN RANT OPTI OPTI ON]

Niveluri de drepturi 

grant all on *.* Acorda drepturi universale grant all on database.* Acorda drepturi asupra tuturor tabelelor din baza de date grant all on database.table_name Drepturi pentru o singura tabela grant all(col1, col2) on database.ta d atabase.table_name ble_name Drepturi pentru anumite coloane dintr-o tabela mysql ysql > gr ant al l on guest book. * t o i on@l oca ocal host i dent i f i ed by “pa “par ol a1”;   Prima parte a comenzii poate fi al l  sau alta optiune din tabela user . Partea a doua a comenzii (on guest guest book book) arata unde se vo r aplica drepturile (vezi tabelul de mai sus). Partea a treia arata arata cui cu i i se acorda

drepturile (utilizator@gazda), (utilizator@gazda), iar ultima parte p arte arata parola cu care este identificat utilizatorul. gr ant sel ect , updat e, i nsert on guest book2k. k2k. guest book t o adi @l oca call host i dent ent i f i ed by “p “pa ar ol a2”;

Acesta comanda permite lui adi sa vada, sa modifice, mod ifice, sa actualizeze si sa insereze inregistrari in tabela 'guestbook' din baza de date 'guestbook2k'. gr ant ant sel ect , updat dat e ( num nume, emai l ) on guest book2 book2k. k. guest bo book ok t o moni oni ca@l ocal ocal host i dent ent i f i ed by “Mel 12068”;  

Monica poate vedea si actualiza doar campurile 'nume' si 'email'. gr ant al l on *. * t o mar i us@l oca ocal host i dent i f i ed by “xxx4 “xxx45 56”;  

Marius are drepturi depline (poate chiar acorda privilegii altor utilizatori).

 REVOKE Daca vrei sa anulezi drepturile acordate unui utilizator poti folosi comanda REVOKE: REVOKE pr i vi l egi i [ ( col col oane) ] ON i t em FROM ut i l i z at at or r evok evoke e S Shu hutt dow down on *. * f r om cosmi n@l ocal ocal host ;  revoca dreptul de shutdown al lui Comanda Cosmin. Daca vrei sa stergi un u tilizator de tot trebuie sa-l stergi din tabela 'user': del et e f r om user wher e user =’ user ’ and and host =’ host ’  

Afisarea drepturilor  Din versiunea 3.23.4 MySQL a introdus comanda show gr ant s  care permite pe rmite vizualizarea drepturilor acordate la un moment dat: mysql > show show gr ant ant s f or j ayg ayg@l ocal ocal host ; +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | Gr ant s f or i on@l ocal cal host +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | GRANT ALL PRI PRI VI LE LEG GES ON t est ul 1. * TO ‘ i on’ @’ l ocal ocal host ’ +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 r ow i n set ( 0. 00 sec)

 

+ | + | +

44

 

Reincarcarea drepturilor  MySQL citeste automat tabelele de privilegii cand e pornit si cand c and sunt date comenzi GRANT sau REVOKE. Modificarile facute manual tabelelor de drepturi nu iau efect decat daca se restarteaza MySQL. MySQL. Ca sa functioneze aceste modificari modificari reincarca tabelele: f l ush pr i vi l eges   sau mysql ysql admi n f l ush sh-- pr i vi l eges  sau mysql adm admi n r el oad oad 

Backup-ul bazelor de date Pentru a face un backup complet al bazelor de date: mysql ysql > mysql ysql dump - - t ab=/ cal e/ di r ect or - - op optt - - f ul l  

sau mysql > mysql hot copy copy dat dat abase abase / pat h/ di r ect or  

Poti, de asemenea copia toate fisierele tabelelor (`*.frm', (`*.frm', `*.MYD', and an d `*.MYI' files) cat timp serverul nu actualizeaza nimic. Poti face face si backup-uri b ackup-uri selective cu SELECT * INTO OUTFILE 'nu 'nume_fisier' me_fisier' FROM nume_tabela si sa restaurezi datele cu LOAD DATA INFILE 'nume_fisier' REPLACE ... Pentru Pent ru a evita inregistrarile inregistrari le duplicat dup licat (inregistrarile (inregistrarile noi le inlociesc pe cele mai vechi daca sunt identice in cazul c azul comenzii REPLACE) ai nevoie de o cheie primara sau de o cheie unica.

Securitatea in MySQL Securitatea e foarte foarte importanta, in special cand cand vei conecta baza b aza ta de date MySQL la site-ul Web. Cand rulezi MySQL ia in considerare urmatoarele sfaturi: sfaturi:  



 



 



 



 



 



 



 

 Nu da nimanui acces la tabela tabela user  !  ! Invata sistemul de privilegii al MySQL ! Tasteaza mysql - u r oot oot . Daca te poti po ti conecta fara sa ti instalare cum  cum se poate pune se ceara o parola, oricine poate face acelasi lucru. Vezi, in pagina p agina de instalare  parola de root pe sever.  Nu folosi parole din dictionar deoarece deoarece exista programe programe care le pot sparge! Foloseste initialele initialele cuvintelor dintr-o propozitie (de exemplu aaum 'Ana are un miel' ) sau combinatii de pe tastatura t astatura (in loc de stefan-dyrgsm, adica o litera spre dreapta de pe tastatura) t astatura).. Investeste intr-un firewall. firewall. Foloseste parole pentru toti utilizatorii MySQL si ai grija in ce fisiere script le memorezi. Poti cripta parolele cu functiile PAS PASSW SWORD( RD( )  sau MD5( ) . La conectarea pe Web, ar trebui sa creezi un utilizator u tilizator special numai pentru Web (de exemplu, sa aiba doar drepturi de SELECT pe tabela cu p produse roduse si de INSERT pe tabela cu comenzile facute). Daca utilizatorii care folosesc formularele de pe Web tasteaza date confidentiale, trebuie sa folosesti SSL (Secure Socket Layer) pentru ca altfel datele vor fi transmise spre server in fomatul text.

45

 

Optimizarea MySQL  



Optimizeaza tabele care pot deveni fragmentate dupa multe actualizari si modificari cu OPTI MI ZE  TAB  TA BLE num nume_t abel abel a 

 



 



 



 



 



 



 

Alege cel mai potrivit si cel mai m ai scurt tip de date pentru campurile din tabele. Foloseste indecsi cand sunt necesari ne cesari pentru a face interogarile mai rapide. Foloseste valori implicite in comanda INSERT Invata sa folosesti comanda EXPLAIN SELECT.. care arata ce se va intampla in cazul unei interogari.  Nu uita ca privilegiile sunt citite la fiecare fiecare interogare. interogare. Deci, simplifica cat mai mult privilegiile acordate.  Nu uita ca exista mai multe tipuri de tabele care care pot fi create cu CREATE REATE T TAB ABL L E nume TYPE=t TYPE=t i p  (MyISAM-implicit, HEAP-temporar, HEAP-temporar, BDB-sigure B DB-sigure pentru tranzactii). tranzactii).

46

 

Configurarea MySQL

   





 



 



 



 



 



Schimbarea setului de caractere caractere   Mesaje de eroare in romana  romana  MySQL  Utilitarele MySQL  mysql  mysql  mysqladmin   mysqladmin mysqldump mysqldump   mysqlimport  mysqlimport 

Schimbarea setului de caractere   Implicit, MySQL foloseste setul de caractere ISO-8859-1 ISO-8859-1 Latin1 cu sortarea in orinea limbii suedeze. Pentru a schimba acest set implicit de caractere, foloseste comanda: mysql ysql > . / conf conf i gur e - - wi t h- ch char ar set =CHARSET  unde CHARSET poate fi big5, cp1251, cp1257, czech, danish, dec8, dos, euc_kr, gb2312, gbk, german1, hebrew, hp8, hungarian, koi8_ru, koi8_ukr, latin1, latin2, sjis, swe7, tis620, ujis, usa7, or win1251ukr.

Pentru a adauga un nou set de caractere decide daca setul e unul simplu sau complex (are nevoie de sau nu de suport multi-byte) mu lti-byte) si: I.Set simplu: 1.  Adauga SETUL la l a sfarasitul fisierului `sql/share/charsets/Index' `sql/share/charsets/Index' si atribuie-i un n numar. umar. 2.  Creaza un fisier `sql/share/charsets/SETUL.conf'. `sql/share/charsets/SETUL.conf'. (Foloseste ca model `sql/share/charsets/latin1.conf'). 3.  Adauga numele 'SETUL' la listele CHARSETS_AVAILABLE and COMPILED_CHARSETS din 'configure.in'. II.Set complex: 1.  Creaza fisierul `strings/ctype-SETUL.c'. `strings/ctype-SETUL.c'. 2.  Adauga SETUL la l a sfarasitul fisierului `sql/share/charsets/Index' `sql/share/charsets/Index' si atribuie-i un numar. 3.  Plaseaza un comentariu in partea de sus a fisierului cr creat eat la 1. : 4.   5.   6.   7.   8.  

/* * * * * */

Thii s comment Th ent i s par par sed by con conf i gur e t o cr eat eat e ct ype ype. c . c onf i gur e. number _ MYSET=MYNU YNUMBER . conf conf i gur e. s t r xf r m_mul t i pl y_MYSE YSET=N . conf i gur e. mbmaxl en_MYSET= YSET=N<

9.  Creaza urmatoarele functii: my_strncoll_MYSET() my_ strncoll_MYSET(),, my_strcoll_MYSET() m y_strcoll_MYSET(),, my_strxfrm_MYSET(), my_like_range_MYSET() my_ like_range_MYSET().. 10. Adauga numele 'SETUL' la listele CHARSETS_AVAILABLE and COMPILED_CHARSETS din 'configure.in'.

 

47

 

Mesaje de eroare in alte limbi  mysqld poatge da mesaje de eroare in urmatoarele limbi: ceha, daneza, engleza (implicit) (implicit),, estoniana, franceza, germana, greaca, italiana, japoneza, koreana, maghiara, norvegiana, norvegiana-ny, olandeza,  poloneza, portugheza, romana, rusa, rusa, slovaca, spaniola si ssuedeza. uedeza.

Pentru a porni mysql in limba romana: shel l > mysql d - - l angu anguag age= e=r omani ani an 

sau sh she el l > mysql ysql d - - l anguage=/ usr / l oca ocal / sh sha ar e/ r omani an 

Pentru a actualiza fisierul cu mesaje mesaje de eroare, modifica `errmsg.txt' `errmsg.txt' si executa: sh she el l > co com mp_err err msg sg.. t xt er r msg. sys 

Utilitarele MySQL Sunt niste programe-client care se folosesc pentru a construi, configura si intretine bazele de date. myisamchk  Descrie, verifica si optimizea op timizeaza za tabele. make_binary_release   Face un pachet binar cu dstrubutia d strubutia MySQL. msql2mysql  Converteste programe mSQL in MySQL. mysql  mysqlaccess  Verifica privilegii de acces pentru o combinatie de gazd gazda-utilizat a-utilizator-baza or-baza de date. d ate. mysqladmin  mysqlbug Genereaza un raport cu defectge (bugs) gasite in MySQL. M ySQL. mysqld Daemon-ul SQL. mysqldump  mysqlimport  mysqlshow  Afiseaza informatii informatii despre baze b aze de date, tabele, coloane, indecsi. mysql_install_db  Creaza tabelele de privilegii. replace  Program utilitar care inlocuieste un sir de caractere cu al sir dintr-un anumit fisier. she shel l > r epl ace a b b a - - f i si er 1 f i si er 2 . . .   safe_mysqld 

Porneste daemon-ul mysqld cu unele optiuni op tiuni de siguranta.

mysql.exe Este interfata in linie de comanda a MySQL-ului si-ti permite sa rulezi comenzi SQL sau comenzi

 

48

 

specifice MySQL. Sintaxa este: mysql ysql [ opt opt i ons] [ dat abase na name] [ <i nput f i l e] [ >out put f i l e]   Tasteaza hel p pentru a vedea v edea unele facilitati ale ale mysql: hel p ( \ h) Af i sea seaza acest cest t ext ? ( \ h) Si noni m pent r u ‘ hel p’ cl ear ( \ c) "C "Cu ur at a" ecranu cranul con connect ( \ r ) Recon conect ar e l a se serr ver ver edi edi t ( \ e) Comanda anda edi edi t cu $EDI TOR exi t ( \ q) I esi r e di n mysql sql go ( \ g) Tr i mi t e comand nda a l a ser ver ver ego ( \ G) Tr i mi t e com comanda si af i se sea aza r ezu zull t at ul ver ver t i ca call pr i nt ( \ p) Ti parest e com comanda cur cur ent ent a qui t ( \ q) I esi r e di n mysql sql r eh eha ash ( \ #) Recon const r ui est e hash sh-- ul sta tus tus ( \ s) St at us i nf o use ( \ u) Fol Fol ose osest st e o ba baza za de dat e ** nou i n ver ver si unea 3. 3. 23: sou sour ce ( \ . ) Execut cut a un f i si er scr scr i pt . sql sql

Alte optiuni pentru programul-cli p rogramul-client ent mysql: -? -B - D, e

- - hel p - - batch - - databa atabase se= =. . - - exe execut e=. . .

-- E f -h -H -L

-- -- v i cal fe orr tce - - host =. . . - - ht ml - - s ki ki p- l i nenumbers - n - - unbuf f er ed - p[ passwo asswor d] - - password[ rd[ =. . . ] - P - - por t =. . . - q - - qui ck - r - - r aw - t - - t abl e in - u - - use serr =# cur cur r ent use serr . - w - - wai t

Hel p Af i se sea aza r ezul zul t at el e cu TAB ca se sep par at or. Baza de dat e f ol osi t a Execu xecutt a comand anda si i ese Ao fn i tsar sa ru eavchi er ii a t rcad la aca a a rp ea z rul ul e t rao t reil or C in ch Conect ar e l a gazda zda spe speci f i cat cat a Pr oduce i esi r i i n f or mat HTML. Nu af i seaza seaza numer e de l i ni i i n ca cazu zull er or i l or Gol est e buf f er - ul dupa f i eca carr e i nt er ogar e Par ol a car car e va f i f ol osi t a Por t ul TCP/ I P f ol os i t Ti par es estt e r ezu ezul t at ul l i ni e cu l i ni e Scr i e numel e de campur i cu t ot cu car act er el e de escap escape I esi r i i n f or mat ul t abel ei Out put i n t abl e f or mat . Thi s i s def aul t non- bat nonbat ch mode. ode. Ut i l i zat zat or ul car car e i nt r a nu e cel cel cur cur ent User ser f or l ogi n i f not Ast eapt a si r ei ncear cear ca con conec ectt area

mysqladmin Este utilitarul pentru sarcini administrative. Sintaxa: mys ysql ql admi n [ OPTI ONS] c ommand com c ommand. . .   unde comenzile pot fi: cr eat e dat abas abas enam ename dr op dat abasename extend xtended- st at us f l ushsh- hosts f l ushsh- l ogs f l ushsh- t abl es f l ushsh- pr i vi l eges

 

Mesa sajj ex extt i ns desp sprr e st at us- ul se serr ver ver - ul ui

Rei ncar car ca t abel el e de pr i vi l egi i

49

 

ki l l i d, i d, . . . passw pass wor d newpassw pass wor d pi ng pr ocessl cessl i st r el oad r ef r esh s hut down status var i abl es

Ter mi na t hr ea ead- ur i l e mysql sql Schi mba par ol a Ver i f i ca daca mysgl ysgl d e porni t Li st a pr ocese cesell or acti ve Rei ncar car ca t abel el e de pr i vi l egi i

Af i sea seaza vari abi l el e di spo sponi bi l e

verav sieon Vterarsit e unea un ea tMh ySQ yS Qa Ld- ul sl ave sl - st ar t S aza re ( nou i n v3. 23) sl ave- st op Opr es estt e t hr ead- ul sl ave. ve. ( nou i n v3. v3. 23) -? - - hel p -# - - debug=. . . -f - - f or ce Cont i nua chi chi ar a daca apa apar er or i -h - - host =# - p[ . . . ] - - pas sw s wor d[ d[ =. . . ] -P - - por t =. . . -I - - sl eep eep=se sec c Execu xecutt a com comenzi l e i n co con nt i nuu cu o pauza auza i nt r e -r - - r el el at i ve Ar a ta di f er ent ent el e obt i nut e -s - - si l ent I esi r e daca nu e permi sa co con neca catt ar ea -t - - t i meout =. . . Ti meout pent r u co con nec ectt are -w - - wai t [ =r et ri es] -W - - pi pe -E

- - ver t i c a all

Exemplu: mysql adm admi n pr oc st at +- - - - +- - - - - - - +- - - - - - - - - - - +- - - - + +-- - - - - - - - - - - - - +- - - - - - + +-- - - - - - - +- - - - - | I d | Use serr | Host | db | Command | Ti me | St at e | I nf o +- - - - +- - - - - - - +- - - - - - - - - - - +- - - - + +-- - - - - - - - - - - - - +- - - - - - + +-- - - - - - - +- - - - - | 6 | mont y | l ocal host | | Pr o ce cessl i st | 0 | | +- - - - +- - - - - - - +- - - - - - - - - - - +- - - - + +-- - - - - - - - - - - - - +- - - - - - + +-- - - - - - - +- - - - - Upt i me: 10 10077 077 Thr Thr ead eads: 1 Quest uest i ons: ons: 9 Sl ow quer quer i es: 0 Opens: ens: 6 Fl ush t abl es: 1 Open t abl abl es: 2 Memor y i n use: 1092 1092K K Max memor y used: 1116 1116K K

+ | + | +

mysqldump Este un utilitar u tilitar pentru mutarea/stergerea mutarea/stergerea informatiilor din tabele. Sintaxa: mysql dum dump [ OPTI ONS] dat dat abase abase [ t abl abl es]   Folosire (pentru backup): mysql dum dump - - opt opt mydat ydat abase abase > backupackup- f i l e. sql   Poti citi inapoi in MySQL M ySQL informatiile cu: mysql mydat ydat abase abase < backup backup-- f i l e. sql   Optiuni: -? -a - - addadd- l ocks - - add- dr op- t abl e - - al l ow- keyw keywor ds -c - - del ayed -F

 

- - hel p --all Adaug dauga a LOC LOCK TAB TABLES i nai nt e si UNLOC LOCK  TAB  TA BLE dupa dupa f i ecar e dum dump - - com compl et e- i nser ser t - - f l us hh- l ogs

50

 

-f -h -l -t -d --opt - p[ . . . ] -P -q

--force - - host=. st=. . - - l oc k- t ab a bl es - - no- c r ea eat e- i nf o - - no- dat a - - pas sw swor d[ d[ =. . . ] - - por t =por t _n _nu um - - qui ck

- Tntpa tu ht- u to - - t ab=pat h- t ocon co in lso som me- di r ect or y, so som me- di r ect or y - - f i el ds- t er mi nat ed- by=. . . - - f i el ds- encl osed sed- by=. . . - - f i el ds- opt i onal l y- encl osed sed- by=. . . - - f i el ds- escap scaped- by=. . . - - l i nes- t er mi nat ed- by=. . . - u user_ name, - - user=   user _ name -w - - wher her e= ’ wher econ condi t i on’

Cr eaza un f i si er . sql sql si un f i si er . t xt cu t abe abel ei

mysqlimport LOAD Este pentru m ysql sqo l iinterfata mport [in oplinie t i onde s] comanda dat abase t extcomanda f i l e1 [ tSQL ext fLO i lAD e2.D.A.TA . ]  I NFI LE. Sintaxa:

Folosire (cu mysqldump): mysql ysql dump - T . t r acki acki ng t abe abel a1  mysql ysql t r acki ng <t abel a1. sq sqll mysql ysql i mpor t t r acki ng t ab abe el a1. t xt  

Optiuni: -? - - hel p -d - - del et e - - f i el ds- t er mi nat ed- by=. . . - - f i el ds- encl osed sed- by=. . . - - f i el ds - op opt i onal l yencl ose sed d- by=. . . - - f i el ds- escap scaped- by=. . . - - l i nes- t er mi nat ed- by=. . . -f --force - h host _ nam name - - host host =host host _name -l - - l oc k- t ab abl es -L - - l ocal cal - p[ . . . ] - - pas sw swor d[ d[ =. . . ] - P port _n _nu um - - por t =por t _n _nu um -I - - i gnor e l uat e i n sea seama) -r - - r epl epl ace noua -s - - s i l ent - u user _ nam name - - user =user _name -c - - col col umns=. . .

Gol est e t abel a i nai nt e de i mport

Fi si er el e sun sunt pe gazda zda cl i ent ul ui Pent r u i nr egi st r ar i dupl i cat cat ( nu sun sunt I nr egi str ar i l e dupl i cat cat sun sunt i nl ocui t e cu

Campur i l e car car e vor f i act ual i za zatt e

Trebuie specificat neaparat neaparat una din optiunile - - i gnor e  sau - - r ep epl ac e, altfel, cand se vor gasi inregistrari duplicat in tabela si-n fiserul text se va genera o eroare.

 

51

 

Interogarea MySQL cu ajutorul script-urilor PHP

 



 



 



 



 



 



Crearea tabelelor cu PHP  PHP  Conectarea la baza de date  date  Deschiderea bazei de date  date  Executia comenzilor   Adaugarea de inregistrari inregistrari   Formulare HTML  HTML 

 



 



 



Afisarea inregistrarilor      Actualizarea inregistrarilor  MySQL  Functiile PHP pentru lucrul cu MySQL 

Crearea unei tabele cu PHP   CRE REATE ATE TAB TABL E nume_ e_tt abel a { nume_cam e_camp t i p( mar i me) al t e_i nf or mat i i , ... }

Presupunem ca exemplu, o agenda agend a cu datele vizitatorilor unui site memorata in tabela agenda  cu structura: s tructura: Nume

Tip

Lungime

Descriere

id

INT

6

Un identificator identificator unic

first

VARCHAR

15

Prenume

last

VARCHAR

15

Nume

 phone

VARCHAR

20

Numarul de telefon

mobile

VARCHAR

20

Numarul de mobil

fax

VARCHAR

20

Numarul de fax

email

VARCHAR

30

Adresa de email

web

VARCHAR

30

Adresa de web

Pentru a crea aceasta tabela in PHP (explicatiile urmeaza):  

52

 

<? $user =" nume" ; $pass pass wor d=" par ol a"; $dat $dat abase= abase=" baza_de_dat aza_de_dat e"; e" ; mysql ysql _conn _connec ectt ( l oca call host , $use serr , $passwo sswor d) ; @mysql _s el ect _ db( $dat abase) abase) or di e( " Nu se poa poatt e deschi deschi de baza baza d de e dat dat e") ; $que $querr y=" CREATE EATE TAB TABLE agen agenda da ( i d i nt ( 6) NOT NULL aut o_i ncr ement ent , f i r st varchar archar ( 15) NOT NULL, l ast var var ch char ar ( 15) 15) NOT NU NULL, phon ph one 20 ) ) NN OT NU LL, m obi ob i leevar var varchar char( (20) 20) 20 OTNU NU NU LL, f ax var var char char ( 20) NOT NU NULL, emai l var char char ( 30) NOT NULL, web varchar var char ( 30) 30) NOT NU NULL, PRII MARY KE PR KEY ( i d) , UNI QUE i d ( i d) , KEY i d_ 2 ( i d) ) " ; mysql ysql _query( _query( $quer quer y) ; mysq sqll _cl ose se(( ) ; ?>

Acum sa pargurgem pasii necesari pentru a putea folosi acesta tabela. Conectarea la baza de date:  $user name=" nume_ut i l i zat or " ; $pass pass wor d=" par ol a"; $dat $dat abase= abase=" baza_de_dat aza_de_dat e"; e" ; mysql ysql _conn _connect ( l ocal ocal host , $user name, $pa $passwor sswor d) ;

Deschiderea bazei de date:  @mysql ysql _s el ect _db( _db( $dat abase abase)) or di e( "Me "Mesaj i n caz de de eroar e") ;

Executia unei comenzi se poate face direct di rect sau atribuind comanda unei variabile (daca se asteapta un rezultat): mysql _quer _quer y( $quer quer y) ;   Adaugarea de inregistrari  Informatiile urmatoare vor fi adaugate in agenda cu comanda: First: Ion Last: Gheorghe Phone: 01234 567890 Mobile: 00112 334455 Fax: 01234 567891 E-mail: [email protected] Web: http://www.inogh.go.ro $quer y = "I NSERT ERT I NTO agen agend da VA VALUE LUES ( ' ' , ' I on' on' , ' Gheo eorr ghe' , ' 01234 567 56789 890 0' , ' 00112 334455' , ' 01234 567 567891' , ' i ong ongh@yah yahoo. com com' , ' ht t p: / / www. i ongh. go. r o' ) ";  

Formularele HTML  Iata cum ar putea sa arate un fomrular cu ajutorul caruia se vor culege informatii despre vizitatori:

 

53

 

Pr enum enume: Nume:  Tel ef on: on: Cel ul ar : Fax Fax: E- mai l : Si t e Web: Submit

Codul este:

 

<f orm act i on= on=" i nser t . php" met hod= od="post "> Pr enum enume: <i nput put t ype= ype=" t ext " name=" f i r s t " ><br > Lastt Nume: <i nput Las nput t ype= ype=" t ext " name=" l ast " ><br >  Tel ef on: on: <i nput nput t yp ype= e=" t ext " name=" phone phone"" ><br > Mobi obi l e: <i nput nput t ype= ype=" t ext " nam name=" mobi obi l e">< e"><br > Fax: <i nput nput t ype= ype=" t ext " name=" f ax"> ax" ><br > E- mai l : <i nput nput t ype= ype=" t ext " nam name=" emai l " ><br > Si t e Web: <i nput nput t ype=" t ext " name=" web"> eb" ><br > <i nput nput t ype= ype=" Subm Submi t " > </ f or m> 

Creaza acum un fisier 'insert.php' cu urmatorul continut: continu t: <? $use serr name=" ut i l i za zatt or "; $pass pass wor d=" par ol a"; $dat $dat abase= abase=" baza_de_dat aza_de_dat e"; e" ; mysql ysql _conn _connect ( l ocal ocal host , $user name, $pa $passwor sswor d) ; @mysql _s el ect _ db( $dat abase) abase) or di e( " Nu se poa poatt e deschi deschi de BD" ) ; $quer y = "I NSERT I NTO agenda VALUE LUES ( ' ' , ' $f i r st ' , ' $l ast ' , ' $phone' , ' $mobi l e' , ' $f ax' , ' $emai l ' , ' $web' ) " ; mysql ysql _query( _query( $quer quer y) ; mysq sqll _cl ose se(( ) ; ?>

Afisarea inregistrarilor  $quer $qu er y=" SELEC SELECT T * FR FRO OM agenda" agenda";;   $r esul esul t =mysql ysql _ quer y( $quer uer y) ;   Rezultatele sunt acum intr-un tablou ('result'). Pentru a-i afisa elementele, trebuie folosit un ciclu: $num $nu m=mys ysql ql _ num numr ows( $r esul es ul t ) ;   $i =0; whi l e ( $i < $nu $num) { COD PT AFI SaRE ++$i ; }

In continuare, vom memora datele in variabile: $f i r s t =mys ql ql _ r es es ul ul t ( $r es e s ul ul t , $i , " f i r s t " ) ;

 

54

 

$l ast=m st=mysql sql _ r esu esull t ( $r esu esul t , $i , " l ast" ) ; $phone=mysql ysql _r esul t ( $r esul esul t , $i , " phone one" ) ; $mobi l e=mysq sqll _r esu sull t ( $r esu sull t , $i , "mobi obi l e") ; $f ax=mysql sql _r esul sul t ( $r esul sul t , $i , "f ax") ; $emai l =mysq sqll _r esu sull t ( $r esul sul t , $i , "emai l ") ; $web=mysql _r esu sull t ( $r esu sull t , $i , "web "web") ") ;

Script-ul final pentru afisarea afisarea rezultatului inter in terogarii: ogarii: <? $use serr name=" ut i l i za zatt or "; $pass pass wor d=" par ol a"; $dat $dat abase= abase=" baza_de_dat aza_de_dat e"; e" ; mysql ysql _conn _connect ( l ocal ocal host , $user name, $pass wor d) ; @mysql _s el ect _ db( $dat abase) abase) or di e( " Nu se poa poatt e deschi deschi de baza baza d de e dat dat e") ; $que $querr y=" SELEC SELECT T * FR FRO OM agend agenda" a" ; $r esul esul t =mysql ysql _quer _quer y( $query) ; $num $num=mysql _ num numr ows( $r esul t ) ; mysq sqll _cl ose se(( ) ; echo " <b><cent er >Rezul t at ul i nt er ogar ogar i i </ cent er ></ b><br ><br br> >" ; $i =0; whi l e ( $i < $nu $num) { $f i r s t =mys ql ql _ r es es ul ul t ( $r es e s ul ul t , $i , " f i r s t " ) ; $l ast=m st=mysql sql _ r esu esull t ( $r esu esul t , $i , " l ast" ) ; $phone=mysql ysql _r esul t ( $r esul esul t , $i , " phone one" ) ; $mobi l e=mysq sqll _r esu sull t ( $r esu sull t , $i , "mobi obi l e") ; $f ax=mysql sql _r esul sul t ( $r esul sul t , $i , "f ax") ; $emai l =mysq sqll _r esu sull t ( $r esul sul t , $i , "emai l ") ; $web=mysql _r esu sull t ( $r esu sull t , $i , "web "web") ") ; echo " <b>$f i r s t $l ast </ b>< br >Tel ef on: on: $ph $phone< one< br >Mobi obi l : $mobi obi l e< br >Fax: Fax: $f ax< ax< br >E- mai l : $emai l < br >Si t e Web: $web< br ><hr ><br >" ; ++$i ; } ?>

Fomatarea afisajului afisajului rezulatelor rezulatelor se poate p oate face folosind combinatii HTMl/PHP: <f ont f ace= ce="A "Arr i al , Hel vet i ca, ca, san sans- ser ser i f ">< "><? echo echo "$f "$f i r st $l ast "; ?></ f ont *g *gtt ;  

Interogarile se fac dupa urmatorul u rmatorul exemplu: $que $querr y=" SELEC SELECT T * FRO FROM agen agenda da WHERE ERE l ast =' $sear chl ast ' " ; $r esul esul t =mysql ysql _quer _quer y( $query) ;

Actualizarea inregistrarilor 

 

55

 

$i d=$_GE _GET[ ' i d' ] ; $use serr name=" ut i l i za zatt or "; $pass pass wor d=" par ol a"; $dat $dat abase= abase=" baza_de_dat aza_de_dat e"; e" ; mysql ysql _conn _connect ( l ocal ocal host , $user name, $pa $passwor sswor d) ; $que $querr y=" SELEC SELECT T * FR FRO OM agend agenda a WHERE ERE i d=' $i d' " ; $r esul esul t =mysql ysql _quer _quer y( $query) ; $num $num=mysql _ num numr ows( $r esul t ) ; mysq sqll _cl ose se(( ) ; $i =0; whi l e ( $i < $nu $num) { $f i r s t =mys ql ql _ r es es ul ul t ( $r es e s ul ul t , $i , " f i r s t " ) ; $l ast=m st=mysql sql _ r esu esull t ( $r esu esul t , $i , " l ast" ) ; $phone=mysql ysql _r esul t ( $r esul esul t , $i , " phone one" ) ; $mobi l e=mysq sqll _r esu sull t ( $r esu sull t , $i , "mobi obi l e") ; $f ax=mysql sql _r esul sul t ( $r esul sul t , $i , "f ax") ; $emai l =mysq sqll _r esu sull t ( $r esul sul t , $i , "emai l ") ; $web=mysql _r esu sull t ( $r esu sull t , $i , "web "web") ") ; Spat i u p pen entt r u cod cod ++$i ; }

Formularul HTML: <f or m act i on= on=" updat pdat ed. ed. php" php" met hod= hod=" pos pos t " > <i nput nput t ype= ype=" hi dden dden"" nam name=" ud_i ud_i d" val ue= ue=" <? echo echo " $i d"; ?>" > Pr enu enumel e: <i npu nput t ype= ype=" t ext ext " val val ue="ud_f "ud_f i r st " val val ue="<? "<? ech echo o " $f i r st " ?>" ><br > Numel e: <i np npu ut t ype= ype=" t ext ext " val val ue=" ud ud_l _l ast " val val ue= ue=" <? echo echo " $l ast " ?>" ><br > Ner . t el ef on: on: <i nput nput t ype= ype=" t ext " val ue=" ud_pho ud_phone ne"" val ue= ue=" <? echo " $phon phone"? e"? >" ><br > Nr . cel ul ar : <i nput put t ype= ype=" t ext ext " val val ue=" ud_mobi obi l e" val ue=" <? echo " $mobi obi l e"? >" ><br > Nr . f ax: ax: <i nput t ype= ype=" t ext ext " val val ue= ue=" ud_ f ax" val ue= ue=" <? echo "$f ax"?>" ax"?>" ><br > Adr esa e- mai l : <i nput t ype= ype=" t ext ext " val val ue= ue=" ud_emai l " val val ue=" <? ech echo o " $em $emai l " ?>" ><br > Adr esa Web: eb: <i nput nput t ype= ype=" t ext " val ue=" ud_ ud_ web" val ue=" <? echo " $web"? >" ><br > <i nput t ype= ype=" Sub Submi t " val ue=" Act ual ual i zeaza" zeaza" > </ f or m> 

Urmatorul pas este actualizar actualizarea ea propriu-zisa a bazei b azei de date cu valorile introduse in formular: $ud_i d=$_POST[ ' ud_i d' ] ; $ud_f i rst =$_PO _POST[ ' ud_f i r st ' ] ; $ud_l ast =$_POST[ ' ud_l ast ' ] ; $ud_ph $ud_phon one= e=$_POS $_POST[ ' ud_pho ud_phone ne'' ] ; $ud ud_m _mobi obi l e=$_POS _POST[ ' ud ud_m _mobi obi l e' ] ; $ud_f ax= ax=$_POST[ ' ud_f ud_f ax' ax' ] ; $ud_emai l =$_PO $_POST[ ' ud_emai l ' ] ; $ud_w $ud_web eb= =$_POST[ $_POST[ ' ud_ ud_ web' eb' ] ; $use serr name=" ut i l i za zatt or "; $pass pass wor d=" par ol a"; $dat $dat abase= abase=" baza_de_dat aza_de_dat e"; e" ; mysql ysql _conn _connect ( l ocal ocal host , $user name, $pa $passwor sswor d) ; $quer y=" UPDA PDATE agenda agenda WHERE ERE i d=' $ud_i d' SET f i r st =' $ud_f i r st ' l ast =' $ud_l ast ' phone one=' $ud_p _ph hone' mobi obi l e=' $ud_mobi obi l e' f ax= ax=' $ud_f ax' ax' emai l =' $ud_emai l ' web=' $ud_w $ud_web' eb' " ;

 

56

 

mysql ysql _query( _query( $quer quer y) ; echo cho "I nr egi st rare actu actua al i zat zat a"; mysq sqll _cl ose se(( ) ;

Functiile PHP pentru lucrul cu MySQL Fun Funct i e

Ret ur ne neaza aza

Act i une

mysql ysql _conn _connec ectt ( [ st r i ng host name[ : por t ] [ : / pat h/ t o/ s oc oc ket ] ] [ , s t r i ng use serr name] [ , st r i ng password] )

i nt

Deschi schi de o co con nexi une l a server

mysql ysql _p _pcon conn nect ( [ st r i ng host name[ : por t ] [ : / pat h/ t o/ s oc oc ket ] ] [ , s t r i ng use serr name] [ , st r i ng password] )

i nt

Deschi schi de o co con nexi une per si st ent a l a serverul MySQ ySQL

mysql ysql _cl ose se(( [ i nt l i nk_ i dent i f i er ] )

i nt

I nchi chi de o co con nexi une

mysql ysql _sel ect _db( _db( st r i ng

i nt

Se Sell ect eaza eaza o baza de da datt e MySQ ySQL

mysql ysql _cr eat eat e_db( _db( st r i ng dat abase_n abase_nam ame [ , i nt l i nk_ i dent i f i er ] )

i nt

Cr eaza eaza o baza de dat e

mysql ysql _dr op_db op_db(( st r i ng dat abase_n abase_nam ame [ , i nt l i nk_ i dent i f i er ] )

i nt

St er ge o baza de dat e

mysql ysql _q _qu uer y( st r i ng quer y [ , i nt l i nk _ i dent i f i er ] )

i nt

Tri mi t e o i nt er oga ogar e SQL

mysql ysql _d _db b_q _qu uer y( st r i ng dat abase_n abase_nam ame, st r i ng quer y [, i nt l i nk _

i nt

Tri mi t e o i nt er oga ogar e SQL

mysql ysql _l i st _d _db bs( [ i nt l i nk_ i dent i f i er ] )

i nt

Li st a baze zell or de dat e de pe se serr ver

mysql sql _l i st_ t abl es( st r i ng dat abase_n abase_nam ame [ , i nt l i nk_ i dent i f i er ] )

i nt

Li st a t abel el or di nt r- o baza de dat e

mysql sql _l i st_ f i el ds( st r i ng dat abase_n abase_nam ame, st r i ng t abl e_n _na ame [ , i nt l i nk_ i dent i f i er ] )

i nt

Af i sea seaza cam campur i l e r ezul zul t at

mysql ysql _e _err r or ( [ i nt l i nk_ i dent i f i er ] )

st r i ng

Af i se sea aza mesa sajj ul de er oar e pr ece ced dent

d ab l at i nabase_n k_ ase_nam i dent iam f ieer[ ], ) i nt

i dent i f i er ] )

 

57

 

mysql ysql _e _err r no([ i nt l i nk_ i dent i f i er ] )

i nt

Af i se sea aza numar ul mesa sajj ul ui de eroar eroar e de l a oper at i a pr eced cedent a

mysq sqll _a _aff f ect ed_r ows( [ i nt l i nk_i dent i f i er ] )

i nt

Prei Prei a numar ul de i nr egi st r ar i af ect at e de oper at i a pr eced cedent a

mysq sqll _i nse serr t _i d( [ i nt l i nk_ i dent i f i er ] )

i nt

Prei Prei a aut o_i ncrement ul pr eced cedent ei com comenzi enzi I NSERT

ysql r esu esul e imn tsqlr _ow [ , l tm(i ixn etd rf esu i sul el ldt] ,)

i nt

Pr ei ei a r ez ul ul t at el e i nt er og ogar i i

mysq sqll _n _nu um_r ows( i nt r esul sul t )

i nt

Prei Prei a numar ul i nr egi st r ar i l or di n r ezu zull t at

mysql ysql _n _nu um_f i el ds( i nt r esu sull t ) i nt

Prei a numarul arul ca cam mpur i l or di n r ezu zull t at

mysql ysql _f etch_row( i nt r esu sull t ) t abl ou

Prei a ca catt e un r and di n t abl abl oul oul r ezu zull t at

mysql ysql _f etch_ob etch_obj ect ( i nt obi ect r es e s ul ul t [ , i nt r es es ul ul t _ t yp y pe] )

Prei a un r and ca obi ect

mysql ysql _f et ch ch_ar _ar r ay( i nt t abl ou r es e s ul ul t [ , i nt r es es ul ul t _ t yp y pe] )

Prei a un r and ca t abl abl ou

mysq sqll _d _da at a_see _seek( i nt r esul sul t , i nt

Mut a poi nt er ul i nt er n al r ezu zull t at ul ui

i nt r ow_ number ) mysql ysql _f et ch ch_l _l eng engt hs( i nt r esu sull t )

t abl abl ou

Pr ei a mari mea maxi axi ma a dat el or di n f i ecar car e cam camp di n r ezu zull t at

mysq sqll _f et ch_f ch_f i el d( i nt obi ect re es s ul t [ , i nt f i el d_ of of f s et ] )

Prei Prei a i nf or mat i i despr spr e cam campur i

mysql sql _f i el d_see _seek( i nt r esul sul t , i nt f i el d_ of of f s et et )

Mut a poi nt er ul r ezul zul t at ul ui l a un of f set set

i nt

mysql ysql _f i el d_n _nam ame( i nt r es e s ul ul t , i nt f i el d_ i ndex)

st r i ng

Prei a numel e ca cam mpul ui sp speci eci f i cat

mysql ysql _f i el d_t abl abl e(i nt re es s ul ul t , i nt f i el d_ of of f s et et )

st r i ng

Prei a numel e t abel ei di n ca carr e e ca cam mpul

mysql ysql _f i el d_l en( en( i nt re es s ul t , i nt f i el d_ of of f et )

i nt

Prei a mar i mea ace cell ui camp

mysq sqll _f i el d_t ype ype( i nt re es s ul ul t , i nt f i el d_ of of f s et et )

st r i ng

Prei Prei a t i pul acel cel ui cam camp

mysql sql _f i el d_f l ags( i nt re es s ul ul t , i nt f i el d_ of of f s et et )

st r i ng

Prei a f l ag- ul acel cel ui cam camp

mysql ysql _f r ee_r esu sull t ( i nt r es e s ul ul t )

 

i nt

El i ber eaza memor i a de r ezu zull t at

58

 

Quiz MySQL 1. Care sunt cele mai folosite sisteme de operare pe serverele Web? a.Windows 95/98  b.Windows NT/UNIX NT/UNIX c. Linux si OS/2 2. De ce sistem de operare ai nevoie pentru MySQL? a.Linux  b.UNIX c.Windows 2000 d. Windows XP e. Merge pe majoritatea 3.Care server de mai jos e produs de Microsoft? a.IIS  b.Apache c.Xitami 4.PHP,ASP si Perl fac parte din aceeasi categorie. Care ? a.hardware  b.software c.servere Web d.middleware 5. Ce este MySQL ? a.un browser Web  b.un program de chat c.un program de vazut filme d.un server pentru baze de date e.un sistem de operare 6.Cum se mai numesc coloanele dintr-o tabela ? a.campuri  b.linii c.randuri d.aliasuri

 

59

 

7.Cate tipuri de relatii pot exista intr-o baza de date relationala? a.1  b.2 c.3 d.4 e.5 8.De unde poti downloada gratuit MySQL ? a.www.apache.org  b.www.php.net c. www.my-sql.go.ro d.www.mysql.com 9.Cum se numeste interfata vizuala principala a serverului MySQL? a.mysqldump  b.mysql c.mysqladmin d.mysqlimport 10.Care metoda de instalare nu merge pe un sistem Linux? a.InstallShield  b.RPM-uri c.compilarea distrubitiei sursa 11.Cu ce se termina fiecare comanda SQL? a.:  b.# c.\ d.; e.? 12.Crearea dreputurilor pentru un utilizator se face cu: cu : a.Revoke  b.Grant c.Give right d.User() e.Alter User

 

60

 

13.Ce face comanda INSERT ? a.Actualizeaza inregistrari  b. Adauga inregistrari inregistrari c.Modifica inregistrari 14.Sintaxa comenzii SELECT este: a.Select from nume_tabela IN nume_camp  b.Select nume_tabela Where nume_camp from nume_tabela c.Select nume_camp from nume_tabela where conditii 15.Sortarea datelor extrase se face cu: a.Order By  b.Having c.Group By 16.Care este tipul de tabela implicit in MySQL? a.ISAM  b.HEAP c.MyISAM d.BDB 17.Ce afiseaza urmatoarea secventa de escape:\b? a.\  b.B c.b d.beep 18.Care functie nu este folosite pentru compararea compa rarea de siruri? a.IFNULL  b.STRCMP c.REGEXP 19.Cum poti obtine data si ora din aceasta clipa? a.CURDATE()  b.NOW c.CURTIME() d.TIME_FORMAT

 

61

 

20.Ce au in comun tabelele db, user si host? a.Nimic  b.Sunt tabele de grant c.Sunt tabele read-only 21.Cum se poate afla ce drepturi are un utilizator? a.Intrebandu-l  b.cu SHOW GRANTS c.citind Constitutia d.cu DESCRIBE user 22. Care este setul de caractere ca ractere folosit implicit de MySQL? a.Latin  b.Român c.Suedez d.Englez e.Maghiar 23.Ce face programul client mysqlbug? a.Strica MySQL  b.Afiseaza toate bug-urile bug-urile din MySQL c.Bâzâie d.Genereaza raport pentru un bug 24.Ce face comanda echo? a.Afiseaza o variabila/valoare  b. Repeta o valoare ca un ecou c.Scrie in memorie 25.Care este adresa de Web a acestui site? a.www.my-sql.ro  b.www.mysql.com c.www.mysql.go.ro d.www.my-sql.go.ro

 

62

 

Linkuri utile Site-ul oficial MySQL (MySQL.com)  (MySQL.com)  

Tot ce trebuie sa stii despre MySQL.  MYSQL - Download (http://www.mysql.com/downloads/ http://www.mysql.com/downloads/))

Locul unde gasesti ultima versiune de MySQL in orice forma (pt Windows, rpm-uri, sau distributia sursa).  Manualul MySQL (http://www.mysql.com/documentation/ http://www.mysql.com/documentation/))

Manualul oficial o ficial al MySQL-ului MySQL-ului in diferite formate contine totul despre instalare, erori, serverul MYSQL, limbajul MYSQL etc. Unelte ajutatoare pt MySQL (http://www.mysql.com/downloads/contrib.html)

Foarte multe unelte de care te folosesti pentru a lucra mai bine si mai usor cu c u MySQL. De exemplu :LaunchMySQL LaunchMySQL-program -program pentru lansarea server-ului MySQL sau DBF2MySQL-program DBF2MySQL-program pentru convertirea tabelelor din FoxPro in tabele MySQL.  MySQL Mailing List ([email protected]) [email protected])

Inscriere in lista de mail-uri MySQL de unde und e vei primi e-mail-uri de la alti utilizatori MySQL, vei  particpia la discutii discutii despre MySQL etc. Site-ul oficial PHP (PHP.net PHP.net))

Totul despre PHP. PHP - Download (http://www.php.net/downloads http://www.php.net/downloads))

Ultimele versiuni de PHP in diferite formate.  Manualul PHP (http://www.php.net/manual/ http://www.php.net/manual/))

Manualul online contine cont ine tot ce trebuie sa stii despre PHP - d dee la o instalare perfecta perfecta pana la folosirea PHP pentru dezvoltarea unro aplicatii complexe. PHPBuilder (PHPBuilder.com PHPBuilder.com))

Un site excelent cu articole despre PHP si baze b aze de date, plus o librari librariee de script-uri script -uri pe care le poti folosi gratuit. Site-ul oficial al Apache  ( Apache.org))  (Apache.org

Site-ul oficial al Apache Software Software Foundation, care include multe proiect p roiectee interesante, mai ales din spatiul XML. Poti copia ultima u ltima versiune a server-ului Apache. GNU - General Public Licence  (GNU.org  (GNU.org))

Licenta sub care sunt distribuite d istribuite produsele Open Source PHP, Apache si MySQL.

Preluare de pe: http://www.itim-cj.ro/~jalobean/Cursuri/www.my-sql.go.ro/main.html 

 

63

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close