Sunteți pe pagina 1din 11

Introducere în baze de date L1.

Concepte introductive MySQL

CONCEPTE INTRODUCTIVE MYSQL


MySQL este un sistem de baze de date relational realizat de TcX DataKonsult AB Tn 1996. Soluția a
revoluțional 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 randul ei a fost cumparata de
Oracle în 2009.
Scopul inițial al sistemului era orientat pe performanță și a scalabilitate. Rezultatul a fost un produs
puternic optimizat ce nu includea o serie de caracteristici considerate standard pentru soluțiile de baze de
date, cum ar fi procedurile stocate, trigger-ele sau tranzacțiile.

Caracteristicile importante ale MySQL sunt:

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.

Optiuni flexibile pentru licența - MySQL oferă două tipuri de licențe:


• MySQL Open Source Licence - permite utilizarea întregului soft sub licența GNU General Public
Licence (GPL), ceea ce Tnseamna ca se permite utilizarea modificarea și redistribuirea
surselor. Deoarece GPL implica redistribuirea gratuita și a soft-ului dezvoltat pe baza
MySQL, se ofera și opțiunea Sun's Free and Open Source License (FOSS) Exception, ce
permite utilizarea MySQL Tn combinajie cu software cu licence open source de tipul Apache
Software License, BSD license, GNU Lesser General Public License (LGPL), sau PHP
License.
• Licenta comerciala - este disponibila pentru cazurile Tn care nu se dorește redistribuirea open
source a proiectelor dezvoltate pe baza MySQL. Tn acest caz se poate plati pentru o licenja
corespunzatoare cu tipul de aplicație dezvoltată.
MySQL a fost vreme îndelungata considerat satisfacator datorita vitezei sale, Tnsa Tn acela§i timp
desconsiderat datorita lipsei facilitajilor considerate importante pentru aplicațiile enterprise. Tn continuare
sunt prezentate pe larg caracteristicile celor mai cunoscute versiuni ale MySQL:

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.

3. MySQL 5.1 - include:


a. Motor de stocare API de tip plug-in - permite autentificarea utilizatorilor pe
baza unei solujii proprietare, filtrarea personalizata a datelor și interogarea
formatelor nestandardizate precum MP3.
b. Patijionare - permite împărțirea tabelelor în subsegmente, utila în manipularea
unei cantitaji mari de date. Performanja interogarilor creste deoarece index-
urile tabelelor sunt reduse la domenii mai mici si cu valori continue. Se poate
astfel partijiona de exemplul tabelul cu Facturi pe baza anului sau a lunii Tn care
au fost emise.
c. Programarea evenimentelor - executa anumite interogari pe baza unei
programări temporale a lor
d. Testarea încărcării - (load testing) - permite emularea accesarii simultane a
bazei de date de catre mai mulji clienți simultan
4. MySQL 5.4 si 5.5 - sunt versiuni lansate dupa achiziția MySQL de catre Oracle si includ o
serie noua de funcjii pentru optimizarea performanjelor.

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

• Cautarea îi indexarea textului în forma completa


• Replicarea
• Funcfii GIS - sau Geographic Information Sytems - suport pentru stocarea si procesarea
datelor geografice bidimensionale
• Limbaje de programare - exista o serie de API-uri si librarii pentru dezvoltarea de aplicajii
MySQL.
• ODBC - MySQL ofera suport pentru ODBC, ceea ce permite adresarea MySQL din cadrul
limbajelor de programare ce ruleaza sub Windows (Delphi, Visual Basic etc.).
• Independenfa de platforma
În cadrul aplicajiilor web, cea mai des întâlnită pereche de limbaj de programare și sistem de baze de
date este pereche PHP-MySQL. Avantajele acestei combinajii sunt urmatoarele:
• Amandoua sunt gratis
• Sunt orientate pe aplicații web
• Sunt ușor de utilizat
• Sunt rapide și eficiente
• Comunica eficient unul cu altul.
Tn aceasta pereche, PHP este un limbaj de programare ce permite scrierea de aplicații simple, precum
afișarea unei pagini web sau complexe, precum validarea datelor introduse de un utilizator într-un form. PHP
poate fi inclus în fișiere HTML prin intermediul tag-urilor PHP. Când o anumita sarcina necesita accesul la o
baza de date, PHP ofera un set de funcjii de acces direct la MySQL . În capitolul anterior a fost descrisa
modalitatea de crearea a unui conector PHP la MySQL.

Limitări ale MySQL


Contrar multiplelor avantaje ale MySQL, ce optimizeaza performanjele bazelor de date și permit
utilizarea acestuia Tn cadrul unor aplicații numeroase, exista o serie de limitari de ordin tehnic, ce trebuie luate
în considerare în momentul alegerii unei soluții pentru un sistem cu baze de date.
O prima limitare se refera la utilizare în cadrul tabelelor standard (de tip MyISAM), lock-ul se poate
face doar la nivel de tabel. Problema poate fi ocolita prin utilizarea unor alte formate, precum InnoDB, ce
permit lock la nivel de înregistrare.
Tot pentru tabele MyISAM, nu se pot executa back-up-uri daca exista lock-uri active. Soluția este din
nou InnoDB.
Un dezavantaj important se refera la faptul ca MySQL nu permite definirea tipurilor de date de tip utilizator,
ceea ce limiteaza tipul de date ce poate fi stocat Tn tabelele acestui tip de baza de date. Alaturi de acest
dezavantaj se suprapune și lipsa de procesare a datelor de tip XML.
Deși un sistem performant și rapid, MySQL nu utilizeaza funcjii de tip OLAP (Online Analytical
processing). Aceste funcjii sunt utilizate pentru managementul și analiza datelor multidimensionale. Sistemele
cu baze de date ce implementeaza aceste metode sunt denumite §i data warehouse.
Ultimele capabilitaji adaugate, procedurile stocate, triggerele sau funcjiile GIS nu au stabilitatea și
funcționalitatea altor sisteme cu baze de date
MySQL este un sistem de gestiune a bazelor de date relationale gratuit, de tipul open source, ceea ce
înseamna ca orice utilizator poate prelua acest produs din Internet (de la adresa
http://dev.mysql.com/downloads/ ), îl poate utiliza si chiar modifica. MySQL poate fi instalat atât sub
sistemele de operare Windows cât si Linux si poate fi folosit în numeroase aplicatii (chiar aplicatii
comerciale). Acest sistem este deosebit de compact, usor de instalat si de administrat. Versiunea curentă
adauga unele din trasaturile avansate de lucru cu bazele de date relationale (vederi, proceduri stocate, triggere,
etc.), care lipseau in versiunile precedente.

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.

 Utilitarul mysqladmin permite administrarea bazelor de date: pornirea si oprirea serverului,


crearea de noi utilizatori ai bazei de date, stabilirea parolelor acestora, a drepturilor de acces,
etc.
 Utilitarul winmysqladmin prezinta o interfata grafica pentru administrarea sistemului
(pornirea si oprirea serverului instalat ca serviciu, inspectarea bazelor de date si a tabelelor,
etc.).
 Utilitarul mysql este un program client care permite lucrul interactiv cu serverul MySQL
prin intermediul mai multor comenzi, dintre care majoritatea sunt comenzi în limbajul SQL,
iar celelalte sunt comenzi utilitare. Exemple de comenzi utilitare: comanda help (care listeaza
comenzile disponibile), comanda use (prin care una din bazele de date gestionate de server
este setata ca baza de date curenta), comanda describe (care afiseaza informatii despre
atributele unui tabel), etc. Utilitarul mysql se mai numeste si monitor sau consola si permite
crearea unor mici aplicatii interactive sau de testare a bazelor de date.

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.

2.Tipuri de date , operatori și funcții MySQL

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.

Ca si regula generala, notatia: tip [(M, D)] [optiuni]


are urmatoarea interpretare: tipul de date referit este afisat pe M pozitii, eventual cu D pozitii in partea
zecimala. Toate valorile ce se găsesc în paranteze drepte semnifică mărimi opționale.

Observatie: optiunile M si D nu influenteaza insa spatiul de stocare necesar pentru memorarea


valorilor de acel tip.
Valorile opționale au urmatoarea semnificație:
 UNSIGNED - permite memorarea doar a valorilor pozitive.
 ZEROFILL - la afisare, valorile numerice vor fi precedate de '0' pana la lungimea de afisare (ex.
0003)
 lBINARY - specifica faptul ca interpretarea caracterelor se va face in cod ASCII (la compararea a
doua siruri se va face distinctie intre litere mari/mici).

2.1.Tipuri de date numerice

TINYINT [(M)] [UNSIGNED] [ZEROFILL]


Numar intreg foarte mic. Intervalul de valori posibile este [-128..127]. Daca se specifica UNSIGNED
intervalul este [0..255].

SMALLINT [(M)] [UNSIGNED] [ZEROFILL]


ZEROFILL - la afisare, valorile numerice vor fi precedate de '0' pana la Numar intreg mic. Intervalul
de valori posibile este [-32768..32767]. Daca se specifica UNSIGNED intervalul este [0...65535].

MEDIUMINT [(M)] [UNSIGNED] [ZEROFILL]


Numar intreg mediu. Intervalul de valori posibile este [-8388608..8388607]. Daca se specifica
UNSIGNED intervalul este [0..16777215].

INT [(M)] [UNSIGNED] [ZEROFILL]


Numar intreg normal. Intervalul de valori posibile este [-2147483648..2147483647]. Daca se specifica
UNSIGNED intervalul este [0..4294967295].

INTEGER [(M)] [UNSIGNED] [ZEROFILL] Sinonim cu INT.


BIGINT [(M)] [UNSIGNED] [ZEROFILL]
Numar intreg mare. Intervalul de valori posibile este [-9223372036854775808..9223372036854775807]!
Daca se specifica UNSIGNED intervalul este [0..18446744073709551615].

FLOAT [(M, D) [ZEROFILL]


Numar in virgula flotanta simpla precizie (numar real). Intervalul de valori posibile este [-
3.402823466E+38.. -1.175494351E-38, 0, 1.175494351E-38..3.402823466E+38].

DOUBLE [(M, D) [ZEROFILL]


Numar in virgula flotanta dubla precizie. Intervalul de valori posibile este [-
1.7976931348623157E+308..-2.2250738585072014E-308, 0, 2.2250738585072014E-
308..1.7976931348623157E+308].

REAL [(M, D) [ZEROFILL]


Sinonim cu DOUBLE.

5 UTCN, C.Ivan
Introducere în baze de date L1. Concepte introductive MySQL

DECIMAL [(M [, D]) [ZEROFILL]


Numar in virgula flotanta neinpachetat. Spre deosebire de tipurile precedente, la care valorile sunt
stocate binar, acesta retine valorile numerice ca si siruri de cifre ASCII. Daca D lipseste, numarul va fi
intreg. Daca si M lipseste, numarul va fi pe maxim 10 cifre zecimale.

NUMERIC [(M [, D]) [ZEROFILL]


Sinonim cu DECIMAL.

2.2.Tipuri de date dată calendaristică și timp

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).

2.3.Tipuri de date sir de caractere

CHAR (M) [BINARY]


Sir de caractere de lungime fixa. Daca se memoreaza un sir mai scurt el va fi completat cu spatii la
dreapta pana la lungimea M specificata. Lungimea M a sirului poate lua valori in intervalul [1..255].
Spatiile de la sfarsitul sirului sunt indepartate automat la interogarea campului. Daca nu se specifica
optiunea BINARY, compararea valorilor se face fara a tine cont de felul literelor (mari/mici).

BIT/BOOL/CHAR
Sunt sinonime cu declaratia CHAR(1).

VARCHAR (M) [BINARY]


Sir de caractere de lungime variabila. La memorare, spatiile de la sfarsitul sirului sunt indepartate.
Lungimea M a sirului poate lua valori in intervalul [1..255]. Daca nu se specifica optiunea
BINARY, compararea valorilor se face fara a tine cont de felul literelor (mari/mici).

2.4.Tipuri de date binare mari (BLOB)

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.

Tipuri de date speciale

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.

2.5. Constante, identificatori, comentarii

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):

\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 cauta caracterul %, in conditiile in care acest
caracter este folosit in expresii regulate (subiectul va fi detaliat ulterior).
\_ Caracterul _. Se poate folosi pentru a cauta caracterul _, in conditiile in care acest
caracter este folosit in expresii regulate (subiectul va fi detaliat ulterior).

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:

• Comentarii pe o singura linie care incep cu # si continua pana la sfarsitul liniei;


• Comentarii pe o singura linie care incep cu -- si continua pana la sfarsitul liniei. Este necesar cel
putin un spatiu dupa semnul -- ;
• Comentarii pe mai multe linii care incep cu /* si se incheie cu */

3. Operatori si functii MySQL

Paranteze de grupare.Sunt folosite pentru a schimba ordinea de evaluare in interiorul expresiilor.


Parantezele folosite sunt doar paranteze rotunde.

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;

Operatori logici. Operatorii logici intorc 1 pentru adevarat si 0 pentru fals.

• 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.

Operatori de comparare. Operatorii de comparare returneaza 1 pentru adevarat, 0 pentru fals si


NULL daca nu se poate efectua comparatia.Ei pot compara atat numere cat si siruri de caractere. La
compararea unui numar cu un sir se incearca transformarea sirului in numarul pe care il contine. La
compararea a doua siruri nu se va tine cont de litere mari/mici.
= egalitate; la compararea cu NULL intoarce NULL;
<> sau != inegalitate;
< - mai mic;
<= - mai mic sau egal;
> - mai mare;
>= - mai mare sau egal;
<=> - echivalenta; la compararea cu NULL intoarce 0 sau 1 (1 doar la NULL <= > NULL); daca
ambii operanzi sunt diferiti de NULLse comporta ca si =;
IS NULL - testeaza daca operandul are valoarea NULL;
IS NOT NULL - testeaza daca operandul este diferit de NULL;
ISNULL(expr) - testeaza daca expresia are valoarea NULL;
expr BETWEEN min AND max - testeaza daca valoarea expresiei este in intervalul [min..max];
expr IN (value,... ) - testeaza daca valoarea expresiei este in lista de valori specificata;
expr NOT IN (value,... ) - testeaza daca valoarea expresiei nu este in lista de valori specificata;
IF(expr1,expr2,expr3) - testeaza valoarea de adevar a expr1 (falsa daca este 0 sau NULL) si intoarce
expr2 pentru adevarat respectiv expr3 pentru fals;

Functii pe șiruri de caractere.Functiile pe siruri considera implicit primul caracter pe pozitia 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 matematice.Toate functiile matematice intorc NULL in caz de eroare.

ABS(X) - valoarea absoluta (fara semn) a lui x.


SIGN(X) - testeaza semnul lui x, intoarce -1 pentru x negativ, 1 pentru x pozitiv si 0 in caz contrar
MOD(N,M) % - modulo (restul impartirii) lui N la M.
FLOOR(X) - cea mai mare valoare intreaga mai mica decat x (rotunjire in jos)
CEILING(X) - cea mai mica valoare intreaga mai mare decat x (rotunjire in sus)
ROUND(X) - rotunjire la cel mai apropiat intreg
EXP(X) - exponentiala (e la puterea x)
LOG(X) - logaritm natural din x
LOG10(X) - logaritm in baza 10 din x
POW(X,Y) - x la puterea y
SQRT(X) - radical de ordinul 2 din x
PI() - numarul PI; implicit se afiseaza cu 5 zecimale dar in calcule intervine cu dubla precizie
COS(X), SIN(X),TAN(X) - cosinus, sinus si tangenta de x
RAND()
RAND(N) - genereaza un numar pseudo-aleator in intervalul [0..1]; prin N se poate specifica o
valoare de initializare calcul
LEAST(X,Y,... ) - intoarce cea mai mica valoare din lista valorilor specificate
GREATEST(X,Y,... ) - intoarce cea mai mare valoare din lista valorilor specificate
Functii de tip data calendaristica si timp
DAYOFWEEK(date) - indexul zilei din spatamana al datei specificate (1=duminica, 2=luni etc.)
DAYOFYEAR(date) - numarul zilei din an pentru data specificata
DAYNAME(date) - numele (in engleza) al zilei din data specificata
MONTHNAME(date) - numele (in engleza) al lunii din data specificata
YEAR(date) - extrage anul din data specificata
HOUR(time) - extrage ora din timpul precizat
MINUTE(time) - extrage minutul din timpul precizat
SECOND(time) - extrage secunda din timpul precizat
CURDATE() - intoarce data curenta in format 'YYYY-MM-DD'
CURTIME() - intoarce ora curenta in format 'HH:MM:SS'
NOW()
SYSDATE() - intoarce data si ora curenta in format 'YYYY-MM-DD HH:MM:SS'
SEC_TO_TIME(seconds) - intoarce timpul in format 'HH:MM:SS' reprezentat de
numarul de secunde specificate
TIME_TO_SEC(time) -converteste timpul specificat in numar de secunde scurse de la ora
00:00:00

Functii speciale

• DATABASE() - numele bazei de date active


• USER() - numele utilizatorului coectat la server
• VERSION() - returneaza versiunea serverului MySQL instalat
• PASSWORD(str) - criptare sir dupa metoda interna prin care MySQL isi pastreaza parolele; criptarea
nu este reversibila (nu se poate calcula sirul de plecare pornind de la cheia criptata)
• FORMAT(N,D) - returneaza numarul N in format '#,###,###.##' cu D zecimal

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

Se vor studia toolurile XAMPP si Workbench pentru lucrul cu baza de date

10 C. Ivan - Introducere in Baze de Date, UTCN


Introducere în baze de date Laborator 1. Sistemul de gestiune MySQL

11 UTCN, C. Ivan

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