Sunteți pe pagina 1din 9

Laboratorul 4.

Utilizarea sistemului de baze de date MYSQL din linia de comanda


Ca si PHP, MySQL se gaseste liber pe Internet, la adresa http://www.mysql.com, de unde il puteti descarca si instala. Puteti testa programele sub Windows si apoi sa le transferati sub mediul Linu , cu mici modificari legate de conectarea la ser!erul MySQL. Pentru a accesa ser!erul MyS"l din linia de comanda, trebuie sa a!eti intai creat un cont. Se poate accesa implicit prin contul de administrator # root, creat odata cu instalarea pac$etului ce con%ine MyS"l &'(MPP). *n cont poate fi creat prin accesarea p$pMy(dmin. Se !a desc$ide pagina p$pMy(min. +e aici alegeti optiunea Privileges si apoi optiunea Add a new user.

Accesul la server MySql via un client in linia de comanda se face astfel: +aca a!eti instalat MyS"l Ser!er separat pe calculatorul dumnea!oastra, pentru a,l accesa din linia de comanda urmati pasii de mai -os. mys"l /optiuni0 /nume ba1a de date0 unde optiunile u1uale sunt. ,$ masina &numele masinii2ser!erului) ,p parola &parola pentru autentificare) ,u utili1ator &id,ul itili1atorului) 3 emplu. mys"l #u simona #p dupa care dati enter si o sa !i se ceara parola. 3nter password.

+ac4 a!e%i instalat ser!erul MyS"l printr,un pac$et de aplica%ii free software, urma%i pa5ii . (ccesati din Start -> Run -> cmd.exe. 6astati calea unde se afla instalat pac$etul, apoi directorul mys"l, directorul bin si apoi accesati ser!erul mys"l cu parametri cunoscuti. utili1atorul si parola. 3 emplul. Pac$etul utili1at este 3asyPHP. Calea este C.7Program 8iles73asyPHP 9.:b;7mys"l7bin

Ce insemna prompt,urile
mysql> Gata pentru o noua comanda. -> Asteapta urmatoarea linie dintr-o comanda. multi-linie.

'> Asteapta continuarea unui sir de caractere care incepe cu '. "> Astepta continuarea unui sir de caractere care incepe cu ".

Crearea ba1ei de date.... Sa 1icem ca se !a numi <ba1a=. Cum se face> mys"l? create database ba1a@ Query AB, ; row affected &:.:: sec) mys"l? use ba1a @ &folosirea ba1ei de date create) +atabase c$anged (cordarea de pri!ilegii unui utili1ator (cordarea de pri!ilegii specifica ce anume poate un utili1ator sa faca sau sa nu faca. *n utili1ator ar trebui sa aiba cel mai mic ni!el de pri!ilegii necesar pentru a,si indeplini sarcina. Crearea drepturilor pentru utili1atori se face cu comanda CD(E6, iar retragerea drepturilor cu D3FAB3. Pentru a crea un administrator &presupunem ca am creat utili1atorul simona si acordam drepturi in ceea ce pri!este ba1a de date ba1a creata anterior). mys"l? grant all on ba1a.G to simona identified by HparolaI wit$ grant option@ Pentru a,i retrage drepturile acestui utili1ator. mys"l? re!oJe all on G from simona@

3 emplu de acordare drepturi. mys"l? grant select, insert, update, delete, inde , alter, create, drop, on ba1a.G to simona identified by HparolaI@ Conclu1ie. comanda CD(E6 arata asa. G A!" all K optiuni de prelucrare ba1a de date #! numeLba1aLdeLdate.G "# utili1ator /identified by HnumeLparolaI 0 @ Interogarea MySQL Limba-ul SQL care sta la ba1a interogarilor ba1elor de date relationale nu este foarte complicat, dar in!atarea lui nu constituie obiectul acestui material. 6otusi, cMte!a comen1i de ba1a si e emple de utili1are !om pre1enta in continuare. 6oate comen1ile in MySQL trebuie sa se termine cu simbolul punct si !irgula N@N.

;) Conectarea utili1atorului la ser!erul MySQL se poate face cu. connect; Parametrii optionali pot fi ba1a de date si calculatorul ga1da. 3 emplu.
mysql> connect Connection id: 5 Current data ase: baza

9) +Mnd comanda use baza; ne putem alege ba1a de date Nba1aN pentru a lucra in continuare cu ea &o desc$idem). 3 emplu.
mysql> use a!a; "ata ase chan#ed Comanda show data ases ne permite sa $edem cate sistem. a!e de date sunt in

O) Comanda create table ne permite crearea unui nou tabel, cu o anumita structura, in cadrul ba1ei de date curente. create table numeLtabela &camp; tip &dimensiune) /not null K autoLincrement K primary Jey0 , camp9 tip &dimensiune) , P..campn tip &dimensiune) )@ $autati care sunt %rinci%alele ti%uri de date in mysqlQ 3 emplu. Fom crea tabelul a&enda pentru gestionarea numelor si !Mrsta unor persoane.
mysql> create ta le a#enda %nume char%&'() $arsta int%&((; *uery +,) ' rows a--ected %'... sec(

Creati tabela2tabelul marfuri cu urmatoarea structura. $e ti%uri de date ar fi %otrivite %entru fiecare din aceste cam%uri'
/------------/------/------/---------/ 0 denumire 0 pu 0 cant 0 $aloare 0 /------------/------/------/---------/

R) Comanda s(o) tables ne da lista tuturor tabelelor e istente in ba1a curenta. 3 emplu.
mysql> show ta les; /----------------/ 0 1a les2in2 a!a 0 /----------------/ 0 a#enda 0 0 mar-uri 0 /----------------/ . rows in set %'... sec(

S) Pentru a introduce &adauga) o noua inregistrare in tabelul marfuri al ba1ei de date curente, putem folosi comanda insert, ca in e emplu urmator.

3 emplu. Adau&am in tabel un nou %rodus , numit TCAEAPI+(T, preci1Mndu,i toate cMmpurile si toate !alorile corespun1atoare cMmpurilor, apoi !i1uali1am tabelul re1ultat dupa adaugare &scrieti cu litere mari CAEAPI+(Q).
mysql> insert into mar-uri%denumire) $alues%'C+3+45"A')6)7')6'( ; *uery +,) 7 row a--ected %'.'' sec( pu) cant) $aloare(

Sa mai adaugam in tabelul marfuri si urmatoarele inregistari &scrieti conopida, ma1are, piersici etc. cu litere miciQ)
0 0 0 0 0 0 0 0 conopida ma!are piersici carto-i morco$i conopida castra$eti pepene 0 0 0 0 0 0 0 0 76 &5 : 7; 7' 7: 6 96 0 0 0 0 0 0 0 0 8& & 5: &8 .' 9 7' 76 0 0 0 0 0 0 0 0 998 7'5 &&: :8: .'' 77. 6' 78'8 0 0 0 0 0 0 0 0

(cum sa in!atam cum puteam !edea ce a!em in tabel. U) Pentru a reali1a o interogare a unui tabel din ba1a de date, deci pentru a selecta si afisa toate sau doar o parte din inregistrarile dintr,un tabel, se foloseste comanda select, care este cea mai comple a comanda SQL, iar descrierea ei in totalitate nu face subiectul acestui material. De!edeti cursul de Baze de date sau pe cel de Sisteme de gestiunea bazelor de dateQ 3 ista, insa, o serie de manuale de ba1e de date sau despre limba-ul SQL din care poti in!ata mult mai multe. 6otusi, cMte!a e emple folosind comanda SQL !or fi date mai -os. 6oate e emplele se refera la tabelul mar-uri din ba1a de date curenta & a!a). 3 emple. a) (fisarea tuturor inregistrarilor din tabel.
mysql> select < -rom mar-uri; /------------/------/------/---------/ 0 denumire 0 pu 0 cant 0 $aloare 0 /------------/------/------/---------/ 0 conopida 0 76 0 8& 0 998 0 0 ma!are 0 &5 0 & 0 7'5 0 0 piersici 0 : 0 5: 0 &&: 0 0 carto-i 0 7; 0 &8 0 :8: 0 0 morco$i 0 7' 0 .' 0 .'' 0 0 conopida 0 7: 0 9 0 77. 0 0 castra$eti 0 6 0 7' 0 6' 0 0 pepene 0 96 0 76 0 78'8 0 0 C+3+45"A 0 6 0 7' 0 6' 0 /------------/------/------/---------/ ; rows in set %'.'' sec(

b) (fisarea doar a denumirilor si a !alorii tuturor inregistrarilor din tabel.


mysql> select denumire) $aloare -rom mar-uri; /------------/---------/

0 denumire 0 $aloare 0 /------------/---------/ 0 conopida 0 998 0 0 ma!are 0 7'5 0 0 piersici 0 &&: 0 0 carto-i 0 :8: 0 0 morco$i 0 .'' 0 0 conopida 0 77. 0 0 castra$eti 0 6' 0 0 pepene 0 78'8 0 /------------/---------/ 6 rows in set %'.'5 sec(

c) (fisarea doar a produselor cu !aloarea mai mare sau egala cu o !aloare data &S::).
mysql> select < -rom mar-uri where $aloare>=5''; /----------/------/------/---------/ 0 denumire 0 pu 0 cant 0 $aloare 0 /----------/------/------/---------/ 0 conopida 0 76 0 8& 0 998 0 0 carto-i 0 7; 0 &8 0 :8: 0 0 pepene 0 96 0 76 0 78'8 0 /----------/------/------/---------/ & rows in set %'.': sec(

d) (fisarea !alorii produselor din tabel si a !alorii cu tot cu 6F( &se considera cota 6F( ca fiind de ;VW). +esi in structura tabelului nu e ista cMmpul $al2t$a, se !a genera aceasta coloana prin comanda select de mai -os.
mysql> select denumire) $aloare) $aloare<7.7; as $al2t$a -rom mar-uri; /------------/---------/---------/ 0 denumire 0 $aloare 0 $al2t$a 0 /------------/---------/---------/ 0 conopida 0 998 0 ;.7.': 0 0 ma!are 0 7'5 0 7.8.;5 0 0 piersici 0 &&: 0 &;;.68 0 0 carto-i 0 :8: 0 9:6.98 0 0 morco$i 0 .'' 0 .&6.'' 0 0 conopida 0 77. 0 7&&..6 0 0 castra$eti 0 6' 0 ;5..' 0 0 pepene 0 78'8 0 7:9'.9: 0 /------------/---------/---------/ 6 rows in set %'.'' sec(

e) Selectarea produselor din tabel cu preturi unitare intre doua !alori date &de e emplu ;: si R:), in ordine alfabetica.
mysql> select < -rom mar-uri where pu denumire; /----------/------/------/---------/ 0 denumire 0 pu 0 cant 0 $aloare 0 /----------/------/------/---------/ 0 carto-i 0 7; 0 &8 0 :8: 0 0 conopida 0 76 0 8& 0 998 0 0 conopida 0 7: 0 9 0 77. 0 0 ma!are 0 &5 0 & 0 7'5 0 0 morco$i 0 7' 0 .' 0 .'' 0 /----------/------/------/---------/ 5 rows in set %'.'' sec( etween 7' and 8' order

X) Instructiunea SQL delete sterge una sau mai multe intregistrari dintr,un tabel al ba1ei de date. Se pot folosi, ca si la select, diferite criterii de stergere. 3 emplu. La tabelul de mai sus, daca aplicam urmatoarea instructiune delete, !om elimina din tabel rMndurile ce contin atMt denumirea TconopidaT, cMt si denumirea TCAEAPI+(N. (cest lucru se datorea1a operatorului special li>e, care nu deosebeste literele mari de cele mici.
mysql> delete -rom ta el where denumire li>e 'conopida'; *uery +,) & rows a--ected %'.'5 sec( mysql> select < -rom ta el; /------------/------/------/---------/ 0 denumire 0 pu 0 cant 0 $aloare 0 /------------/------/------/---------/ 0 ma!are 0 &5 0 & 0 7'5 0 0 piersici 0 : 0 5: 0 &&: 0 0 carto-i 0 7; 0 &8 0 :8: 0 0 morco$i 0 7' 0 .' 0 .'' 0 0 castra$eti 0 6 0 7' 0 6' 0 0 pepene 0 96 0 76 0 78'8 0 /------------/------/------/---------/ : rows in set %'.7: sec(

Y) In sfMrsit, instructiunea update permite actuali1area unui articol din ba1a de date. (fla singur cum se folosesteQ Corespun1atoare tuturor acestor instructiuni SQL e ista functiile PHP de lucru cu ba1e de date MySQL numite mysql2connect pentru conectarea la ba1a de date si mysql2query pentru reali1area de interogari SQL, deci pentru celelalte comen1i. (cestea !or fi e emplificate in continuare. $rearea unei tabele in *+*. Z> [user\NnumeN@ [password\NparolaN@ [database\Nba1aLdeLdateN@ mysql,connect&local$ost,[user,[password)@ 22conectare la ser!er prin utili1ator si parola 22alegerea ba1ei de date ]mysql,select,db&[database) or die& NEu se poate desc$ide ba1a de dateN)@ ["uery\NCD3(63 6(^L3 agenda & id int&U) EA6 E*LL autoLincrement primary Jey, nume c$ar&O:), !arsta int&O))@ 22scrierea comen1ii SQL de creare a tabelei mysql,query&["uery)@ 22prelucrarea comen1ii mysql,close-./ 22inc$iderea cone iunii >? $autati in tutorialul *+* detalii des%re functiile mysql intalnite in e0em%lul de mai sus.

*entru adau&area de informatii in tabela folosim. ["uery \ <IES3D6 IE6A agenda &nume, !arsta) !alues &HalinaI, 9:)=@ mys"lL"uery&["uery)@ Afisarea inre&istrarilor. ["uery\=S3L3C6 G 8DAM agenda=@ [result\mys"lL"uery&["uery)@ 2G In urma selectiei !a re1ulta un tablou. Pentru a afisa elementele din tablou trebuie sa folosim una din structurile repeti!e. Sunt folosite functiile mysql,fetc(,array&), mysql,num,ro)s&). Fedeti tutorialul PHP pentru detalii si alte functii G2 w$ile& [row \mysql,fetc(,assoc&[result) ) _ ec$o [row/HnumeI0@ 2G corespun1ator campului nume din tabela. *n element din tablou mai poate fi apelat si conform indicelui sau. [row/:0. In e emplul nostru a!em. [row/;0 deoarece campul nume este al doilea dupa id. G2 ec$o [row/H!arstaI0@ ` mys"lLfreeLresult&[result)@ mys"lLclose&)@ A alta posibilitate de parcurgere a tabelei este de a obtine numarul de inregistrari. [num \ mys"lLnumLrow&[result)@ [ i\:@ w$ile&[i Z [num) _ [nume\mys"lLresult&[result,[i)@ ec$o [nume@ [!arsta\mys"lLresult&[result,[i)@ ec$o [!arsta@ [iaa@ `

3 ercitiul ;. Creati o pagina web in care un utili1ator se poate inregistra cu *ser Id si Parola. (ceste date !or fi introduse intr,o ^+ creata in prealabil. +upa ce a fot inregistrat, se !a afisa un mesa- corespun1ator si utili1atorul !a fi directionat catre o pagina de Log,in unde !a furni1a *ser Id si Parola date la inregistrare. (cestea !or fi !erificate si pentru o Logare cu succes se !a afisa mesa- corespun1ator, iar pentru insuccces tot un mesacorespun1ator. 3 erci%iul 9.

Creati o ^+ cu tabela. produse &denumire !arc$ar&9:), cant int&;:), pret int&;:))@ Deali1ati o pagina web in care. a) sa afisati toate produsele din tabela cu denumire, cantitate si pret@ b) sa afisati din tabela doar produsele cu !alaore mai mare de ;:: DAE unde !aloare \ cantGpret@ 3 etci%iul O. Creati o ^+ cu tabela. *tili1atori &user !arc$a&9:), parola !arc$ar&;:), nrL!i1ite int&;::)) Deali1ati o pagina web in care fiecare utili1ator se paote loga si in momentul cand s,a logat cu succes sa fie afisat. N^ine ai !enit Zuser?Q (i in acest moment nr de !i1ite egal cu ZnrL!i1ite?NQ (63E6I3. nu uitati ca mai intai sa incrementati nrL!i1ite si apoi actuali1at in ^+.

S-ar putea să vă placă și