Sunteți pe pagina 1din 8

Introducere n MySQL i SQL

Un sistem de baze de date este, n esen, o modalitate de a gestiona liste cu informaii. Informaiile pot proveni dintr-o varietate de surse. De exemplu, pot reprezenta date de cercetare, nregistrri de afaceri, cereri ale clienilor, statistici sportive, rapoarte de vnzri, nregistrri de personal sau notele unor elevi. De ce s optez pentru MySQL? Dac suntei n cutarea unui sistem gratuit sau necostisitor de gestiune a bazelor de date, putei alege din mai multe opiuni: MySQL, Microsoft SQL, PostgreSQL, .a. Cnd comparai MySQL cu alte sisteme de baze de date, gndii-v la ceea ce este cel mai important pentru dumneavoastr i anume: performan, suport, caracteristici (conforme cu SQL, extensii etc.), condiii i restricii de liceniere, pre. Toate acestea constituie factori care trebuie luai n considerare. Date fiind aceste consideraii, MySQL are de oferit numeroase caracteristici atractive: Vitez. MySQL este rapid. Programatorii pretind c MySQL este cel mai rapid sistem de baze de date pe care l putei gsi. Putei verifica aceast afirmaie vizitnd http://www.mysql.com/why-mysql/benchmarks/ , o pagin de comparaie a performanelor din situl Web MySQL. Uurin n utilizare. MySQL este un sistem de baze de date cu performane ridicate, dar relativ simplu, a crui configurare i administrare sunt mult mai simple dect n cazul sistemelor mai mari. Pentru instalarea i configurarea versiunilor de MySQL 4.0 respectiv 4.1 v recomand s vizitai site-ul urmtor: http://www.analysisandsolutions.com/code/mybasic.htm , n care sunt prezentai paii care trebuiesc urmai pentru a putea configura MySQL sub Windows 2000, XP i NT 4.0. Sunt prezentate de asemenea tutoriale care prezint cum se poate face upgradarea de la MySQL 4.0 la 4.1 i de la MySQL 4.1 la 5.0. Cost. MySQL este gratuit pentru majoritatea utilizrilor interne. Suport pentru limbaje de interogare. MySQL nelege SQL (Structured Query Language limbaj de interogare structurat), limbajul preferat al tuturor sistemelor moderne de baze de date. De asemenea, putei avea acces la MySQL folosind aplicaii care accept ODBC (Open Database Connectivity), un protocol de comunicaie cu bazele de date creat de Microsoft.

Caracteristici. La server se pot conecta mai muli clieni simultan. Clienii pot folosi mai multe baze de date simultan. Putei obine acces la MySQL n mod interactiv, folosind numeroase interfee care v permit s introducei interogri i s vizualizai rezultate: clieni n linie de comand, browsere Web sau clieni X Window System. MySQL Control Center sau MySQLCC este o platform independent de administrare GUI a clienilor pentru servere de baze de date MySQL. Putei descrca aceast interfa de pe urmtorul site ftp: http://ftp.up.ac.za/pub/windows/mysql/Downloads/MySQLCC/ . Pentru a v familiariza ct mai rapid cu aceast platform vizitai http://newton.ncc.edu/~steve/mysqltutor/ , pagin n care este prezentat un tutorial al MySQL Control Center ntr-un mod foarte concis. De asemenea, este disponibil o varietate de interfee de programare pentru limbaje precum C, Perl, Java, PHP i Python. Astfel, avei opiunea de a folosi programe client sau de a v scrie propriile programe client pentru aplicaii personalizate. Conectivitate i securitate. MySQL poate fi folosit integral n reele, iar bazele de date sunt accesibile de oriunde din Internet, deci v putei partaja datele cu oricine, oriunde. Dar MySQL are controlul accesului, astfel nct persoanele care nu au dreptul s v citeasc datele nu vor avea aceast posibilitate. Portabilitate. MySQL ruleaz pe numeroase varieti de UNIX, precum i pe alte sisteme nonUNIX, ca Windows i OS/2. O bun parte din programarea cu MySQL are loc pe sisteme Linux ieftine. MySQL ruleaz pe diverse echipamente de la calculatoare de birou la servere cu performane ridicate. Distribuie liber. MySQL nu este un proiect Open Source, deoarece este necesar o licen n anumite condiii. Totui, MySQL se bucur de o ampl popularitate n comunitatea Open Source, deoarece termenii de licen nu sunt foarte restrictivi, (n esen, MySQL este n general gratuit, dac nu dorii s obinei profit prin vnzarea sistemului sau a unor servicii care necesit utilizarea acestuia). Alegerea sistemului de operare pentru dezvoltarea bazei de date v aparine. Eu v recomand s folosii MySQL si celelalte instrumente sub Linux. Toate instrumentele i au originea n UNIX si de acolo au fost portate ulterior spre Windows, fiind desfurate mai frecvent n Linux dect n Windows. Aceasta nseamn c versiunile Windows au avut o perioad de maturizare mai scurt i c nu au fost testate i utilizate att de aprofundat ca versiunile sub Linux.

Crearea I utilizarea bazelor de date n MySQL ..:: exerciii din linia de comand ::..
Acest material constituie o introducere n sistemul de gestiune a bazelor de date relaionale (SGBDR) MySQL i n limbajul de interogare structurat SQL pe care l nelege sistemul MySQL. Pe lng termenii i conceptele fundamentale pe care trebuie s le nelegei v vom prezenta i modul de utilizare a sistemului MySQL pentru a crea o baz de date i pentru a interaciona cu aceasta. De asemenea v vom pune la dispoziie i o baz de date demonstrativ pe care o vei putea folosi n exemplele urmtoare. S considerm situaia n care cineva v-ar solicita s realizai un magazin on-line, probabil l-ai ruga s v ofere date despre produsele sale iar voi ai ncerca s realizai un design bun i s gasii o form de a-i prezenta produsele ct mai atractiv cu putin. Cnd e vorba de zeci de produse nu ar fi o problem aa mare, dar dac se pune problema unui numr de cteva sute de produse? Ar trebui s luai de pe serverul unde se afl hostat site-ul (asta dac nu avei deja o copie a site-ului pe calculator), s o modificai i s-l punei din nou pe server. Probabil c fiecare produs va avea propria pagin cu descriere i probabil caracteristici. V putei nchipui ce nseamn s pstrezi "up to date" un astfel de site? Sisif s-ar fi considerat probabil norocos! Probabil c din acest exemplu ai neles ct de important este o baz de date. Vom porni de la un caz concret i anume crearea i ntreinerea unui site cu anunuri on-line. n mod normal cineva care trebuie s dea un anun v va trimite un e-mail cu anunul iar voi vei fi nevoii s modificai pagina html n care sunt cuprinse acestea i apoi o vei pune pe server. i asta pentru fiecare anun n parte. Lucrurile vor deveni destul de dificile atunci cnd vei avea de publicat cteva zeci de mesaje pe zi. i cu siguran, mai devreme sau mai trziu vei "eua" prin a folosi o baz de date. Dar ce este pn la urm o baz de date? O baz de date (n cazul nostru MySQL) este un program ce poate stoca o cantitate foarte mare de informaii i o poate organiza ntr-un format ce este uor accesibil n mod direct sau de ctre un alt program, de exemplu PHP. O baz de date este format din unul sau mai multe tabele. Un tabel este un fiier structurat ce stocheaz date de un anumit tip: o list de cumprturi, un catalog de produse, o list de anunuri, etc. n cazul nostru vom ncepe cu un singur tabel pe care o s-l numim anunturi. Aa dup cum i spune i numele avem de fapt o tabel ce conine informaii. Fiecare coloan conine un anumit tip de informaii iar fiecare linie conine un set de astfel de informaii. Un set de informaii stocat de-a lungul unei linii poart numele de nregistrare. Un anun reprezint un astfel de rnd.

Liniile i coloanele unei tabele pot conine informaii referitoare la vnzarea sau cumprarea unor produse, nchirieri, etc.:
Coloana 1 | Id 1 2 3 Coloana 2 | text_anunt vand notebook HP inchiriez spatiu comercial cumpar apartament Coloana 3 | data_anunt 2005-07-20 2005-03-04 2005-01-26

Linia 1 Linia - 2 Linia 3

Se observ c tabelul nostru are o coloan ce conine anunul propriu-zis ("text_anunt"), o alt coloan conine data la care a aprut ("data_anunt") i nu n ultimul rnd o coloan (id) Probabil o sa v punei intrebarea care este rostul coloanei "id" ? Rspunsul este unul foarte simplu. O proiectare bun a unei baze de date presupune ca un anumit anun s fie indentificat unic. n viaa de zi cu zi daca cineva ne-ar ruga s identificm un anun i-am spune probabil c e acela cu "inchiriez spatiu comercial ...". Dar pentru o baz de date e un pic mai complicat s identifice n mod unic un astfel de anun din sute de anunuri de acest gen i atunci folosim o coloan ce conine un numr unic. Astfel e mai simplu sa aflam c de fapt anunul care ne intereseaz e anunul 2 (id=2). Crearea unei baze de date Haidei sa crem o astfel de baz de date (presupunem c deja ai instalat i configurat MySQL i putei s folosii linia de comand SQL, mysql 4.1.14-nt-max>). Dup cum se observ este foarte simplu s creai o baz de date: mysql 4.1.14-nt-max> CREATE DATABASE anunturi; Query OK, 1 row affected (0.14 sec) Am ales numele anunturi pentru baza noastr de date. Putei alege orice nume. Acum c am creat baza de date trebuie sa-i spunem serverului (n cazul nostru serverul MySQL) c vrem s folosim aceast baz de date: mysql 4.1.14-nt-max> USE anunturi; Database changed mysql 4.1.14-nt-max> Dac dorii s tergei o baz de date putei utiliza: mysql 4.1.14-nt-max> DROP DATABASE nume_baza_de_date;

Crearea unei tabel Crearea unei tabel este un lucru ceva mai complicat, pentru c n tabele sunt de fapt stocate informaiile. Dac vei citi manualul de MySQL vei descoperi o definiie ce la prima vedere pare criptic: mysql 4.1.14-nt-max> CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] [select_statement] sau mysql 4.1.14-nt-max> CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(] LIKE old_tbl_name [)]; S lum un exemplu concret i s vedem cum crem tabela noastr cu anunurI: mysql 4.1.14-nt-max> CREATE TABLE anunturi ( -> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -> text_anunt TEXT, -> data_anunt DATE NOT NULL -> ); Query OK, 0 rows affected (0.34 sec) Pare complicat? Haidei s vedem ce reprezint fiecare linie: prima linie pare destul de simpl. dac tii ceva englez e suficient s traducei i vei vedea c i se transmite serverului MySQL faptul c se dorete crearea unui tabel. a doua linie e n schimb ceva mai complicat. S o lum pe rnd. Aceast linie comunic serverului MySQL c dorim s crem o coloan cu numele "id" de timp ntreg ("INT") ce se va auto incrementa ("AUTO_INCREMENT") i informaiile coninute n aceast coloan vor fi unice ("PRIMAY KEY"). V-am explicat anterior faptul c o baza de date bine proiectat trebuie s aib un mod de a indentifica n mod unic o nregistrare (linie). a treia linie i comunic serverului MySQL c dorim s crem o coloan cu numele a patra linie i comunic serverului MySQL c dorim s crem o coloana cu numele "text_anunt" de tip "TEXT". "data_anunt" de tip "DATE" i mai mult dect att impunem condiia ca totdeauna s existe informaii n acest cmp (s nu fie niciodat gol, NOT NULL).

Recomandarea mea este s consultai manualul MySQL (l vei gsi n folderul unde ai instalat MySQL, subfolderul "Doc") pentru a afla mai multe despre tipuirle de date atunci cnd creai o tabel. Verificai existena tabelei introducnd de la prompter comanda: mysql 4.1.14-nt-max> SHOW TABLES; +--------------------+ | Tables_in_anunturi | +--------------------+ | anunturi | +--------------------+ 1 row in set (0.01 sec) Dac dorii s afiai cmpurile (coloanele) tabelei putei utiliza comanda: mysql 4.1.14-nt-max> SHOW COLUMNS FROM anunturi; +------------+---------+------+-----+------------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+---------+------+-----+------------+----------------+ | id | int(11) | | PRI | NULL | auto_increment | | text_anunt | text | YES | | NULL | | | data_anunt | date | | | 0000-00-00 | | +------------+---------+------+-----+------------+----------------+ 3 rows in set (0.01 sec) Dac dorii s tergei o tabel putei utiliza comanda: mysql 4.1.14-nt-max> DROP TABLE nume_tabel;

Introducerea de date ntr-un tabel Acum am creat baza de date i tabela dar ea este nc goal (nepopulat). Nu am introdus nici o informaie. Exista dou modaliti de a introduce informaii n baza de date. Folosii-o pe cea care vi se pare cea mai simpl:
mysql 4.1.14-nt-max> INSERT INTO anunturi SET -> text_anunt = "vand notebook HP Pavilion zd8000. Tel. 0721-525161", -> data_anunt = "2005-07-20"; Query OK, 1 row affected (0.05 sec)

sau:
mysql 4.1.14-nt-max> INSERT INTO anunturi -> (text_anunt, data_anunt) VALUES( -> "inchiriez spatiu comercial, ultracentral.Tel.0744-824224", "2005-03-04"); Query OK, 1 row affected (0.00 sec)

Pentru cea de-a treia nregistrare rmne la latitudinea dumneavoastr pe care din cele dou modaliti de introducere a datelor o vei folosi. Reinei c ambele variante sunt absolut echivalente. Observai c n nici una din variante nu am amintit nimic de cmpul "id". De ce? Pentru c iniial (cnd am creat tabela) am pus condiia ca acest cmp s fie AUTO_INCREMENT, iar la fiecare inserare a unei noi nregistrri, MySQL va avea grij s incrementeze cu 1 valoarea precedent i s o adauge automat n tabel. Vizualizarea datelor stocate Vom ncerca s obinem de la MySQL informaiile stocate. Dac dorim s obinem toate informaiile din baza nostr de date vom folosi:
mysql 4.1.14-nt-max> SELECT * FROM anunturi; +---+----------------------------------------------------------+-----------+|id| text_anunt |data_anunt | +---+----------------------------------------------------------+-----------|1| vand notebook HP Pavilion zd800. Tel.0721-525161 | 2005-07-20 | |2| inchiriez spatiu comercial,ultracentral.Tel.0744-824224 |2005-03-04 | |3| cumpar apartament, zona centrala. Tel.0788-293949 | 2005-01-26 | +--------------------------------------------------------------+------------+ 3 rows in set (0.02 sec)

n acest caz * se traduce prin "toate". Dac n schimb dorim s aflm numai anunurile folosim: mysql 4.1.14-nt-max> SELECT text_anunt FROM anunturi; +----------------------------------------------------------+ | text_anunt | +----------------------------------------------------------+ | vand notebook HP Pavilion zd8000. Tel.0721-525161 | | inchiriez spatiu comercial, ultracentral.Tel.0744-824224 | | cumpar apartament, zona centrala. Tel.0788-293949 | +----------------------------------------------------------+ 3 rows in set (0.00 sec) Sau dac dorim s aflm anunul i data cnd a fost publicat folosim:
mysql 4.1.14-nt-max> SELECT text_anunt, data_anunt FROM anunturi; +----------------------------------------------------------+------------+ | text_anunt | data_anunt | +----------------------------------------------------------+------------+ | vand notebook HP Pavilion zd8000. Tel.0721-525161 | 2005-07-20 | | inchiriez spatiu comercial, ultracentral.Tel.0744-824224 | 2005-03-04 | | cumpar apartament, zona centrala. Tel.0788-293949 | 2005-01-26 | +----------------------------------------------------------+------------+ 3 rows in set (0.00 sec)

Dar dac vrem s aflm cte anunuri au fost publicate de exemplu n data de 4 martie 2005? mysql> SELECT COUNT(*) FROM anunturi WHERE data_anunt="2005-03-04"; +----------+ | COUNT(*) | +----------+ | 1 | +----------+ 1 row in set (0.02 sec)

Dar dac vrem s aflm toate anunurile despre notebook-uri?


mysql 4.1.14-nt-max> SELECT text_anunt, data_anunt FROM anunturi text_anunt LIKE '%notebook%'; +--------------------------------------------------+------------+ | text_anunt | data_anunt | +--------------------------------------------------+------------+ | vand notebook HP Pavilion zd8000.Tel.0721-525161 | 2005-07-20 | +--------------------------------------------------+------------+ 1 row in set (0.01 sec) WHERE

Sfatul meu e s ncercai s exersai ct mai mult astfel de interogri (query) ctre baza de date. Modificarea datelor stocate La un moment dat va fi nevoie s modificm datele stocate. Acum vei nelege utilitatea cmpului "id". S presupunem c vrem s modificm anunul cu notebook-ul i s i adugm preul:
mysql 4.1.14-nt-max> UPDATE anunturi SET text_anunt = " vand notebook HP Pavilion zd8000. Pret 1000 RON. Tel.0721-525161" WHERE id = 1; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0

Putei observa c am modificat rndul ce are id=1. Dac acest cmp nu ar fi existat aceast modificare ar fi fost un pic mai dificil pentru c ar fi fost destul de greu s-i comunicm serverului MySQL ce rnd vrem de fapt s modificm. tergerea datelor stocate Utilitatea cmpului "id" se va vedea i atunci cnd vom dori s tergem o nregistrare. Dup cmpul "id" vom indentifica n mod unic nregistrarea pe care vrem s o tergem, astfel:
mysql 4.1.14-nt-max> DELETE FROM anunturi WHERE id = 1;

Adugarea unui cmp nou Vom aduga un cmp nou, data_exp_anunt, cmp n care va fi trecut data la care va expira acel anun. Se va utiliza comanda:
mysql 4.1.14-nt-max> ALTER TABLE anunturi ADD COLUMN data_exp_anunt DATE NOT NULL; Query OK, 3 rows affected (0.28 sec) Records: 3 Duplicates: 0 Warnings: 0

Verificm adugarea noului cmp:


mysql 4.1.14-nt-max> show columns from anunturi; +----------------+---------+------+-----+------------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------+---------+------+-----+------------+----------------+ | id | int(11) | | PRI | NULL | auto_increment | | text_anunt | text | YES | | NULL | | | data_anunt | date | | | 0000-00-00 | | | data_exp_anunt | date | | | 0000-00-00 | | +----------------+---------+------+-----+------------+----------------+ 4 rows in set (0.00 sec)

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