Sunteți pe pagina 1din 22

UNIVERSITATEA HYPERION DIN BUCUREȘTI

FACULTATEA DE ȘTIINȚE EXACTE ȘI INGINEREȘTI


MASTER: MANAGEMENTUL PROIECTELOR TEHNICE ȘI TEHNOLOGICE

PROIECT

BAZE DE DATE, DEFINITIE, FUNCŢII, EXEMPLU

Student:
DOBRESCU ANDREEA ALEXANDRA
MASTER ANUL II

2020-2021.
OBIECTIVUL PROIECTULUI

În ultimii ani, dezvoltarea sistemelor de baze de date reprezintă unul dintre cele mai
importante aspecte în domeniul tehnologiei informaţiei, având un impact decisiv asupra modului
de organizare şi funcţionare a numeroaselor instituţii şi servicii.
În acest context am ales acesta temă pentru a definii în mod clar conceptul de baze de
date şi de SGBD (Sistem de Gestiune a Bazelor de Date) precum şi a proiectării sistemelor de
baze de date, ce asigură o componentă importantă a vieţii de zi cu zi în societatea modernă.
Zilnic, majoritatea persoanelor desfăşoară activităţi care implică interacţiunea cu o bază
de date: depunerea sau extragerea unei sume de bani din bancă, rezervarea biletelor de tren sau
de avion, căutarea unei cărţi într-o bibliotecă computerizată, gestiunea angajaţilor dintr-o firmă
sau cumpărarea unor produse.
În cadrul proiectului sunt tratate trei capitole majore.

Primul capitol Definitie. Noţiuni generale este o prezentare teoretică a sistemului de


baze de date, definiţii, rolul, evoluţia şi obiectivele unui SGBD (Sistem de Gestiune a Bazelor de
Date).
În capitolul al doilea Funcţiile unui SGBD sunt prezentate principalele funcţii ale unui
sistem de gestiune a bazelor de date şi anume descrierea, utilizarea, manipularea şi administrarea
datelor.
Capitolul al treilea Limbajul SQL prezintă unul dintre cele mai puternice limbaje
structurate pentru interogarea bazelor de date relaţionale , sistemul MySQL care este unul dintre
cele mai populare SGBD-uri ( Sistem de gestiune a bazelor de date ) open-source precum şi un
exemplu, crearea unei baze de date în MySQL.
CAPITOLUL I DEFINIŢIE. NOŢIUNI GENERALE

I.1. DEFINIŢIE

O bază de date reprezintă o cantitate mare de date funcţionale care descriu un anumit
sistem şi sunt înmagazinate mai mult sau mai puţin permanent în memoria unui calculator pentru
a satisface simultan cerinţele mai multor utilizatori într-un mod selectiv şi în timp util.
Într-o bază de date sunt înregistrate date despre obiecte reale sau abstracte, dar şi
asocierile (relaţiile) care se pot stabili între acestea. Putem spune că între datele unei baze de date
există o interdependenţă logică. Considerarea interdependenţelor ce se pot stabili între colecţiile
de date memorate într-o bază de date contribuie la asigurarea integrităţii funcţionale a bazei de
date.
O bază de date este un model al unui sistem real. Conţinutul unei baze de date (numit
uneori şi extensie) reprezintă, la un moment dat, o stare a sistemului care se modelează.
Schimbările în baza de date reprezintă evenimente care au loc în mediu şi care schimbă starea
sistemului modelat. Este evident că este de dorit să structurăm o bază de date astfel încât aceasta
să oglindească sistemul care se doreşte modelat.

I.2. CONCEPTUL DE SGBD.


Noţiunea de SGBD (Sistem de Gestiune a Bazelor de Date – DataBase Management
System), trebuie studiată în contextul unui Sistem de Baze de Date - SBD.
a) Definirea unui SGBD
Un sistem de gestiune a bazelor de date este ansamblul complex de programe care asigură
interfaţa între o bază de date şi utilizatorii acesteia.
SGBD este componenta software a unui sistem de baze de date care interacţionează cu
toate celelalte componente ale acestuia, asigurând legătura şi interdependenţa între elementele
sistemului.
b) Rolul unui SGBD
Rolul unui SGBD într-un context de sistem de bază de date este de a:
 Defini şi descrie structura bazei de date, printr-un limbaj propriu specific (LDD),
conform unui anumit model de date;
 Încărca/valida datele în baza de date respectând nişte restricţiile de integritate impuse de
modelul de date utilizat;
 Realiza accesul la date pentru diferite operaţii (consultare, interogarea, actualizare etc) -
operatorii modelului de date;
 Întreţine BD cu ajutorul unor instrumente specializate (editoare, utilitare - shells,
navigatoare – browsers etc.);
 Asigura protecţia bazei de date sub cele două aspecte: securitatea şi integritatea datelor.

Un rol important al SGBD este de a permite utilizatorilor sa interactioneze cu datele intr-o


forma abstracta, nu în cea în care datele sunt memorate.
c) Evoluţia SGBD
Evoluţia SGBD a fost determinată, în principal, de modelul de date pe care-l
implementează la organizarea datelor în BD.

Etapele în evoluţia SGBD sunt prezentate în continuare.


- Până în anii şaizeci datele erau organizate doar în fişiere, gestionate de programe scrise în
diferite limbaje de programare universale (exemple: Cobol, Fortran etc.).
- La sfârşitul anilor şaizeci a apărut modelul arborescent de organizare a datelor în BD şi primele
SGBD care erau ierarhice şi implementau acest model (exemplu: IMS).
- La începutul anilor şaptezeci a apărut modelul reţea de organizare a datelor şi SGBD reţea ce
implementau acest model (exemple: IDMS, SOCRATE).
SGBD arborescente şi reţea fac parte din prima generaţie şi ele constituie pionieratul în domeniu.
- La sfârşitul anilor şaptezeci şi începutul anilor optzeci a apărut modelul relaţional de organizare
a datelor şi ulterior s-au realizat SGBD relaţionale ce implementau acest model (exemple:
Oracle, Informix, DB2, SQLServer, Visual Foxpro, Access etc.). Este generaţia a doua de
SGBD, care prin simplitate, interactivitate şi neproceduralitate domină piaţa actuală.
- La sfârşitul anilor optzeci, începutul anilor nouăzeci a apărut modelul orientat obiect de
organizare a datelor şi SGBD orientate obiect ce implementau acest model (exemple: Gemstone,
O2, Jasmine etc.). Aceasta este generaţia a treia de SGBD care este în plină dezvoltare acum.
I.3. OBIECTIVELE UNUI SISTEM DE GESTIUNE A BAZELOR DE DATE
Obiectivul general al unui SGBD este de a furniza suportul software complet pentru
dezvoltarea de aplicaţii informatice cu baze de date. În acest sens, pentru ca un produs software
să fie SGBD, el trebuie să asigure un set minim de obiective, care va fi prezentat în continuare.

Suport software complet pentru


Obiectiv general: dezvoltarea SBD

1. Independenţa datelor( logica, fizică)


2. Redundanţă minimă şi controlată
Set minim 3. Facilităţi de utilizare a datelor
4. Protecţia datelor (securitate, integritate)
de
5. Partajarea datelor
obiective 6. Legături in tre date
7. Performanţe globale ale aplicaţiei

1. Asigurarea independenţei datelor faţă de programe.


O aplicaţie informatică depinde de date, dacă modificarea structurii de memorare a datelor
sau a strategiei de acces la date afectează şi aplicaţia.
Independenţa datelor faţă de aplicaţie poate fi:
- fizică, adică modul de memorare a datelor şi tehnicile fizice de memorare (strategia de acces),
pot fi schimbate fără a rescrie programele (exemplu în Oracle: se poate face acces secvenţial la
date, apoi se poate indexa şi se face un acces direct), poate adăuga în structură un nou câmp, prin
comanda ALTER TABLE).
2. Redundanţă minimă şi controlată a datelor.
Spre deosebire de sistemele clasice (cu fişiere) de prelucrare automată a datelor, stocarea
informaţiilor în BD se face astfel încât datele să nu fie multiplicate. Cu toate acestea, uneori,
pentru a realiza performanţe sporite, în ceea ce priveşte timpul de răspuns se acceptă o anumită
redundanţă a datelor. Aceasta va fi însă controlată pentru a se asigura coerenţa (corectitudinea
datelor) BD. Exemplul de redundanţă controlată acceptată este cea apărută la proiectare BD
relaţionale prin tehnica de Normalizare.
3. Facilităţi de utilizare a datelor.
Această facilitate presupune ca SGBD să aibă nişte componente specializate pentru diferite
operaţii de utilizare:
- folosirea datelor de către mai mulţi utilizatori în diferite scopuri (aplicaţii). Acest lucru reduce
spaţiul de memorare necesar şi efortul de încărcare / validare a datelor;
- accesul cât mai simplu al utilizatorilor la date, fără ca ei să fie nevoiţi să cunoască structura
întregii BD, acest lucru rămânând în sarcina administratorului BD (ex.: asistenţi tip Wizard);
- existenţa unor limbaje performante de regăsirea a datelor care permit exprimarea interactivă
aunor cereri de regăsire a datelor şi indicarea unor reguli pentru obţinerea informaţiilor solicitate
(ex.: limbajul relaţional SQL);
- oferirea posibilităţii unui acces multicriterial la date. SGBD stochează datele în entităţile BD şi
permite mai multe căi de acces. Pentru diferite moduri de adresare SGBD creează dinamic, la
momentul execuţiei, o serie de fişiere anexe (de index etc.) care lasă neschimbate entităţile BD.
4. Protecţia datelor.
În sistemele de BD, protecţia datelor se asigură sub două aspecte: securitatea şi
integritatea.
Securitatea (confidenţialitatea) datelor semnifică faptul că accesul la date se face numai printro
autorizare corespunzătoare şi doar controlat (sarcina administratorului BD). În acest sens,
SGBD permite: autorizarea şi controlul accesului la date, utilizarea viziunilor, realizarea unor
proceduri speciale, criptarea datelor.
a) Autorizarea şi controlul accesului la date este realizat de SGBD prin intermediul
parolelor.
Acestea identifică clasele de utilizatori, cu anumite drepturi de acces, la anumite date.
Privilegiile diferiţilor utilizatori sunt gestionate de SGBD astfel: un anumit subiect (utilizator)
poate realiza anumite acţiuni, asupra anumitor obiecte, în limita anumitor restricţii (condiţii
suplimentare). Profilul utilizator este dat de nume (NAME), parola (PASS), nume grup, număr
nivel de acces. Oracle deţine în acest sens, pachetul OEM, dar şi comenzi SQL specializate.
b) Utilizarea viziunilor (view) este asigurată de SGBD pentru reprezentarea schemelor
externe ale bazei de date. Cu ajutorul viziunilor, SGBD permite să se definească partiţii logice
ale bazeide date, pentru diferiţi utilizatori, în raport cu cerinţele acestora de acces la date.
Securitateadatelor este asigurată de SGBD prin definirea tuturor drepturilor necesare unui
utilizator pentru o viziune (GRANT) şi anularea unor drepturi pentru obiectele sale (REVOKE).
c) Realizarea unor proceduri speciale de acces asupra datelor este permisă de SGBD.
Aceste proceduri sunt scrise în LMD, se păstrează în formă precompilată, iar anumitor utilizatori
li se va acorda dreptul de execuţie şi li se va interzice accesul direct la obiectele BD.
d) Criptarea este asigurată de SGBD prin oferirea unor rutine de criptare (codificare) a
datelor, apelate automat sau la cerere şi prin existenţa unor instrumente care permit utilizatorului
să realizeze propriile rutine de criptare. Criptarea şi decriptarea se realizează după algoritmi
specifici, cu o cheie (parolă) de acces la rutină (Oracle foloseşte mai mulţi algoritmi de criptare
şi decriptare).
Integritatea datelor se referă la corectitudinea (coerenţa) datelor şi este asigurată prin protejarea
acestora împotriva unor incidente intenţionate sau neintenţionate.
Componentele SGBD asigură integritatea datelor tratând separat cauzele care pot deteriora baza
de date: integritatea semantică, controlul accesului concurent, salvarea / restaurarea.
a) Integritatea semantică este asigurată prin operaţii efectuate de SGBD asupra datelor şi
aprelucrărilor. Aceste operaţii alcătuiesc un set de reguli denumit restricţii de integritate. SGBD
asigură astfel de restricţii implicite (rezultă din modelul de date implementat – Oracle
implementează cinci) şi explicite (proceduri incluse în programele de aplicaţie).
b) Accesul concurent asigură coerenţa datelor şi este un obiectiv al SGBD care se pune
cu acuitate mai ales la baze de date distribuite. În acest sens SGBD foloseşte o unitate distinctă
de prelucrare a datelor denumită tranzacţie, care este constituită dintr-o secvenţă de operaţii –
care se execută în totalitate sau deloc - marcată de puncte de început şi sfârşit. Tranzacţia poate fi
controlată de SGBD implicit, când punctele de început şi de sfârşit sunt automat definite, sau
explicit, când punctele de început şi de sfârşit sunt definite prin comenzi specifice.
La execuţia concurentă a tranzacţiilor SGBD trebuie să asigure blocarea datelor utilizate la un
moment dat. Aceasta înseamnă că se interzice accesul celorlalte tranzacţii concurente la aceleaşi
date, până se termină tranzacţia curentă. Tehnica de blocare utilizată de SGBD se poate aplica la
nivelul întregii baze de date, a unui fişier, a unei înregistrări sau chiar a unui câmp (de exemplu
în Oracle). Ea poate fi pentru citire (partajabilă) sau pentru scriere (exclusivă). Cele mai multe
SGBD realizează blocarea la nivel de înregistrare şi fişier, prin diferite metode: setarea unui bit
pentru resursa respectivă, construirea unei liste cu resursele blocate, menţinerea resurselor
blocateîntr-o zonă specială etc.
Inter-blocarea este situaţia în care două tranzacţii blochează anumite resurse, apoi solicită
fiecare resursele blocate de cealaltă. La nivelul de SGBD trebuie să existe facilitatea de prevenire
sau rezolvare a inter-blocării.
*Prevenirea inter-blocării presupune că programele blochează toate resursele de care au
nevoie încă de la începutul fiecărei tranzacţii (greu de precizat).
*Soluţionarea inter-blocării presupune că există nişte mecanisme pentru detectarea şi
eliminarea inter-blocării (de exemplu graful dependenţelor proceselor de executat).
c) Salvarea / restaurarea (backup/recovery) ca facilitate a SGBD permite refacerea
consistenţeidatelor care au fost deteriorate fizic din diferite motive.
Salvarea datelor este un proces de stocare prin realizarea de copii de siguranţă şi prin jurnalizarea
tranzacţiilor şi a imaginilor. SGBD poate asigura salvarea automat şi la cererea administratorului
bazei de date (de exemplu în Oracle).
Restaurarea porneşte de la colecţiile de date stocate prin salvare şi reface consistenţa bazei de
date, minimizând prelucrările pierdute. Restaurarea este asigurată automat de SGBD, dar se
poate realiza şi manual. Restaurarea automată a BD este realizată de SGBD cu ajutorul fişierelor
jurnal. La nivelul SGBD pot exista o serie de parametri de configurare care influenţează procesul
de restaurare automată. Aceşti parametri se referă la: intervalul de restaurare, indicatorul de
restaurare (ce informaţii vor fi scrise în fişierul de erori) etc.
Restaurarea manuală a BD implică intervenţia administratorului pentru refacerea bazei de date
de pe un suport tehnic care a fost distrus. Cea mai recentă copie de siguranţă efectuată pentru o
BD afectată este încărcată şi se reiau prelucrările efectuate din momentul copierii până la
producerea defecţiunii. Restaurarea manuală se face prin deconectarea tuturor utilizatorilor de la
BD, încărcarea copiei şi reluarea lucrului.
5. Partajabilitatea datelor
Partajabilitatea datelor se referă nu numai la aspectul asigurării accesului mai multor
utilizatori la
aceleaşi date, ci şi la posibilitatea dezvoltării unor aplicaţii fără a se modifica structura bazei de
date. Problema partajabilităţii se pune la un nivel superior pentru SGBD-urile care permit lucrul
în reţea.

6. Legăturile între date.

Legăturile între date corespund asocierilor care se pot realiza între obiectele unei aplicaţii
informatice. Orice SGBD trebuie să permită definirea şi descrierea structurii de date, precum şi a
legăturilor dintre acestea, conform unui model de date. Fiecare tip de model de date permite
anumite legături între date. Un SGBD, care implementează un anumit model de date, va trebui să
asigure şi realizarea legăturilor dintre datele corespunzătoare în conformitate cu schema
conceptuală.

7. Performanţele globale.

Performanţele globale ale aplicaţiei sunt influenţate de SGBD. Acesta trebuie să


gestioneze un volum mare de date de o complexitate ridicată, într-un anumit timp de acces util
pentru diferiţi utilizatori. Pentru toate aceste lucruri SGBD foloseşte diferite metode de acces,
tehnici de optimizare, tipuri de date.
CAPITOLUL II FUNCŢIILE UNUI SGBD

Realizarea obiectivelor prezentate anterior este asigurată de SGBD printr-o serie de


componentece permit efectuarea unor operaţii specifice. În funcţie de natura lor şi de scopul
urmărit, operaţiile pot fi grupate pe activităţi.
Activităţile acceptă şi ele o grupare pe funcţii astfel încât,una sau mai multe activităţi,
relativ omogene, vor realiza o anumită funcţie.

II.1. DESCRIEREA DATELOR

SGBD, prin această funcţie, permite definirea structurii bazei de date cu ajutorul
limbajului de definire a datelor - LDD.
Definirea datelor poate fi realizată la nivel conceptual, logic şi fizic. Se descriu atributele
(câmpurile) din cadrul structurii bazei de date, legăturile dintre entităţile bazei de date sau dintre
atributele aceleiaşi entităţi, se definesc eventualele criterii de validare a datelor, metodele de
acces la date, aspectele referitoare la asigurarea integrităţii datelor. Concretizarea acestei funcţii
este schema bazei de date, memorată în cod intern în dicţionarul BD. Aceastăfuncţie a fost mult
automatizată în timp, LDD având acum puţine comenzi (exemplu în SQL din Oracle sunt toate
comenzile de tip CREATE şi ALTER).
LDD este specific fiecărui SGBD, dar el întotdeauna realizează descrierea datelor
conform elementelor modelului de date pe care îl implementează SGBD respectiv. După
realizarea funcţiei de descriere, într-un SGBD, entităţile bazei de date există create deja ca
fişiere, dar nu conţin datele propriu-zise, ci numai structura bazei de date (schema bazei de date).

II.2. MANIPULAREA DATELOR


Funcţia de manipulare a datelor este cea mai complexă şi realizează actualizarea şi
regăsirea datelor din baza de date, cu ajutorul limbajului de manipulare a datelor (LMD). Sunt
realizate următoarele activităţi referitoare la date: încărcarea, actualizarea, prelucrarea, regăsirea.
a) Încărcarea datelor în baza de date se realizează prin operaţii automatizate (restricţiile
de integritate) sau programate ce asigură criteriile de validare a datelor.
b) Actualizarea bazei de date constă în operaţiile de: adăugare, modificare, ştergere de
înregistrări. La operaţiile de adăugare şi de modificare se păstrează aceleaşi criterii de validare
care s-au folosit şi la activitatea de încărcare a datelor. Actualizarea se realizează numai
autorizat,prin asigurarea unei protecţii corespunzătoare a datelor.
c) Prelucrarea datelor se realizează prin operaţiile de: selecţie, ordonare, inter-clasare
(compunere), ventilare (descompunere) efectuate asupra entităţilor bazei de date. Acestea sunt,
de obicei, operaţii pregătitoare activităţii de regăsire a datelor. Multe dintre operaţiile de
prelucrare sunt realizate cu ajutorul operatorilor din modelul de date implementat de SGBD.
d) Regăsirea (interogarea) datelor constă în operaţiile de: vizualizare (afişare pe ecran,
imprimare pe hârtie), răsfoire, editarea unor situaţii de ieşire. Situaţiile de ieşire pot fi
intermediare sau finale şi se pot obţine pe diferiţi suporţi tehnici de informaţie (ecran, hârtie,
mediu magnetic, mediu optic). Ele pot avea cele mai diferite forme (punctuale, liste, rapoarte,
grafice, imagini, sunet, video) şi se pot obţine după cele mai diferite criterii de regăsire.

- LMD pot fi cu limbaj gazdă sau cu limbaj propriu. Cele cu limbaj gazdă sunt dezvoltate prin
adaptarea unor limbaje universale de programare (Cobol, Pascal, C etc.) la cerinţele de lucru ale
SGBD. Se îmbină astfel puterea unui limbaj universal cu necesităţile de regăsire a datelor
(exemplu: ORACLE are limbajul PL-SQL). Cele cu limbaj propriu sunt dezvoltate printr-un
limbaj specific capabil să unească puterea proceduralului cu regăsirea datelor dintr-un anumit tip
de bază de date (exemplu: limbajul propriu din Visual Foxpro).

II.3. UTILIZAREA DATELOR

Funcţia de utilizare a datelor asigură mulţimea interfeţelor necesare pentru comunicarea


tuturorutilizatorilor cu baza de date. Pentru a realiza această funcţie SGBD trebuie să asigure
facilităţipentru mai multe categorii de utilizatori ai BD: neinformaicieni, specialişti,
administratori.
a) Utilizatorii neinformaticieni reprezintă principala categorie a beneficiarilor de informaţii
(utilizatorii finali şi intensivi) din baza de date. Aceşti utilizatori nu trebuie să cunoască structura
bazei de date şi nu trebuie să ştie să programeze. În acest sens, SGBD oferă: meniuri cu opţiuni
sugestive, ferestre, şabloane pentru diferite forme, asistenţi tip Wizard, autodocumentarea (help,
mesaje/ferestre explicative etc.).
b) Utilizatorii specialişti în informatică creează structura bazei de date şi realizează
procedure complexe de exploatare a bazei de date. SGBD oferă acestor utilizatori limbajul de
descriere şi limbajul de manipulare a datelor, precum şi interfeţe cu limbaje universale. Cu aceste
elemente el descrie schema bazei de date şi asigură manipularea complexă a datelor (exemplu
SQL şi PLSQL în Oracle). Pentru realizarea bazei de date SGBD oferă specialistului şi elemente
de CASE(Computer Aidede Software Engineering). Acestea îl ajută în diferitele activităţi care
intervin în etapele de realizare a bazei de date (exemplu Oracle Designer).
c)Administratorul bazei de date, care este un utilizator special şi are un rol hotărâtor în
ceea ce priveşte funcţionarea optimă a întregului sistem. Datorită importanţei acestei categorii de
utilizatori, SGBD are o funcţie distinctă în acest sens (exemplu Oracle Enterprise Manager).

II.4. FUNCŢIA DE ADMINISTRARE

Funcţia de administrare a datelor este de competenţa administratorului bazei de date.


Administratorul, care are o bogată experienţă de analiză, proiectare şi programare, organizează şi
administrează baza de date în toate etapele de realizare a acesteia.
Astfel, el organizează baza de date conform unei anumite metodologii, realizează schema
(conceptuală) bazei de date, coordonează proiectarea bazei de date. Pentru toate aceste lucruri
SGBD oferă o serie de elemente de CASE, precum şi o serie de utilitare specializate.
În etapa de exploatare a bazei de date, administratorul are rolul de a autoriza accesul la
date (acordă conturi, parole etc.), de a reface baza de date în caz de incidente (prin jurnalizare,
copii), de a utiliza eficient spaţiul de memorie internă şi externă (prin organizare, rutine de
optimizare) de a realiza o serie de analize statistice din baza de date (număr şi tip de utilizatori,
număr de accese, număr de actualizări etc.). Pentru fiecare din aceste activităţi SGBD oferă
instrumente şi tehnici de lucru.
În cazul lucrului în reţea de calculatoare cu baze de date distribuite, SGBD are dezvoltate
foarte mult componentele destinate administratorului. Acest lucru este determinat de faptul că
baza de date este, în acest caz, de mare complexitate, datele sunt distribuite pe calculatoarele din
reţea, iar utilizatorii sunt de toate tipurile şi în număr mare (exemplu Oracle RAC – Real
Application Clusters).
CAPITOLUL III LIMBAJUL SQL

III.1. NOŢIUNI GENERALE


Unul dintre cele mai puternice limbaje structurate pentru interogarea bazelor de date
relaţionale îl constituie SQL (Structured Query Language). Pe lângă manipularea şi regăsirea
datelor, limbajul permite efectuarea de operaţii complexe privind actualizarea şi administrarea
bazelor de date.
SQL este un limbaj neprocedural sau declarativ, deoarece utilizatorul lui descrie numai
informaţiile pe care vrea să le obţină în urma interogării, fără a fi nevoie să stabilească
modalităţile de a ajunge la rezultatele dorite. În acelaşi timp, SQL nu poate fi considerat un
limbaj de programare sau unul de sistem ci, mai curând, face parte din categoria limbajelor de
aplicaţii, fiind orientat pe mulţimi. Foarte frecvent, limbajul SQL este utilizat în administrarea
bazelor de date client/server, aplicaţia client fiind aceea care generează instrucţiunile SQL.
Există un anumit grad de standardizare a limbajului SQL, mai multe sisteme de gestiune
a bazelor de date recunoscând principalele instrucţiuni ale acestuia (de exemplu: Oracle, Access,
Sybase etc.). Pe plan mondial, standardul în domeniu este considerat ANSI(American National
Standards Institute) SQL care are în vedere atât aspectele de definire, interogare, manipulare a
datelor, procesare a tranzacţiilor, cât şi caracteristicile complexe privind integritatea
informaţiilor.
Mulţi producători de sisteme de gestiune a bazelor de date furnizează propriile extensii
ale limbajului SQL, asigurându-şi astfel exclusivitatea.
Se cunosc în literatura de specialitate trei metode de bază privind implementarea
limbajului SQL şi anume:
• cea prin apelare directă (Direct Invocation) - constă în introducerea instrucţiunilor SQL
de la prompter;
• cea modulară (Modul Language) - foloseşte anumite proceduri apelate de programele
aplicaţiei;
• cea de tip încapsulat (Embedded SQL) - are în vedere instrucţiunile încapsulate în codul
de program, fiind de tip static şi dinamic.

III.1.1. Tipuri de date in SQL

TIP Caracteristici
CHAR(size) sir de caractere de lungime fixa
VARCHAR2(size) sir de caractere de lungime variabila
VARCHAR(size)
NUMBER(p,s) Numeric: p (precision) = 1..38, s (scale) =-84..127
DATE data calendaristica
ROWID adresa fiecarui rind din tabela
BLOB binary large object (max 4GB) se stocheaza date nestructurate
(text,imagine, video, date spatiale)
CLOB Character Large Object – date de tip text de dimensiune foarte mare
NCLOB National CLOB – include caractere nationale
BFILE contine un pointer catre un fisier binar stocat in afara bazei de date

III.1.2. Operatori SQL

Operator Caracteristici
<, >, =, >=, <=, NOT Operatori de comparatie
BETWEEN ... AND ... între două valori (inclusiv).
IN (listă) egal cu oricare valoare din listă
LIKE similar cu un şablon
% - oricâte caractere; _ - un caracter;
IS NULL are valoarea NULL

III.1.3. Comenzi SQL

Comenzile referitoare la bazele de date sunt comune tuturor versiunilor de SQL si sunt
impartite in urmatoarele categorii:

1) Comenzi LDD (Limbaj de Definire a Datelor - Data Definition Language)


Comanda Scop
CREATE Creaza un obiect nou (tabela, utilizator, rol, etc)
ALTER Modifica o parte dintre proprietatile unui obiect
DROP Elimina un obiect din baza de date

2) Comenzi LMD (Limbaj de Manipulare a Datelor - Data Manipulation


Language)
Comanda Scop
SELECT Regaseste inregistrari in tabele sau vederi (view)
DELETE Sterge inregistrari din tabele
INSERT Adauga o noua inregistrare in tabela
UPDATE Modifica valorile unor inregistrari din tabele

3) Comenzi LPT (Limbaj pentru Procesarea Tranzactiilor – Transaction


Processing Language)
Comanda Scop
COMMIT Finalizeaza o tranzactie
ROLLBACK Anuleaza o tranzactie
SAVEPOINT Defineste un punct de salvare, in locul in care tranzactia salveaza toate
operatiile efectuate pana in momentul respectiv, inainte de a continua
urmatorul set de modificari efectuate in baza de date.

4) Comenzi LCD (Limbaj de Control al Datelor - Data Control Language)


Scop
Comanda
GRANT Acorda utilizatorilor drepturile necesare pentru accesul si manipularea
obiectelor din baza de date
REVOKE Anuleaza anumite drepturi utilizatorilor

III.2. NOŢIUNI GENERALE MySQL


MySQL este unul dintre cele mai populare SGBD-uri ( Sistem de gestiune a bazelor de
date ) open-source. Este produs de MySQL AB , companie dedicată acestui proiect.
MySQL asigură gestiunea colecţiilor structurate de date, este un sistem de gestiune
relational astfel că datele sunt organizate în tabele şi între tabele se pot defini constrângeri de
integritateşi relaţii. Pentru gestionarea acestora se foloeste limbajul SQL (Structured Query
Language) care a devenit un standard în acest domeniu încă din 1986 (ANSI) şi adoptat şi de
ISO în1987. Acesta este un limbaj declarativ , care însă poate conţine şi elemente procedurale.
Este un limbaj flexibil care a fost supus la modificări dealungul timpului, rămânând însă un
standard definitoriu pentru SGBD-uri.
Poate fi folosit împreună cu majoritatea limbajelor de programare , nativ sau folosind
third-party APIs, cum ar fi C , C++ , C# , Java , Perl , PHP , Python , FreeBasic.

Elemente de limbaj
Limbajul SQL este divizat în mai multe elemente, ce includ :
 Clauze ( componente ale interogărilor şi instrucţiunilor)
 Expresii ( ce prin evaluare generează valori scalare sau tabele )
 Predicate ( condiţii ce sunt evaluate de SQL conform logicii booleene )
 Interogări ( regăsirea datelor după criterii )
 Instrucţiuni ( pot controla datele , pot include logica aplicaţiei în ele , pot controla
tranzacţii şi conexiuni )

Tipuri de date
În un tabel SQL , oricărei variabile îi este asignat un anumit tip de date : CHAR ( şir
de caractere ), INT, FLOAT, REAL, NUMERIC, DATE, TIME . La fel ca în orice alt limbaj
de programare , aceste tipuri de date pot fi folosite cu operatori de adiţie , multiplicare ,
concatenare , şamd.

Proceduri Stocate
Sunt elementele cele mai puternice de control a datelor dintr-un SGBD , acestea pot
încapsula atât elemente procedurale cât şi declarative , într-o “metodă” ce poate fi apelată
parametrizat , din care pot rezulta unul sau mai multe seturi de rezultate şi poate determina
side-effects ce manipulează datele prezente în sistem.

III.3.EXEMPLU

DROP DATABASE IF EXISTS proiect;


CREATE DATABASE IF NOT EXISTS proiect;
USE proiect;
DELIMITER %
CREATE PROCEDURE tabele()
DETERMINISTIC
BEGIN
SET foreign_key_checks = 0;
DROP TABLES IF EXISTS Clienti, Sucursale, Tipul_operatiunii, Operatiuni,
Tabela_veche;

CREATE TABLE Clienti(


idc INT NOT NULL AUTO_INCREMENT
PRIMARY KEY,
nume VARCHAR(100),
prenume VARCHAR(100),
UNIQUE c1(nume, prenume)
);
CREATE TABLE Sucursale(
ids INT NOT NULL
AUTO_INCREMENT PRIMARY KEY,
sucursala VARCHAR(100),
UNIQUE s1(sucursala)
);
CREATE TABLE Tipul_operatiunii(
idto INT NOT NULL
AUTO_INCREMENT PRIMARY KEY,
tip_op ENUM('Extragere cash', 'Depunere cash', 'Plata cu OP',
'Incasare cu OP', 'Salariu', 'Credit'),
UNIQUE t1(tip_op)
);
CREATE TABLE Operatiuni(
ido INT NOT NULL
AUTO_INCREMENT PRIMARY KEY,
data_ora DATETIME,
id_cl INT NOT NULL,
id_suc INT NOT NULL,
id_tipop INT NOT NULL,
suma INT,
FOREIGN KEY (id_cl) REFERENCES Clienti(idc),
FOREIGN KEY (id_suc) REFERENCES Sucursale(ids),
FOREIGN KEY (id_tipop) REFERENCES Tipul_operatiunii(idto)
);
CREATE TABLE Tabela_veche(
data CHAR(10),
ora CHAR(10),
nume VARCHAR(100),
prenume VARCHAR(100),
tip_op ENUM('Extragere cash', 'Depunere cash', 'Plata cu OP',
'Incasare cu OP', 'Salariu', 'Credit'),
suma INT,
sucursala VARCHAR(100),
fulldate DATETIME
);
SET foreign_key_checks = 1;
END%
CREATE FUNCTION format_data(ziua TEXT, ora TEXT)
RETURNS DATETIME
DETERMINISTIC
COMMENT 'Functia asigura faptul ca ca data returnata nu depaseste data curenta
(str_to_date simplu ar fi convertit 31 la 2031, de exemplu)'
BEGIN
DECLARE var DATE;
SELECT str_to_date(ziua, '%y:%m:%d') INTO var;
IF YEAR(var) > YEAR(curdate()) THEN
SET var = var - INTERVAL 100 YEAR;
END IF;
RETURN concat(var, ' ', str_to_date(ora, '%H.%i.%S'));
END %
CALL tabele();
CREATE TRIGGER fill_fulldate BEFORE INSERT
ON Tabela_veche FOR EACH ROW
BEGIN
SET NEW.fulldate = format_data(NEW.data, NEW.ora);
END%
CREATE TRIGGER fill_from_veche BEFORE INSERT
ON Tabela_veche FOR EACH ROW
BEGIN
DECLARE vidc, vidsuc, vidtip INT;
INSERT IGNORE INTO Clienti(nume, prenume) VALUES(NEW.nume,
NEW.prenume);
SELECT idc
FROM Clienti
WHERE nume = NEW.nume AND prenume = NEW.prenume
INTO vidc;
INSERT IGNORE INTO Sucursale(sucursala) VALUES(NEW.sucursala);
SELECT ids
FROM Sucursale
WHERE sucursala = NEW.sucursala
INTO vidsuc;
INSERT IGNORE INTO Tipul_operatiunii(tip_op) VALUES(NEW.tip_op);
SELECT idto
FROM Tipul_operatiunii
WHERE tip_op = NEW.tip_op
INTO vidtip;
INSERT INTO Operatiuni(data_ora, id_cl, id_suc, id_tipop, suma)
VALUES(NEW.fulldate, vidc, vidsuc, vidtip, NEW.suma);
END%
/*
-- cursor pentru popularea tabelelor, alternativa la triggerul fill_from_veche
DELIMITER $
CREATE PROCEDURE populeaza_tabele()
DETERMINISTIC
BEGIN
DECLARE vdata, vora CHAR(10);
DECLARE vnume, vprenume, vsuc VARCHAR(100);
DECLARE vtip_op ENUM('Extragere cash', 'Depunere cash', 'Plata cu OP', 'Incasare
cu OP', 'Salariu', 'Credit');
DECLARE vsuma, vidc, vidsuc, vidtip INT;
DECLARE vfulld DATETIME;
DECLARE stop_cursor CONDITION FOR 1329;
DECLARE crt_row CURSOR FOR
SELECT *
FROM Tabela_veche;
DECLARE EXIT HANDLER FOR stop_cursor BEGIN END;
SET foreign_key_checks = 0;
OPEN crt_row;
LOOP
FETCH crt_row INTO vdata, vora, vnume, vprenume, vtip_op, vsuma, vsuc, vfulld;
INSERT IGNORE INTO Clienti(nume, prenume) VALUES(vnume, vprenume);
SELECT idc
FROM Clienti
WHERE nume = vnume AND prenume = vprenume
INTO vidc;
INSERT IGNORE INTO Sucursale(sucursala) VALUES(vsuc);
SELECT ids
FROM Sucursale
WHERE vsuc = sucursala
INTO vidsuc;
INSERT IGNORE INTO Tipul_operatiunii(tip_op) VALUES(vtip_op);
SELECT idto
FROM Tipul_operatiunii
WHERE tip_op = vtip_op
INTO vidtip;
INSERT IGNORE INTO Operatiuni(data_ora, id_cl, id_suc, id_tipop, suma)
VALUES(vfulld, vidc, vidsuc, vidtip, vsuma);
END LOOP;
SET foreign_key_checks = 1;
CLOSE crt_row;
END$
*/
-- am folosit innodb_autoinc_lock_mode = 0 in my.ini, pentru a obtine valori
consecutive cu auto_increment la insert ignore
LOAD DATA INFILE 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\
fisier.txt'
INTO TABLE Tabela_veche
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
(data, ora, nume, prenume, tip_op, suma, sucursala);
CREATE PROCEDURE rapoarte()
DETERMINISTIC
BEGIN
DECLARE vids, vidop INT;
SELECT CONCAT_WS(' ', nume, prenume) AS `Client`, SUM(suma) AS `Sold
final`
FROM operatiuni JOIN clienti ON id_cl = idc
GROUP BY `Client`;
SELECT CONCAT_WS(' ', nume, prenume) AS `Client`
FROM clienti JOIN operatiuni ON idc = id_cl
JOIN sucursale ON id_suc = ids
WHERE sucursala = 'Hawai'
GROUP BY `Client`
ORDER BY COUNT(*) DESC
LIMIT 1;
SELECT sucursala
FROM sucursale JOIN operatiuni ON ids = id_suc
JOIN tipul_operatiunii ON id_tipop = idto
WHERE tip_op = 'Depunere cash' OR tip_op = 'Extragere cash'
GROUP BY sucursala
ORDER BY COUNT(*) DESC
LIMIT 1;
SELECT CONCAT_WS(' ', nume, prenume) AS `Client`, sucursala, SUM(suma) AS
`Incasari din salarii`
FROM clienti JOIN operatiuni ON idc = id_cl
JOIN tipul_operatiunii ON id_tipop = idto
JOIN sucursale ON id_suc = ids
GROUP BY `Client`
HAVING SUM(suma) > 12000
ORDER BY sucursala;
SELECT tip_op AS Operatiune, sucursala, COUNT(*) AS `Numar de efectuari`
FROM tipul_operatiunii JOIN operatiuni ON idto = id_tipop
JOIN sucursale ON id_suc = ids
GROUP BY tip_op, sucursala;
SELECT sucursala AS `Sucursala`, CONCAT_WS(' ', nume, prenume) AS `Client`,
tip_op AS `Operatiune`, data_ora AS `Data`
FROM sucursale JOIN operatiuni ON ids = id_suc
JOIN clienti ON id_cl = idc
JOIN tipul_operatiunii ON id_tipop = idto
WHERE nume = 'Tilley' AND prenume = 'Scott' OR nume = 'Dupuis' AND prenume
= 'Glenn'
GROUP BY `Sucursala`, `Client`, `Operatiune`;
SELECT ids FROM sucursale WHERE sucursala = 'Miami' INTO vids;
SELECT idto FROM tipul_operatiunii WHERE tip_op = 'Incasare cu OP' INTO
vidop;
SELECT MAX(suma) AS `Incasare maxima`
FROM operatiuni
WHERE id_suc = vids
AND id_tipop = vidop
AND MONTH(data_ora) = 5
AND YEAR(data_ora) = 2016;
END %
DELIMITER ;
CALL rapoarte();
/*
OPTIONAL - VIEW tabela veche
CREATE
ALGORITHM = MERGE
VIEW Old_table(datav, orav, numev, prenumev, tip_ov, sumv, sucv) AS
SELECT DATE(data_ora), TIME(data_ora), nume, prenume, tip_op, suma,
sucursala
FROM sucursale JOIN operatiuni ON ids = id_suc
JOIN clienti ON id_cl = idc
JOIN tipul_operatiunii ON id_tipop = idto;
*/

CONCLUZII
În concluzie putem spune că, cea mai evoluată metodă de gestionare a unor cantități mari
de informație este organizarea acesteia în baze de date. Baza de date ca sistem de organizare și
prelucrare a informației , este formată dintr-o colecție de date aflate în interdependență, o
descriere a datelor și relațiilor existente între ele și într-un sistem de programe pentru gestiunea
datelor.
Sistemele de baze de date sunt o componentă importantă a vieţii de zi cu zi în societatea
modernă. Zilnic, majoritatea persoanelor desfăşoară activităţi care implică interacţiunea cu o
bază de date: depunerea sau extragerea unei sume de bani din bancă, rezervarea biletelor de tren
sau de avion, căutarea unei cărţi într-o bibliotecă computerizată, gestiunea angajaţilor dintr-o
firmă, cumpărarea unor produse

BIBLIOGRAFIE
1. Vitalie Cotelea, Marian Cotelea. Baze de date, Chişinău, 2016.
2. Conceptul de SGBD. [Resursă electronică].-Regim de acces:
http://www.creeaza.com/referate/informatica/baze-de-date/Conceptul-de-SGBD-763.php
3. SGBD -Caracteristici generale si evoluţie. [Resursă electronică].-Regim de acces:
http://www.creeaza.com/referate/informatica/baze-de-date/
4. SGBD-Caracteristici-generale-s542.phpSistem de gestiune a bazelor de date. [Resursă
electronică].-
Regim de acces: https://ro.wikipedia.org/wiki/Sistem_de_gestiune_a_bazelor_de_date
5. CONCEPTUL DE SGBD. OBIECTIVE ȘI FUNCȚII. [Resursă electronică].-Regim de acces:
http://repository.utm.md/bitstream/handle/5014/183/Conf_UTM_2017_I_pg82-85.pdf?
sequence=1&isAllowed=y
6. https://github.com/MihailSandulescu/InfoAcademy-Final-Project-MySQL/blob/master/
README.sql
7. Hector Garcia-Molina, Jeffrey D. Ullman, Jennifer D. Widom: Database Systems: The
Complete Book, Prentice-Hall, Englewood Cliffs, NJ, 2002.
8. F. Rădulescu : Oracle SQL, PL/SQL, Editura Printech, ISBN 973-718-203-02005
9. http://andrei.clubcisco.ro/cursuri/anul-3/semestrul-2/baze-de-date-1.html
10. http://cadredidactice.ub.ro/simonavarlan/files/2012/12/baze-de-date.pdf
11. https://bd.ase.ro/bd

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