Documente Academic
Documente Profesional
Documente Cultură
Un sistem de gestiune pentru baze de date - SGBD (eng. DBMS = Database Management
Systems) este o colecţie de programe care are drept scop indicarea structurii bazei de date, popularea și
exploatarea sa, asigurând totodată și accesul concurent la date și protecţia datelor. Acesta are ca funcţii
definirea (specificarea structurii şi a tipurilor de date stocate), construcţia (popularea) şi manipularea
bazei de date prin diferite operaţii de la implementarea interogărilor pentru regăsirea informaţiilor până
la generarea de rapoarte .
MySQL este un sistem de baze de date relaţional realizat de TcX DataKonsult AB în 1996.
Soluția a revoluționat piața bazelor de date și a dus la parteneriate importante cu RedHat, Veritas,
Novell sau Rackspace. În 2008, MySQL a fost achizițional de Sun Microsytems, care la rândul ei a fost
cumparată de Oracle în 2009. Limbajul utilizat este SQL ( Structured Query Language) ce permite
definirea , manipularea și securizarea datelor stocate într-un model relațional în sistemul MySQL.
Scopul inițial al sistemului era orientat pe performanță - timp de răspuns redus la număr mare
de utilizatori și cereri de acces şi scalabilitate- susținerea perfomanței prin creșterea resurselor.
Rezultatul a fost un produs puternic optimizat ce nu includea inițial o serie de caracteristici considerate
standard pentru soluțiile de baze de date, cum ar fi procedurile stocate, trigger-ele sau tranzacțiile.
Ulterior, prin implementări din ce în ce mai performante aceste caracteristici au fost integrate motoarelor
moderne MySQL ( de ex. InnoDB).
Caracteristici MySQL
1
Limbaje de programare - există o serie de API-uri şi librării pentru dezvoltarea de aplicaţii
MySQL.
ODBC - MySQL oferă suport pentru ODBC, ceea ce permite adresarea MySQL din cadrul
limbajelor de programare ce ruleaza sub Windows (Delphi, Visual Basic etc.).
Independenţă de platformă
În cadrul aplicaţiilor web, cea mai des întâlnită pereche de limbaj de programare şi sistem de baze
de date este perechea PHP-MySQL. Cele mai importante avantaje acestei combinații sunt următoarele:
Sunt sub sistem de licențiere gratuită
Sunt orientate pe aplicații web
Sunt ușor de utilizat , oferă integrare simplă
Sunt rapide şi eficiente
În aceasta pereche, PHP este un limbaj de programare ce permite scrierea de aplicații simple,
precum afișarea unei pagini web complexe sau validarea datelor introduse de un utilizator într-un form.
PHP poate fi inclus în fîşiere HTML prin intermediul tag-urilor. Când o anumită sarcină necesită
accesul la o baza de date, PHP oferă un set de funcţii de acces direct la MySQL .
Serverul MySQL poate gestiona simultan mai multe baze de date accesate de mai mulţi
utilizatori. Dintre bazele de date gestionate de serverul MySQL, baza de date mysql este creată implicit
la instalarea serverului (în Windows) şi este formată din mai multe tabele care conţin informaţii despre
starea curentă a serverului: numele bazelor de date existente, numele calculatoarelor gazdă (host),
numele utilizatorilor, drepturile utilizatorilor asupra tabelelor şi a coloanelor. Operaţiile de creare
(ştergere) a bazelor de date, creare (ştergere) a utilizatorilor, schimbarea drepturilor de acces, se pot
face modificând continutul tabelelor bazei de date mysql. Unele din aceste operații pot fi efectuate şi
prin intermediul unor programe utilitare (mysqladmin sau wsmysqladmin ).
Utilizatorii serverului MySQL sunt identificati prin numele utilizatorului (user) şi, opțional,
printr-o parolă (password). Deşi se acceptă utilizatori fără parolă, este recomandabil să se introducă
parola pentru toti utilizatorii, pentru a proteja datele memorate în bazele de date. Utilizatorii serverului
MySQL nu sunt identici cu utilizatorii sistemului de operare (Windows sau Linux) şi trebuie să fie
creați după instalarea şi pornirea serverului. Drepturile de acces ale utilizatorilor se stabilesc după
crearea acestora prin comenzi SQL. Utilizatorul root, creat implicit la instalarea serverul MySQL este
contul de administrare şi are toate drepturile de creare şi modificare a bazelor de date. De asemenea,
După instalarea serverului MySQL în Windows, toti utilizatorii locali au drepturi de acces complet la
toate bazele de date, fără specificarea unei parole de acces.
Pentru a asigura o mai mare securitate, după instalarea şi pornirea serverului, administatorul
bazei de date va limita drepturile de acces ale utilizatorilor, conform cerintelor de funcţionare a bazei
de date. Prima acţiune este de a elimina dreptul de acces al unui utilizator oarecare (utilizator anonim)
la baza de date test, prin urmatoarele comenzi:
Diverse versiuni ale sistemului de gestiune a bazelor de date MySql pot fi identificate la adresa
http://www.mysql.com/products/standard/, sau http://dev.mysql.com/downloads/) .
O altă opțiune ce conține serverul MySQL şi suport pentru managementul bazelor de date și
proiectarea vizuală este utilitarul Workbench, ce poate fi descărcat de la adresa :
2
http://dev.mysql.com/downloads/workbench/ , respectiv produsul Navicat ce poate fi descărcat de la
adresa https://www.navicat.com/en/.
Un alt instrument integrat ,ce conține serverul Web - ApacheTomcat , serverul de baze de date
MySQL și un editor pentru programarea clienţilor în limbajul PhP și care simplifică modul de lucru cu
serverul de baze de date MySQL este XAMPP și poate fi descărcat de la adresa
http://www.apachefriends.org/en/xampp.html. Diverse alte sisteme software pentru gestionarea
datelor în baze de date MySQL, mult edintre ele cu sursă deschisă, noncomerciale pot fi consultate la
adresa http://www.databasejournal.com/features/mysql/slideshows/top-10-mysql-gui-tools.html.
2.2.Tipuri de date
Ca orice limbaj de programare, limbajul SQL suportă anumite tipuri de date. Ele pot fi în
general împarţite în: numerice, logice, data calendaristică, timp, şiruri de caractere şi date binare
mari (BLOB - binary large object). Din motive de implementare, fiecare sistem de gestiune de baze
de date implementează propriile subtipuri ale tipurilor de bază. Aceasta situatie poate pune uneori
probleme de compatibilitate la trecerea bazelor de date de pe un sistem pe altul.În continuare se vor
prezenta tipurile de date suportate de MySQL.
Ca şi regulă generală, notaţia: tip [(M, D)] [optiuni] are următoarea interpretare: tipul de date
referit este afisat pe M pozitii, eventual cu D pozitii în partea zecimala. Toate valorile ce se găsesc în
paranteze drepte semnifică mărimi opționale. Optiunile M şi D nu influentează însă spațiul de stocare
necesar pentru memorarea valorilor de acel tip.
3
DATE - Dată calendaristică, în intervalul ['1000-01-01'..'9999-12-31']. Stocarea/afişarea se
face implicit în formatul 'YYYY-MM-DD' (an-lună-zi).
TIMESTAMP [(M)] = Moment de timp, care include şi data calendaristică. Este util la
înregistrarea efectuării unor operaţii gen inserare sau modificare, deoarece reţine implicit data
efectuării ultimei operaţii. Întervalul de valori posibile este ['1970-01-01 00:00:00'..'2037-01-
01 00:00:00']. Afişarea se face în formatul: YYYYMMDDHHMMSS,
YYMMDDHHMMSS, YYYYMMDD sau YYMMDD
o După cum M este 14 (sau lipseste), 12, 8 sau 6.
CHAR (M) = Şir de caractere de lungime fixă. Lungimea M a şirului poate lua valori în
intervalul [1..255]. o BIT/BOOL/CHAR = sinonime cu declaraţia CHAR.
VARCHAR (M) = şir de caractere de lungime variabilă. Lungimea M a şirului poate lua valori
în intervalul [1..255].
Se folosesc pentru a reţine obiecte binare (BLOB) de mari dimensiuni (ex. imagini, secvenţe audio sau
video) sau pentru a reţine texte de dimensiune mai mare de 255 caractere (TEXT).
BLOB/TEXT - Valori BLOB, TEXT cu lungime de max. 65535 (64 KB) elemente.
4
ENUM ('value1', 'value2',...) - Enumerare de elemente tip şir de caracter. Un obiect de acest
tip poate avea la un moment dat o singură valoare dintre cele enumerate sau valoarea NULL. Valoarea
" " (şir vid) este considerată eroare. Un tip enumerare poate defini maxim 65535 de valori distincte.
SET ('value1', 'value2',...) - Mulţime de elemente tip şir de caracter. Un obiect de acest tip poate
conţine la un moment dat mai multe valori distincte dintre cele definite sau poate fi gol
(nu conţine nici o valoare). Un tip mulţime poate defini maxim 65 de valori membru.
Constante.
Constantele de tip şir de caractere se includ între apostroafe sau ghilimele: 'constanta şir' "alta
constanta şir". În interiorul unui şir se pot include caractere speciale precedate de semnul '\' (escape):
\n Trecere la linie noua (new line).
\t Tab (caracter de aliniere).
\r Salt la inceputul liniei (carriage return).
\b Sterge inapoi.
\' Caracterul '.
\" Caracterul ".
\\ Caracterul \.
\% Caracterul '%'. Se poate folosi pentru a căuta caracterul %, în conditiile în care acest
caracter este folosit în expresii regulate (subiectul va fi detaliat ulterior).
\_ Caracterul _. Se poate folosi pentru a căuta caracterul _, în conditiile în care acest caracter
este folosit în expresii regulate (subiectul va fi detaliat ulterior).
Constantele întregi sunt reprezentate prîntr-un şir de cifre zecimale. Constantele reale conţin semnul
'.' pentru specificarea părţii zecimale. Ambele tipuri pot fi precedate de semnul '-' pentru a indica numere
negative.
Identificatori. Numele pentru baza de date, tabele, coloane, indecşi sau alias-uri trebuie să
îndeplinească condiţiile normale pentru identificatori în limabje de programare: să fie o combinatie de
litere, cifre şi semne grafice care încep cu o litera. Identificatorii pot fi scrîşi în general cu orice
combinatie de litere mari sau mici. Pentru numele bazei de date şi cel al tabelelor unele, implementări
impun respectarea tipului de caractere folosit la definirea elementelor respective. Ca şi regulă generală,
este bine să se păstreze o convenție de notare care să nu fie schimbata de la o interogare la alta. O regulă
simpla este să se scrie comenzile SQL cu litere mari şi identificatorii definiti de utilizator cu litere mici.
Comentarii: MySQL suportă trei tipuri de comentarii prin care se poate explica codul. Ele sunt:
Comentarii pe o singura linie care incep cu # şi continuă până la sfârșitul liniei;
Comentarii pe o singura linie care incep cu -- şi continuă până la sfârșitul liniei.
Comentarii pe mai multe linii care incep cu /* şi se incheie cu */
5
NOT ! - Negatie logica. Întoarce 1 dacă argumentul este 0, altfel întoarce 0. (NOT NULL
întoarce NULL).
OR || - SAU logic. Întoarce 1 dacă cel putin un argument nu este 0 sau NULL. o AND && -
SI logic. Întoarce 0 sau NULL dacă cel putin un argument este 0 sau NULL, altfel întoarce 1.
Operatori de comparare. Operatorii de comparăre returnează 1 pentru adevărat, 0 pentru fals şi NULL
dacă nu se poate efectua comparătia.Ei pot compară atât numere cât şi şiruri de caractere. La
comparărea unui număr cu un şir se încearcă transformarea şirului în numărul pe care il contine. La
comparărea a doua şiruri nu se va tine cont de litere mari/mici.
= egalitate; la comparărea cu NULL întoarce NULL; o != inegalitate; o < - mai mic; o <= -
mai mic sau egal; o > - mai mare; o >= - mai mare sau egal;
<=> - echivalenta; la comparărea cu NULL întoarce 0 sau 1 (1 doar la NULL <= > NULL);
dacă ambii operanzi sunt diferiti de NULLse comporta ca şi =;
IS NULL - testează dacă operandul are valoarea NULL; o IS NOT NULL - testează dacă
operandul este diferit de NULL; o ISNULL(expr) - testează dacă expresia are valoarea NULL;
expr BETWEEN min AND max - testează dacă valoarea expresiei este în intervalul
[min..max]; o expr IN (value,... ) - testează dacă valoarea expresiei este în lista de
valori specificată;
expr NOT IN (value,... ) - testează dacă valoarea expresiei nu este în lista de valori specificată;
IF(expr1,expr2,expr3) - testează valoarea de adevăr a expr1 (falsă dacă este 0 sau NULL) şi
întoarce expr2 pentru adevărat respectiv expr3 pentru fals;
Pentru expresii logice diverse,din surse de cod SQL este utilă cunoașterea modului în care acestea vor
fi executate bazat pe aplicarea regulilor de precedenţă a operatorilor:
https://dev.mysql.com/doc/refman/5.7/en/operator-precedence.html
6
UPPER(str) - întoarce şirul str cu toate caracterele convertite la litere mici, respectiv litere
mari.
şir (NOT) LIKE tipar - compară şirul şir cu tiparul dat. Întoarce adevărat (1) dacă se potrivesc.
Tiparele pot include caracterele speciale: '_' care se potriveste cu orice caracter şi '%' care poate
inlocui orice secventa de 0 sau mai multe caractere.
Comparații pe stringuri:
http://dev.mysql.com/doc/refman/5.7/en/string-functions.html
http://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.html
2.4.2.Funcţii matematice
Funcţii speciale
DATABASE() - numele bazei de date active
USER() - numele utilizatorului conectat la server
7
VERSION() - returnează versiunea serverului MySQL
instalat
PASSWORD(str) - criptare şir După metoda interna prin care MySQL îşi păstrează parolele;
criptarea nu este reversibila (nu se poate calcula şirul de plecare pornind de la cheia criptata)
FORMAT(N,D) - returnează numărul N în format '#,###,###.##' cu D zecimal
3.1. Se va instala și studia toolul integrat utilizat în dezvoltarea aplicațiilor cu baze de date MySQL
Workbench, parcurgând tutorialul asociat ce poate fi accesat la adresa https:/ftp.utcluj.ro
/~civan/IBD
3.2. Se vor identifica tipurile de date prezentate în motorul de baze de date MySQL. Se vor studia
caracteristicile lor și se vor imagina date din lumea reală translatate către o anumită reprezentare
MySQL
3.4. Identificați operatori și funcții specifice MySQL pentru operarea cu date relaționale
3.5. Scrieţi comenzile necesare în editorul SQL din Workbench pentru a afla următoarele informaţii:
•
• sin ( )
• Data curentă
• Pentru data de “2017-10-01” găsiţi:
- Numele zilei săptămânii - Ziua din an
- Numărul săptămânii din an