cursSQL Introducere
cursSQL Introducere
Aplicaţiile informatice utilizate în prezent lucrează cu un număr foarte mare de date care
trebuie stocate în aşa fel încât să le putem accesa rapid şi uşor. Astfel, majoritatea aplicaţiilor, de la
site-uri şi alte aplicaţii web până la aplicaţii bancare sau de gestiune a clienţilor, folosesc baze de
date relaţionale.
În acest curs de Fundamente Baze de date MySQL ne propunem să parcurgem câteva
noţiuni teoretice fundamentale pentru înţelegerea conceptelor folosite în lucrul cu baze de date
relaţionale, concepte tot mai des întâlnite în limbajul informatic curent (informaţie, date, baze de
date, etc.) dar şi să trecem în revistă etapele care sunt parcurse în realizarea aplicaţiilor informatice
care folosesc baze de date (de la proiectarea unei baze de date până la interogări avansate asupra
bazei de date).
Cursul se adresează persoanelor fără experienţă şi cunoştinţe în domeniul bazelor de date,
dar şi persoanelor care au cunoştinţe şi o minimă experienţă în lucrul cu baze de date.
Noţiunile teoretice fundamentale despre bazele de date relaţionale, precum şi elementele
limbajului de interogare SQL, sunt introduse pas cu pas şi sunt însoţite de exemplificări şi utilizări
practice.
Am ales ca mediu de dezvoltare a aplicaţiilor ce vor fi realizate în acest curs sistemul de
gestiune a bazelor de date MySQL.
Acest sistem de gestiune a bazelor de date (SGBD), MySQL, este foarte cunoscut datortiă
utilizării sale în aplicaţiile şi site-urile web împreună cu limbajul de programare PHP.
Aplicaţii ale bazelor de date pe Web
Orice site care are un modul de creare cont şi login, orice magazin online, site de ştiri, blog,
etc. are o bază de date în care este ţinută informaţia în mod structurat. Cea mai mare parte a site-
urilor de pe Internet care trec de nivelul de site de prezentare folosesc baze de date.
Astfel o persoană care doreşte să lucreze în domeniul programării web, pe lângă cunoştinţele
de HTML şi CSS folosite în partea de dezvoltare a aplicaţiei ce interacţionează cu utilizatorul, şi
cele de programare PHP, are nevoie şi de cunoştinţe de baze de date relaţionale, întrucât aproape
toate site-urile şi toate aplicaţiile web conţin informaţia în baze de date relaţionale.
Jobul de programator web este unul foarte interesant şi există o cerere mare pe piaţă pentru
persoane care au cunoştinţe de programare web. Este un job provocator, pentru că fiecare proiect
aduce ceva nou, la fiecare proiect se pot învăţa lucruri suplimentare şi aduce şi satisfacţia că
produsul realizat este vizualizat de foarte mulţi oameni (ne referim aici la site-urile web).
Tipologia site-urilor web porneşte de la site-uri de prezentare şi continuă cu magazine
online, bloguri, ajungând până la site-uri complexe (portaluri).
2
În cadrul acestor tipologii avem site-uri web statice, realizate doar în HTML sau site-uri web
dinamice cu informaţia introdusă dintr-o secţiune de administrare, în acest sens folosindu-se un
limbaj de programare şi baze de date relaţionale.
Iată modul de funcţionare şi de interacţiune cu serverul web şi cu serverul de baze de date
MySQL la realizarea unui site web:
Browser-ul web interpretează doar cod HTML. Astfel că, dacă avem un site cu pagini
statice, unde nu folosim nici un limbaj de programare, ci doar limbajul de marcare HTML, iar
fişierele ce conţin aceste pagini au extensia .html sau .htm nu avem nevoie să instalăm altceva pe
calculatorul nostru pentru a putea deschide acele pagini.
În schimb, dacă vom realiza un site web dinamic folosind limabjul PHP şi baze de date
MySQL, avem nevoie de instalarea pe calculator a unui server.
PHP este un limbaj care funcţionează pe partea de server, în timp ce HTML este un limbaj
pe partea de client.
Codul PHP este transmis către serverul de Apache, acesta interpretează codul primit şi
generează cod HTML pe care îl transmite către browser astfel că browserul web primeşte tot cod
HTML, singurul pe care ştie să îl interpreteze şi să îl afişeze.
De aceea, dacă vizualizăm codul sursă al unui site realizat în PHP vom vedea că el este
transformat în cod HTML şi astfel este afişat în sursa paginii. Deci, acces la codul PHP nu putem
avea, pentru a vedea cum a fost readactat codul, decât dacă accesăm fişierele .php de pe server.
În schema de mai jos vom reprezenta modul în care interacţionează PHP-ul cu serverul
Apache şi cu browserul web:
Client (browser)
1 6 3
2 PHP MySQL
Server Apache 5 4
Primul pas (1) este reprezentat de cererea pe care clientul (browser-ul web) o adresează
serverului în momentul în care se accesează o pagină PHP printr-un URL.
Severul trimite pagina spre procesare interpretorului PHP (2).
Dacă avem şi instrucţiuni MySQL, din PHP se face conectarea la baza de date MySQL şi se
trimite cererea către serverul MySQL (3).
Serverul MySQL execută instrucţiunile specifice şi returnează rezultatele către PHP (4).
Interpretorul PHP returnează aceste rezultate către serverul Apache (5).
Serverul Apache returnează clientului cod HTML pe care acesta ştie să îl interpreteze şi să îl
afişeze (6).
3
Cursul nu se ocupă de realizarea site-urilor web dar am prezentat acest mod de interacţiune
dintre client – server – PHP – server MySQL pentru a înţelege modul în care sunt folosite bazele de
date şi în realizarea site-urilor web.
Aplicaţii ale bazelor de date în alte domenii
O marte parte din aplicaţiile software existente folosesc baze de date pentru stocarea şi
extragerea informaţiilor. Aceste baze de date se interoghează ulterior pentru obţinerea de diverse
statistici. De exemplu, informaţiile despre clienţii şi facturile unei companii se ţin într-o bază de
date.
Obiective
Pe parcursul acestui curs de iniţiere în baze de date vom parcurge noţiunile fundamentale
teoretice şi vom învăţa cum se creează/şterg tabele în MySQL, cum se inserează/modifică/şterg
înregistrări într-o tabelă din baza de date, precum şi diverse interogări de regăsire a datelor din
tabele pornind de la cele simple şi ajungând la cele mai complexe. De asemenea, vom învăţa să
lucrăm cu vederi (view-uri), join-uri, reuniuni, proceduri şi funcţii (rutine), triggere şi
tranzacţii.
Obiectivele cursului Fundamente Baze de Date MySQL sunt următoarele:
• să înţelegeţi ce noţiunile teoretice folosite în domeniul bazelor de date (dată, informaţie, bază
de date, sistem de gestiune a bazelor de date, tabelă, atribut, înregistrare, etc.);
• să înţelegeţi principiile generale ale algebrei relaţionale, să cunoaşteţi operaţiile de reuniune,
intersecţie, diferenţă, produs cartezian folosite în teoria mulţimilor;
• să înţelegeţi principiul normalizării bazelor de date;
• să cunoaşteţi şi să puteţi instala mediile de lucru folosite pentru lucrul cu baze de date MySQL
(serverul WAMP şi HeidiSQ/MySQL Workbench);
• să înţelegeţi noţiunea de relaţie între tabele şi să cunoaşteţi tipurile de relaţii între tabele;
• să puteţi proiecta o bază de date;
• să cunoaşteţi sintaxa SQL şi instrucţiunile de bază (INSERT, UPDATE, DELETE,
SELECT);
• să cunoaşteţi limbajul de descriere a datelor (LDD), limbajul de manipulare a datelor (LMD),
precum şi tipuri de date şi operatori MySQL;
• să cunoaşteţi câteva funcţii predefinite MySQL (pentru lucrul cu şiruri de caractere, cu date
calendaristice, funcţii matematice, etc.);
• să înţelegeţi noţiunile de join, union şi subinterogări şi să le folosiţi în interogări complexe;
• să înţelegeţi utilizarea vederilor (tabele virtuale) şi modul de folosire precum şi noţiunile de
trigger şi tranzacţie;
• să cunoaşteţi cum se creează procedurile şi funcţiile în MySQL;
4
• să puteţi realiza aplicaţii de complexitate medie cu baze de date MySQL (de la proiectarea
bazei de date până la proceduri şi funcţii aplicate pe baza de date).
Pe parcursul acestui curs, pe măsură ce învăţăm noţiunile MySQL, vom lucra şi la realizarea
unui proiect mai complex, este vorba despre o bază de date care asigură gestiunea unui anumit
domeniu (de exemplu o bază de date pentru gestiunea cărţilor dintr-o bibliotecă sau o bază de date
folosită la gestiunea angajaţilor unei companii, o bază de date folsoită la gestiunea pacienţilor şi
medicilor dintr-un spital, etc.).
La finalul cursului, pentru a obţine diploma finală, înainte de a susţine testul final ce va
conţine întrebări de tip grilă, trebuie să prezentaţi o aplicaţie complexă în care să fie folosite
noţiunile învăţate.
Prezentare lecţii
Iată în continuare o descriere succintă a lecţiilor ce vor fi parcurse în cadrul cursului de
Fundamente Baze de Date MySQL.
În prima parte a cursului sunt prezentate pe larg noţiuni teoretice precum şi câteva noţiuni
fundamentale de algebră relaţională. Înţelegerea conceptului de normalizare precum şi prezentarea
formelor normale reprezintă următorul subiect abordat în partea de început.
Cea de-a doua lecţie se axează pe prezentarea concretă a mediului de lucru
(HeidiSQL/MySQL Workbench) şi pe prezentarea modului în care este proiectată o bază de date.
De asemenea, vom aborda subiectul relaţionării – concept fundamental în bazele de date relaţionale
– şi vom explica şi exemplifica tipurile de relaţii ce pot exista între tabelele unei baze de date.
Continuăm această lecţie cu o introducere în limbajul SQL (Structured Query Language).
În lecţia numărul trei, Limbajul de Descriere a Datelor (LDD) sau, în limba engleză Data
Description Language (DDL), vom prezenta şi vom exemplifica instrucţiunile de creare şi ştergere
a unei baze de date, creare şi ştergere a unei tabele dintr-o bază de date precum şi instrucţiunile de
modificare a structurii tabelelor.
În cea de-a patra lecţie prezentăm Limbajul de Manipulare a Datelor (LMD), în limba engleză
Data Manipulation Language (DML). Limbajul de Manipulare a Datelor se referă la cele 4
instrucţiuni fundamentale ale limbajului SQL:
- INSERT – pentru introducerea înregistrărilor într-o tabelă;
- UPDATE – pentru modificarea înregistrărilor din tabele;
- DELETE – pentru ştergerea înregistrărilor din tabele;
- SELECT – instrucţiunea de regăsire a informaţiilor din baza de date.
Este prezentată sintaxa fiecărei instrucţiuni în parte. De asemenea, în cazul instrucţiunii
SELECT sunt prezentate şi explicate clauzele ce pot să apară în cadrul instrucţiunii.
5
Lecţia următoare prezintă noţiuni despre operatorii şi funcţiile predefinite ale MySQL. Este
vorba de operatorii aritmetici, logici şi de comparare şi de funcţii matematice, funcţii pentru lucrul
cu şiruri de caractere, cu date calendaristice, etc.
Cursul continuă cu noţiuni teoretice despre JOIN-uri, tipuri de JOIN-uri şi reuniuni.
Un alt capitol important al acestui curs este cel în care sunt prezentate subinterogările şi
vederile (view-uri sau tabele virtuale).
În final avem capitolul dedicat Procedurilor şi Funcţiilor în MySQL. Procedurile şi
funcţiile mai poartă şi numele de rutine MySQL sau de proceduri stocate. Această ultimă
denumire provine de la faptul că aceste rutine sunt stocate pe server după ce au fost create. De
asemenea, introducem conceptul de trigger şi prezentăm noţiuni generale despre rolul tranzacţiilor
şi modul de folosire al acestora.