Documente Academic
Documente Profesional
Documente Cultură
Flexibilitatea - indiferent de sistemul de operare, MySQL ofera suport pentru majoritatea acestora:
Compaq Tru64, DEC OSF, FreeBSD, IBM AIX, HP-UX, Linux, Mac OS X, Novell NetWare, OpenBSD,
QNX, SCO, SGI IRIX, Solaris (versiunile 8, 9 și 10), și Microsoft Windows. De asemenea exista pachete și
pentru Red Hat, SUSE sau Ubuntu. Pe langa sistemele de operare, MySQL ofera API-uri pentru cele mai
populare limbaje de programare: C, C++, Java, perl, PHP, Ruby și Tcl. Pe de alta parte se folosesc o serie de
mecanisme pentru managementul datelor, denumite motoare de stocare. În mod similar cu un algoritm, un motor
de stocare este adaptat anumite funcții particulare. Dintre motoarele oferite, se pot aminti: MyISAM,
MEMORY, InnoDB sau MERGE. În versiunea 5 a MySQL au fost adaugate ARCHIVE, BLACKHOLE,
CSV, FEDERATED și EXAMPLE. MySQL permite utilizarea mai multor motoare de stocare simultan în
aceeași baza de date.
Putere de procesare - chiar de la început, dezvoltatorii MySQL s-au axat pe performanja, cu costul
lipsei anumitor facilitaji. Printre caracteristicile importante oferite se numara:
• Funcfii SQL de nivel enterprise - datorita lipsei unor funcjii avansate, precum subinterogarile,
view-urile sau procedurile stocate, mulți utilizatori nu au putut folosi MySQL la nivel
enterprise. Însa în versiunea 5, toate acestea au fost introduse.
• Cautarea și indexarea textului în forma completa - aceasta funcție permite marirea performanjelor la
manipularea coloanelor de tip text. În același timp, se permite returnarea unor rezultate
dependente de gradul de similitudine al interogarii cu indexarea textului din Tnregistrare.
• Cache pentru interogari - este una dintre cele mai importante contribujii de performanța. Aceasta
funcjie permite stocarea unor interogari SELECT Tmpreuna cu rezultatele returnate în
memoria interna. Interogarile efectuate ulterior sunt comparate cu interogarile din cache, iar
daca se potrivesc, MySQL nu mai acceseaza baza de date. Pentru a elimina returnarea unor
rezultate neactualizate, exista mecanisme de înlăturare a rezultatelor nevalide din cache.
• Replicare - permite unei baze de date localizata pe un anumit server sa fie duplicata pe un alt
server. Se objin astfel o serie de avantaje, cum ar fi ca în loc de a avea o singura baza de date
disponibila, se pot accesa alternative ale acesteia pentru a maximiza disponibilitatea datelor. Se
faciliteaza astfel și back-up-ul prin utilizarea bazelor de date duplicat, fara a fi necesar un
back-up offline.
Securitatea - este asigurata printr-o multitudine de opțiuni de configurare ce permit un control total
asupra tuturor aspectelor implicate în operarea bazei de date. Se pot configura elemente de nivelul dimensiunii
memoriei alocate pentru firele de execujie, a interogarilor sau a tabelelor temporare sau chiar elemente la nivel
de numarul de tentative de conectare la rețea, dimensiunea maxima a pachetelor etc. Si pot ajunge pana la
numarul de conexiuni permise Tntr-o ora sau numarul de actualizari ale datelor.
Tn plus, MySQL stocheaza informal legate de numarul de octeți transferați, numarul de interogari de
un anumit tip executate, sau numarul de fire de execute deschise, în derulare, în cache sau conectate.
1 UTCN, C.Ivan
Introducere în baze de date L1. Concepte introductive MySQL
1.MySQL 4.0 - lansat Tn 2003 a fost considerat ca fiind o versiune ce a revoluționat MySQL
prin introducerea unor funcjii de tip enterprise prin:
a.Motorul de stocare InnoDB - include tranzacții, integritatea cheii straine și lock
la nivel de Tnregistrare.
b.Cache pentru interogari - mărește performanțele interogarilor de tip SELECT
prin stocarea rezultatelor acestora în memorie fara a accesa baza de date.
c.Server MySQL embedded - permite integrarea serverului MySQL Tn aplicajiile
embedded pe dispozitive de tip telefon mobil, PDA sau CD-ROM-uri.
d.Subinterogari - reduc complexitatea unor interogari.
e.Conexiuni sigure prin utilizarea SSL (Secure Sockets Layer) - utilizarea doar
aconexiunilor necriptate de tip client-server permite ca datele de autentificare sa fie
interceptate §i chiar modificate de terje parji. O data cu versiunea 4.0 au fost
introduse conexiunile criptate.
f. Extensii spajiale - permit crearea, stocarea și analizarea informajiilor
geografice. Acestea pot fi utilizate pentru a afișa pe harji locații ale unor puncte
de interes într-un spațiu definit
2.MySQL 5 - lansat în 2005, a introdus un nou set de funcții de tip enterprise, mărind și mai
mult capabilitajile MySQL prin:
a. Proceduri stocate - un set de instrucjiuni SQL ce este stocat în baza de date și
poate fi apelat în mod similar cu funcjiile grup de tipul min() sau rand(). Prin
aceasta funcjie, Tn conformitate cu standardul SQL-2003 a fost Tnlaturat §i
ultimul dezavantaj major al MySQL
b. View-uri - tabelele unei baze de date conțin anumite informajii ce nu trebuie sa
fie accesate în mod public, astfel ca se creaza view-uri ce limiteaza accesul la
datele stocate de tabelele bazei de date. View-urile reduc și utilizarea unor
interogari complexe asupra mai multor tabele. O data construit un view printr-o
interogare de tip SELECT, acesta este stocat în baza de date și poate fi accesat în
mod similar cu tabelele. View-urile mai sunt definite și ca fiind o reprezentare
virtuala a unui set de date ale unuia sau a mai multor tabele.
c. Triggere - sunt proceduri stocate apelate în funcție de apariția unui eveniment
specific. Sunt folosite pentru a valida sau impune anumite constrangeri asupra
datelor inserate în baza de date.
d. INFORMATION_SCHEMA - în MySQL exista comanda SHOW, ce permite
afisareastructurilor bazei de date. Tnsa metodologia ei este incompatibila cu alte baze
și date si nu permite utilizarea ei în cadrul instrucțiunilor SELECT.
INFORMATION_SCHEMA însa conține metadate despre bazele de date de pe
server.
Caracteristici MySQL
Sunt enumerate în continuare o serie de caracteristici particulare importante ale MySQL.
• Sistem cu baze de date de tip relational
• Arhitectura de tip client-server - spre deosebire de Access, dBase sau FoxPro, care sunt sisteme de
tip file-server, ce devin ineficiente Tn utilizarea Tn rejea
• Compatibilitate SQL - permite utilizarea SQL si adera la standardul SQL-2003 cu o serie de
restricjii, dar si extensii. Se poate configura însa în modul sql-mode si devine astfel compatibil
cu multiple sisteme cu baze de date, cum ar fi DB/2 sau Oracle.
• Unicode - permite utilizarea Tntregului set de caractere Latin-1, Latin-2 si Unicode (UTF8 sau
UCS2)
• Interfafa grafică - exista multiple interfețe pentru managementul serverelor MySQL
2 UTCN, C.Ivan
Introducere în baze de date L1. Concepte introductive MySQL
Sistemul de gestiune MySQL se instaleaza ca un server care poate gestiona mai multe baze de date, fiecare
dintre acestea având un nume distinct si fiind memorata într-un subdirector al directorului ..\mysql\data.
Pentru accesarea unei baze de date, utilizatorii se conecteaza la server folosind conturi de conectare, care
ofera anumite drepturi de administrare si accesare a datelor. Instalarea serverului MySQL se face foarte
simplu, executând programul de instalare Setup.exe, dupa dezarhivarea fisierului de distributie. Toate
informatiile privind instalarea, administrarea si particularitatile de limbaje si biblioteci de programare se gasesc
în manualul din pachetul de instalare (..\mysql\docs\manual.html).
Dupa instalarea MySQL, pornirea serverului în Windows se poate realiza în doua moduri: ca serviciu,
sub controlul SCM (Service Control Manager), sau ca program executabil. Pentru instalarea serverului MySQL ca
serviciu Windows, se opreste mai întâi serverul (daca acesta era deja pornit) cu comanda:
C:\mysql\bin> mysqladmin -u root shutdown
Apoi se instaleaza serverul MySQL ca serviciu Windows prin comanda:
C:\mysql\bin> mysqld-max-nt –install
Dupa instalarea serviciului, pornirea acestuia se face cu comanda: NET sTART MysQL, sau cu
utilitarul Services din Control Panel (în sectiunea Administrative Tools sub Windows 2000/XP). Serviciul astfel
instalat va porni automat la pornirea sistemului de operare, dar aceasta optiune se poate modifica (prin
utilitarul Services), astfel încât pornirea sa se faca manual.
3 UTCN, C.Ivan
Introducere în baze de date L1. Concepte introductive MySQL
Atunci când este lansat ca serviciu, serverul MySQL poate fi oprit oricând cu utilitarul
Services, cu comanda NET STOP MySQL, sau folosind utilitarul mysqladmin (cu comanda aratata mai sus). De
asemenea, serverul este oprit automat la oprirea (shutdown) sistemului de operare.Daca nu se doreste
functionarea ca serviciu a serverului MySQL, acesta poate fi lansat ca program executabil cu comanda:
C:\mysql\bin>mysqld-max-nt —standalone
Dupa ce serverul MySQL a fost pornit, se pot executa diferite programe client de acces la baza de
date, dintre care unele pot fi programe utilitare continute în kit-ul de distributie si instalate odata cu instalarea
serverului, iar altele pot fi programe de aplicatii dezvoltate pentru o anumita functionalitate.
Programele utilitare din kit-ul de distributie (mysqlshow, mysqladmin, winmysqladmin, mysql, etc.) sunt
folosite pentru administrarea bazei de date, pentru testare, pentru importul sau exportul bazelor de date, etc.
Acestea se gasesc în subdirectorul bin al drectorului mysql unde s-a facut instalarea (...\mysql\bin). Daca se
include acest subdirector în calea sistemului (path), atunci lansarea diferitelor toolset-uri se face mai simplu,
direct cu numele acestora din orice director.
Utilitarul mysqlshow afiseaza informatii despre bazele de date existente; daca se executa
mysqlshow imediat dupa instalarea si pornirea serverului MySQL, acesta va afisa numele celor
doua baze de date care se creeaza automat la instalare: mysql si test.
Serverul MySQL poate gestiona simultan mai multe baze de date accesate de mai multi utilizatori.
Dintre bazele de date gestionate de serverul MySQL, baza de date mysql este creata implicit la instalarea
serverului (în sistemul de operare Windows) si este formata din mai multe tabele care contin informatii despre
starea curenta a serverului: numele bazelor de date existente, numele calculatoarelor gazda (host), numele
utilizatorilor, drepturile utilizatorilor asupra tabelelor si a coloanelor. Operatiile de creare (stergere) a bazelor
de date, creare (stergere) a utilizatorilor, schimbarea drepturilor de acces, se pot face modificând continutul
tabelelor bazei de date mysql. Unele din aceste operatii pot fi efectuate si prin intermediul unor programe
utilitare (mysqladmin sau wsmysqladmin ).
Utilizatorii serverului MySQL sunt identificati prin numele utilizatorului (user) si, optional, printr-o
parola (password). Desi se accepta utilizatori fara parola, este recomandabil sa se introduca 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) si trebuie sa fie creati dupa instalarea si pornirea serverului. Drepturile
de acces ale utilizatorilor se stabilesc dupa crearea acestora prin comenzi SQL. Utilizatorul root, creat implicit
la instalarea serverul MySQL este contul de administrare si are toate drepturile de creare si modificare a
bazelor de date. De asemenea, dupa instalarea serverului MySQL în Windows, toti utilizatorii locali au
drepturi de acces complete la toate bazele de date, fara specificarea unei parole de acces.
Pentru a asigura o mai mare securitate, dupa instalarea si pornirea serverului, administatorul bazei de
date va limita drepturile de acces ale utilizatorilor, conform cerintelor de functionare a bazei de date. Prima
actiune este de a elimina dreptul de acces al unui utilizator oarecare (utilizator anonim) la baza de date test,
prin urmatoarele comenzi :
C:\mysql\bin>mysql mysql
mysql> DELETE FROM user WHERE Host='localhost' AND User=''; mysql>
QUIT
C:\mysql\bin>mysqladmin reload
Dupa acesta, se va introduce o parola pentru utilizatorul de administrare (root) cu comanda:
C:\mysql\bin>mysqladmin -u root password parola_admin
Din acest moment, la orice acces al utilizatorului root va trebui sa fie introdusa parola setata. S-a
presupus ca serverul mysql a fost instalat în directorul C: \mysql; daca a fost instalat în alt director, atunci în
comenzile de mai sus se trece numele directorului respectiv.
4 UTCN, C.Ivan
Introducere în baze de date L1. Concepte introductive MySQL
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 și suport pentru managementul bazelor de date și proiectarea vizuală este
http://dev.mysql.com/downloads/workbench/
Un instrument integrat ,ce conține serverul Web- Apache , serverul de baze de date MySQL și editor pentru
programarea clientilor î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.
Ca orice limbaj de programare, limbajul SQL suporta anumite tipuri de date. Ele pot fi in general
impartite in: numerice, logice, data calendaristica, timp, siruri de caractere si date binare mari (BLOB - binary
large object).Din motive de implementare, fiecare sistem de gestiune de baze de date implementeaza propriile
subtipuri ale tipurilor de baza. Aceasta situatie poate pune uneori probleme de compatibilitate la trecerea
bazelor de date de pe un sistem pe altul.In continuare se vor prezenta tipurile de date suportate de MySQL.
5 UTCN, C.Ivan
Introducere în baze de date L1. Concepte introductive MySQL
DATE
Data calendaristica. Intervalul de valori posibile este ['1000-01-01'..'9999-12-31']. Stocarea/afisarea se
face implicit in formatul 'YYYY-MM-DD' (an-luna-zi).
DATETIME
Combinatie de data calendaristica si timp. Intervalul de valori posibile este ['1000-01-01
00:00:00'..'9999-12-31 23:59:59']. Stocarea/afisarea se face implicit in formatul 'YYYY-MM-DD
HH:MM:SS' (an-luna-zi ora:minut:secunda).
TIMESTAMP [(M)]
Moment de timp. Include si data calendaristica. Este util la inregistrarea efectuarii unor operatii gen
inserare sau modificare pentru ca retine implicit data efectuarii ultimei operatii. Doar prima coloana de
acest tip din tabela in care se face modificarea va fi actualizata automat! Intervalul de valori posibile
este ['1970-01-01 00:00:00'..'2037-01-01 00:00:00']. MySQL afiseaza valorile TIMESTAMP in format
YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD sau YYMMDD dupa cum M este 14
(sau lipseste), 12, 8 sau 6. Parametrul M nu influenteza insa reprezentarea interna a datelor la stocare.
TIME
Moment de timp. Intervalul de valori posibile este [-838:59:59'..'838:59:59']. Reprezentarea este in
format 'HH:MM:SS' (ora:minut:secunda). Motivul pentru care ora nu este limitata la intervalul [0..24]
esta ca acest tip poate fi folosit si pentru a retine intervale de timp intre doua evenimente. Tot din acest
motiv ora poate fi si negativa.
YEAR [(2|4)]
An calendaristic pe 2 sau 4 cifre. Intervalul de valori posibile este [1901..2155] pentru 4 cifre, respectiv
[1970..2069] pentru 2 cifre (70-99..00- 69).
BIT/BOOL/CHAR
Sunt sinonime cu declaratia CHAR(1).
Se folosesc pentru a retine obiecte binare (BLOB) de mari dimensiuni (ex. imagini, secvente audio sau
video) sau pentru a retine texte de dimensiune in general mai mare de 255 caractere (TEXT). La comparatia
campurilor tip TEXT nu se va tine cont de tipul caracterelor (mari/mici).
TINYBLOB/TINYTEXT
Valori BLOB, respectiv TEXT cu lungime de max. 255 elemente.
6 UTCN, C.Ivan
Introducere în baze de date L1. Concepte introductive MySQL
BLOB/TEXT
Valori BLOB, respectiv TEXT cu lungime de max. 65535 (64 KB) elemente.
MEDIUMBLOB/MEDIUMTEXT
Valori BLOB, respectiv TEXT cu lungime de max. 16777215 (16 MB) elemente.
LONGBLOB/LONGTEXT
Valori BLOB, respectiv TEXT cu lungime de max. 4294967295 (4 TB) elemente.
ENUM ('value1','value2',...)
Enumerare de elemente tip sir de caracter. Un obiect de acest tip poate avea la un moment dat
o singura valoare dintre cele enumerate sau valoarea NULL. Valoarea " " (sir vid) este
considerata valoare de eroare. Un tip enumerare poate defini maxim 65535 de valori distincte.
SET ('value1','value2',...)
Multime de elemente tip sir de caracter. Un obiect de acest tip poate contine la un moment dat
mai multe valori distincte dintre cele definite sau poate fi gol (nu contine nici o valoare). Un
tip multime poate defini maxim 65 de valori membru.
Constante. Constantele tip sir de caractere se includ intre apostroafe sau ghilimele:
'constnta sir' "alta constanta sir"
In interiorul unui sir se pot include caractere speciale precedate de semnul '\' (escape):
Constantele intregi sunt reprezentate printr-un sir de cifre zecimale. Constantele reale contin semnul '.'
pentru specificarea partii zecimale.Ambele tipuri pot fi precedate de semnul '-' pentru a indica numere
negative.
Identificatori. Numele pentru baza de date, tabele, coloane, indecsi sau alias-uri trebuie sa
indeplineasca conditiile normale pentru identificatori in limabje de programare: sa fie o combinatie de litere,
cifre si semne grafice care incep cu o litera. Identificatorii pot fi scrisi in general cu orice combinatie de litere
mari sau mici. Pentru numele bazei de date si cel al tabelelor unele, implementari impun respectarea tipului de
caractere folosit la definirea elementelor respective. Ca si regula generala, este bine sa se pastreze o conventie
de notare care sa nu fie schimbata de la o interogare la alta. O regula simpla este sa se scrie comenzile SQL cu
litere mari si identificatorii definiti de utilizator cu litere mici.
Comentarii. MySQL suportă trei tipuri de comentarii prin care se poate explica codul. Ele sunt:
7 UTCN, C.Ivan
Introducere în baze de date L1. Concepte introductive MySQL
Operatori aritmetici.Operatorii aritmetici opereaza asupra numerelor intregi cu precizia BIGINT (pe
64 biti). Sunt disponibili următorii operatori:
• + pentru adunare;
• - pentru scadere;
• * pentru inmultire;
• / pentru impartire; daca se imparte la 0 rezultatul va fi NULL;
• NOT
! - Negatie logica. Intoarce 1 daca argumentul este 0, altfel intoarce 0. Exceptie: NOT NULL intoarce
NULL.
• OR
|| - SAU logic. Intoarce 1 daca cel putin un argument nu este 0 sau NULL.
• AND
&& - SI logic. Intoarce 0 sau NULL daca cel putin un argument este 0 sau NULL, altfel
intoarce 1.
ASCII(str) - intoarce codul ASCII al caracterului de pe pozitia 1 din sir. Daca sirul este vid intoarce 0.
CONV(N, from_base, to_base) - converteste numarul N considerat in baza from_base in valoarea
sa in baza to_base.
CHAR(N,...) - converteste sirul de numere primite intr-un sir de caractere ale caror coduri ASCII
sunt egale cu cele din sirul initial.
CONCAT(str1,str2,...) - concateneaza sirurile primite ca argument, returnand sirul rezultat.
LENGTH(str) - intoarce lungimea (numarul de caractere) a sirului primit ca si argument.
LOCATE(substr,str)
POSITION(substr IN str) - cauta prima aparitie a sirului substr in sirul str.Daca il gaseste returneaza
pozitia, daca nu, returneaza 0.
LEFT(str,len) - intoarce un sir format din primele len caractere din sirul dat.
RIGHT(str,len) - intoarce un sir format din ultimele len caractere din siruldat.
SUBSTRING(str,pos,len)
MID(str,pos,len) - intorc subsirul de pe pozitia pos, de lungime len caractere din sirul str.
SUBSTRING_INDEX(str,delim,count) - intoarce subsirul pana la count aparitii ale caracterului
delimitator delim. Daca delim este pozitiv intoarce prima parte a sirului, daca este negativ, ultima parte.
LTRIM(str)
RTRIM(str)
TRIM(str) - intoarce sirul str fara spatiile de la inceput (LTRIM), sfarsit (RTRIM) sau din ambele
parti (TRIM). SPACE(N) - intoarce un sir format din N spatii. LOWER(str)
8 UTCN, C.Ivan
UPPER(str) - intorc sirul str cu toate caracterele convertite la litere mici, respectiv litere mari. sir
(NOT) LIKE tipar - compara sirul sir cu tiparul dat. Intoarce adevarat (1) daca se potrivesc. Tiparele
pot include caracterele speciale: '_' care se potriveste cu orice caracter si '%' care poate inlocui orice
secventa de 0 sau mai multe caractere.
Functii speciale
http://en.wikipedia.org/wiki/Database
http://dev.mysql.com/doc/refman/5.7/en/data-types.html
http://dev.mysql.com/doc/refman/5.7/en/choosing-types.html
o
Conversia de tip în evaluarea expresiilor
http://dev.mysql.com/doc/refman/5.7/en/type-conversion.html
Operatori
http://dev.mysql.com/doc/refman/5.7/en/non-typed-operators.html
9 C. Ivan - Introducere in Baze de Date, UTCN
Precedența operatorilor
http://dev.mysql.com/doc/refman/5.7/en/operator-precedence.html
Funcții și operatori pentru comparații
http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html
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
11 UTCN, C. Ivan