Sunteți pe pagina 1din 60

CURS 5

http://elth.pub.ro/~abordianu
1. Introducere

• Structured Query Language (Limbaj structurat de interogare).


• MySQL este un sistem client/server de gestiune a bazelor de date relaţionale.
• MySQL include un server SQL, programe client pentru accesul la server,
instrumente administrative şi o interfaţă de programare pentru scrierea propriilor
programe.
• Bazele sistemului MySQL au fost puse în 1979, o dată cu instrumentul pentru baze
de date NIREG, creat de Michael "Monty" Widenius pentru compania suedeză TcX.
• SQL este adesea folosit în combinație cu un limbaj procedural (limbaj care
folosește o serie de instrucțiuni executate secvențial) - de exemplu MySql + PHP
2. De ce să alegem MySQL?

1. Viteză. MySQL este rapid. Programatorii pretind că MySQL este cel mai rapid sistem de baze de date
pe care îl puteţi găsi.
2. Uşurinţă în utilizare. MySQL este un sistem de baze de date cu performanţe ridicate, dar relativ simplu,
a cărui configurare şi administrare sunt mult mai simple decât în cazul sistemelor mai mari.
3. Cost. MySQL este gratuit pentru majoritatea utilizărilor interne.
4. Suport pentru limbaje de interogare.
5. Caracteristici.
 La server se pot conecta mai mulţi clienţi simultan.
 Clienţii pot folosi mai multe baze de date simultan. Puteţi obţine acces la MySQL în mod interactiv,
folosind numeroase interfeţe care vă permit să introduceţi interogări şi să vizualizaţi rezultate.
 Sunt disponibile o multime de interfeţe de programare pentru limbaje precum C, Java, PHP. Astfel,
există opţiunea de a folosi programe client preambalate sau de a vă scrie propriile programe client
pentru aplicaţii personalizate.
6. Conectivitate şi securitate. MySQL poate fi folosit integral în reţele, iar bazele de date sunt accesibile
de oriunde din Internet, deci datele pot fi împărțite cu oricine, oriunde. MySQL are controlul accesului,
astfel încât persoanele care nu au dreptul să citească datele nu vor avea această posibilitate.
7. Portabilitate. MySQL rulează pe numeroase varietăţi de UNIX, precum şi pe alte sisteme non-UNIX, ca
Windows şi OS/2.
8. Distribuţie liberă. MySQL este uşor de obţinut.
3. Terminologie structurală
În lumea bazelor de date, MySQL este clasificat ca sistem de gestiune a
bazelor de date relaţionale (SGBDR). Această expresie poate fi divizată
după cum urmează:

• Baza de date (literele BD din abrevierea SGBDR) constituie depozitul pentru informaţiile
stocate, structurat într-un mod simplu:
 Colecţia de date dintr-o bază de date este organizată în tabele.
 Fiecare tabel este organizat în rânduri şi coloane.
 Fiecare rând dintr-un tabel este considerat o înregistrare.
 Înregistrările pot conţine mai multe componente de informaţie; fiecare coloană dintr-un
tabel corespunde uneia din aceste componente.
• Sistemul de gestiune (literele SG) este programul care vă permite să vă folosiţi datele prin
inserarea, regăsirea, modificarea sau ştergerea înregistrărilor.
• Cuvântul „relaţional" (iniţiala R) indică un anumit tip de SGBD, adică unul care se pricepe
foarte bine la relaţionarea informaţiilor stocate într-un tabel cu informaţiile stocate într-un alt
tabel, prin căutarea elementelor comune din fiecare tabel. Puterea unui SGBD relaţional
constă în capacitatea sa de a extrage în mod convenabil date din aceste tabele şi de a
combina informaţii din tabele corelate pentru a genera răspunsuri la întrebări la care nu se
poate răspunde numai pe baza tabelelor individuale.
4. Stabilirea şi întreruperea conexiunilor cu serverul
Sintaxa standard de începe a unei sesiune mysql are forma următoare:
mysql -h nume_gazda -u nume_utilizator –p

Iată care este semnificaţia opţiunilor:


• -h nume_gazda (formă alternativă: -host=nume_gazda) - Gazda serverului Ia care doriţi să vă conectaţi.
Dacă serverul rulează pe acelaşi calculator pe care utilizaţi mysql, în mod normal această opţiune poate fi
omisă.
• -u nume_utilizator (formă alternativă: -user=nume_utilizator), numele dumneavoastră de utilizator
MySQL.
• -p (formă alternativă: -password). Această opţiune indică programului mysql să vă solicite parola
dumneavoastră MySQL. Dacă specificaţi opţiunea -p fără nici o parolă, indicaţi programului mysql să vă
solicite o parolă la deschidere. De exemplu:
mysql -h nume_gazda -u nume_utilizator -p
Enter password:
Când vedeţi mesajul Enter password: (introduceţi parola), tastaţi parola dumneavoastră. (Parola nu este
vizualizată pe ecran).

Welcome to the MySQL monitor. Commands end with ; or \g.


Your MySQL connection id is 1805 to server version: 3.22.25-log După ce stabiliţi o conexiune
cu serverul, puteţi încheia
Type 'help' for help. sesiunea oricând tastând
mysql> QUIT: mysql> QUIT Bye
5. Interogări
Iată un exemplu de interogare simplă şi rezultatul
acesteia:
Această comandă indică data şi ora curentă.
Funcţia NOW() nu este utilă ca atare, dar se poate
folosi în expresii - de exemplu, pentru a calcula
diferenţa dintre data curentă şi o altă dată.

De asemenea, mysql afişează numărul


rândurilor rezultatului.
Deoarece mysql aşteaptă caracterul punct şi
virgulă înainte de a trimite interogarea
serverului, nu trebuie să introduceţi toată
interogarea pe un singur rând. Puteţi extinde
o interogare pe mai multe linii, dacă doriţi:

Cele două interogări par similare, dar a doua eşuează, deoarece paranteza nu
apare imediat după numele funcţiei.
6. Crearea bazei de date
Utilizarea unei baze de date implică mai multe etape:
1.Crearea (iniţializarea) bazei de date;
2.Crearea tabelelor din cadrul bazei de date;
3.Interacţiunea cu tabelele prin inserţia, regăsirea, modificarea sau ştergerea datelor.
Regăsirea datelor existente este, evident, cea mai frecventă operaţie efectuată cu o
bază de date. Următoarele operaţii, în ordinea frecvenţei, sunt inserţia datelor noi şi
actualizarea sau ştergerea datelor existente. Mai puţin frecvente sunt operaţiile de
creare a tabelelor, iar operaţia cel mai puţin frecventă este crearea bazelor de date.

Pentru a crea o bază de date nouă, conectaţi-vă la server folosind mysql şi apoi emiteţi o
instrucţiune CREATE DATABASE care specifică numele bazei de date:
mysql> CREATE DATABASE samp_db;
Va trebui să creaţi baza de date samp_db înainte de a putea crea oricare dintre tabelele care
vor fi incluse în aceasta sau înainte de a efectua orice operaţii folosind conţinutul acelor tabele.

Pentru ca baza de date samp_db să devină curentă trebuie sa folosiți instrucţiunea USE:
mysql> USE samp_db
USE este una dintre puţinele instrucţiuni care nu necesită un caracter punct şi virgulă de
terminare a instrucţiunii, deşi îl puteţi adăuga, dacă doriţi.
6.1. Crearea tabelelor
Pentru evidenţiere modului de creare a tabelelor in mysql, vom folosi cazul bazei de
date pentru un catalog cu note ale unor elevi. Pentru a vedea care sunt tabelele de
care avem nevoie pentru proiectul de evidenţă a rezultatelor şcolare, să examinăm
modul în care se pot scrie punctajele atunci când folosiţi un catalog pe hârtie.

Tip chestionar-test
Data examinare

nume
Punctaj obţinut
Redundanţa datelor
O cerinţă impusă tabelului eveniment este aceea ca datele să fie unice, deoarece data
este folosită pentru a corela înregistrările din tabelele puncte şi eveniment. Cu alte
cuvinte, nu puteţi da două chestionare în aceeaşi zi, respectiv un chestionar şi un test.
Dacă o faceţi, veţi avea două seturi de înregistrări în tabelul puncte şi două înregistrări
în tabelul eveniment, toate cu aceeaşi dată, şi nu veţi mai putea stabili o corespondenţă
între înregistrările din cele două tabele.
Instrucţiunea CREATE TABLE pentru tabelul elev arată astfel:

Instrucţiunea CREATE TABLE creează un tabel denumit elev cu trei coloane: Nume, Sex şi Id_elev.
 Nume este o coloană şir de lungime variabilă, care poate conţine maximum 20 de caractere.
 Sex determină dacă un elev este băiat sau fată. Este o coloană de tip ENUM (enumerare), ceea ce
înseamnă că poate lua numai una din valorile enumerate explicit în specificaţia coloanei, în speţă M sau
F, adică de sex masculin sau feminin. ENUM este util dacă există un set limitat de valori pe care le poate
conţine o coloană. Se putea folosi CHAR(1), dar ENUM specifică mai exact care pot fi valorile din
coloană. Valorile dintr-o coloană ENUM nu trebuie să fie neapărat compuse dintr-un singur caracter.
Coloana tip ar fi putut fi declarată astfel: ENUM (' feminin' , ' masculin ').
 Id_elev este o coloană de tip întreg care va conţine numere unice de identificare a elevilor. Declaraţia
coloanei Id_elev are numeroase părţi, chiar dacă nu conţine decât numere:
• INT arată că în coloană sunt incluse numere întregi (valori fără parte fracţionară);
• UNSIGNED interzice utilizarea numerelor negative;
• NOT NULL înseamnă că valoarea coloanei trebuie completată;
• AUTO_INCREMENT este un atribut special în MySQL. MySQL generează automat un număr
unic cu o unitate mai mare decât valoarea maximă care se află în coloană la momentul respectiv.;
• PRIMARY KEY arată că acea coloană este indexată pentru căutări rapide şi că fiecare valoare
din coloană trebuie să fie unică. Aceasta ne împiedică să folosim din greşeală acelaşi identificator
de două ori, ceea ce este o proprietate necesară a numerelor de identificare a elevilor. (Nu numai
atât; MySQL impune ca fiecare coloană AUTO_INCREMENT să aibă un indice unic.)
Instrucţiunea CREATE TABLE pentru tabelul eveniment arată astfel:

 Data conţine o valoare DATE standard MySQL, în format "AAAA-LL-ZZ”.


 Tip reprezintă tipul punctajului. Tip este o coloană de tip enumerare. Valorile permise sunt T şi
C, reprezentând „test", respectiv „chestionar".
 Eveniment_id este o coloană AUTO_INCREMENT, similară coloanei Id_elev din tabelul elev.
Utilizarea opţiunii AUTO_INCREMENT ne permite să generăm cu uşurinţă valori unice ale
identificatorilor de eveniment. Valorile particulare sunt mai puţin importante decât unicitatea lor.
Instrucţiunea CREATE TABLE pentru tabelul puncte arată astfel:

Se presupune că valorile punctajelor sunt întotdeauna întregi. Dacă doriţi să permiteţi includerea
unor punctaje precum 58,5, care conţin o parte fracţionară, veţi folosi unul din tipurile de coloană cu
virgulă mobilă, precum FLOAT sau DECIMAL.
Coloanele Id_elev şi Eveniment_id sunt numere întregi și reprezintă elevul şi evenimentul
pentru care a fost acordat fiecare punctaj. Folosindu-le pentru a stabili legături între
tabelele elev şi eveniment, vom putea determina numele elevului şi data evenimentului.
De asemenea, am transformat combinaţia dintre cele două coloane într-o cheie primară
(PRIMARY KEY). Astfel, ne asigurăm că nu vom avea punctaje repetate pentru un elev la
un test sau chestionar dat. De asemenea, modificarea ulterioară a unui punctaj este mai
simplă. De exemplu, când un punctaj a fost introdus incorect, putem elimina înregistrarea veche
atunci când inserăm înregistrările noi, folosind instrucţiunea MySQL
REPLACE. Nu este necesar să folosim o instrucţiune DELETE combinată cu INSERT;
MySQL execută automat această operaţie.
Reţineţi unicitatea combinaţiei între coloanele Eveniment_id şi Id_elev. În tabelul puncte, nici o
valoare nu este intrinsec unică. Vor exista mai multe înregistrări de punctaje pentru fiecare valoare
Eveniment_id (câte una pentru fiecare elev), respectiv mai multe înregistrări pentru fiecare valoare
Id_elev (câte una pentru fiecare chestionar şi test).
Relaţionarea tabelelor în MySql este foarte importantă, iar pentru aceasta se foloseşte
ca linie distinctă în tabelul secundar o instrucţiune de forma:

FOREIGN KEY (Id_elev) references elev

Cheia primară în Tabelul primar


tabelul primar
Un alt exemplu este cel al unei baze de date în care se strâng informaţii despre candidatii
la un post de inginer.

drop table if exists candidat;


CREATE TABLE candidat (
id_candidat SMALLINT AUTO_INCREMENT NOT
NULL,
nume VARCHAR(20) NOT NULL,
initiala VARCHAR(3) NOT NULL,
prenume VARCHAR(20) NOT NULL,
data_nastere DATE NOT NULL,
email VARCHAR(100) NULL,
adresa VARCHAR(50) NULL,
judet VARCHAR(3) NULL,
cod_postal VARCHAR(10) NULL,
telefon VARCHAR(20) NULL,
interese VARCHAR(225) NULL,
PRIMARY KEY (id_candidat)
);
6.2. Adăugarea de noi înregistrări
Există numeroase modalităţi de a adăuga date într-o bază de date. Puteţi insera
manual înregistrări într-un tabel emiţând instrucţiuni INSERT. De asemenea, puteţi
adăuga înregistrări citindu-le dintr-un fişier, fie sub formă de valori de date brute pe
care le încărcaţi folosind instrucţiunea LOAD DATA sau utilitarul mysqlimport, fie în
formă de instrucţiuni INSERT redactate anterior, pe care le introduceţi în mysql.

Să începem să adăugăm rezultate folosind INSERT, o instrucţiune SQL pentru care specificaţi
tabelul în care doriţi să inseraţi un rând de date şi valorile care vor fi plasate în rândul respectiv.
Instrucţiunea INSERT are mai multe forme:
o Puteţi specifica valori pentru toate coloanele:
INSERT INTO nume_tabel VALUES (valoare 1, valoare2,....)

INSERT INTO candidat VALUES (1,"Ionescu","N","Rodica","1981-11-


03","ionescu.rodica@gmail.com", "zorilor 73", "VL","23415","07100000","fotografie");
Cuvântul INTO este opţional începând de la MySQL 3.22.5. (Acest lucru este valabil şi pentru celelalte
forme ale instrucţiunii INSERT.) Lista VALUES trebuie să conţină o valoare pentru fiecare coloană din
tabel, în ordinea în care sunt stocate coloanele în tabel.

Versiunile MySQL începând de la 3.22.5 vă permit să inseraţi mai multe rânduri într-un tabel cu o
singură instrucţiune INSERT, prin specificarea mai multor liste de valori:
INSERT INTO nume_tabel VALUES (...),(...),...

INSERT INTO identificare VALUES ("Popescu“,”Alex”), (“Ion”,”Radu”);

Acest procedeu necesită introducerea de la tastatură a unei cantităţi mai reduse de text decât cea
impusă de mai multe instrucţiuni INSERT, iar execuţia sa de către server este mai eficientă.
o Puteţi denumi coloanele cărora doriţi să le atribuiţi valori, apoi enumeraţi valorile. Acest
procedeu este util când doriţi să creaţi o înregistrare pentru care numai câteva coloane
trebuie configurate iniţial.
INSERT INTO nume_tabel (nume_col1 ,nume_col2,...) VALUES (valoare1,valoare2,...)

INSERT INTO identificare (nume, prenume) VALUES ("Popescu“,”Alex”), (“Ion”,”Radu”);

De la MySQL 3.22.5, această formă a instrucţiunii INSERT permite de asemenea mai multe liste cu
valori (coloanele care nu sunt specificate în lista de coloane primesc o valoare prestabilită):
INSERT INTO elev (nume, sex) VALUES (“Marius“,”M”), (“Ioana”,”F”), (“Ionut”,”M”);
o De la MySQL 3.22.10, puteţi denumi coloanele şi valorile sub forma nume_coloana=valoare.
INSERT INTO nume_tabel SET nume_col1=valoare1, nume_col2-valoare2,...
INSERT INTO elev SET nume =“Marius“, sex=”M”;

Toate coloanele care nu sunt specificate în clauza SET primesc o valoare prestabilită.
Nu puteţi insera mai multe rânduri folosind această formă a instrucţiunii INSERT.

O altă metodă pentru încărcarea înregistrărilor într-un tabel este citirea valorilor datelor direct dintr-un
fişier. Puteţi încărca înregistrări în acest mod cu ajutorul instrucţiunii LOAD DATA sau cu utilitarul
mysqlimport. Instrucţiunea LOAD DATA se comportă ca un încărcător de mare capacitate, care citeşte
date dintr-un fişier. Folosiţi această instrucţiune din interiorul programului mysql:
LOAD DATA LOCAL INFILE “candidat.txt” INTO TABLE candidat;
Această instrucţiune citeşte conţinutul fişierului de date candidat.txt şi o trimite serverului, pentru a fi
încărcată în tabelul candidat.
6.3. Regăsirea informaţiilor
Instrucţiunea SELECT permite să regăsiţi şi să afişaţi informaţii din tabelele
dumneavoastră, într-o manieră oricât de generală sau de specifică doriţi. Puteţi afişa
întregul conţinut al unui tabel:
SELECT * FROM elev
sau puteţi selecta o singură coloană a unui singur rând:
SELECT punctaj FROM puncte WHERE nume = “85"

Forma generală a instrucţiunii SELECT este:


SELECT ce se selectează
FROM tabel sau tabele
WHERE condiţii pe care trebuie sa le satisfacă datele

Când folosiţi o clauză FROM pentru a specifica un tabel de unde vor fi regăsite datele, forma cea
mai „generică" a instrucţiunii SELECT este aceea prin care se regăsesc toate datele. Pentru
aceasta, folosiţi caracterul *, care este o abreviere de la „toate coloanele". Interogarea următoare
regăseşte toate rândurile din tabelul elev şi le afişează.
Dacă precizaţi mai mult de o coloană, separaţi numele
coloanelor prin virgule. Instrucţiunea următoare este
echivalentă cu SELECT * FROM elev, dar fiecare
coloană este specificată în mod explicit:
Puteţi denumi în mod explicit coloana sau
coloanele pe care doriţi să le vedeţi. Pentru a
selecta numai numele elevilor, procedaţi
astfel:

Pentru a limita setul de înregistrări regăsite de instrucţiunea SELECT, folosiţi o clauză


WHERE care specifică criteriile pentru selectarea rândurilor. Puteţi selecta rânduri examinând
acele valori din coloane care satisfac diverse criterii. De exemplu:
Expresiile din clauzele WHERE pot folosi operatori aritmetici, ca în tabelul 1.1,
operatori de comparaţie, ca în tabelul 1.2, respectiv operatori logici, ca în tabelul 1.3.
De asemenea, puteţi folosi paranteze pentru a grupa părţi ale unei expresii. Operaţiile
pot fi efectuate folosind constante, coloane de tabel şi apeluri la funcţii.
Valoarea NULL
Valoarea NULL este specială; deoarece înseamnă „fără valoare", nu o puteţi
compara cu valori cunoscute în modul în care comparaţi una cu alta două valori
cunoscute. Dacă încercaţi să folosiţi NULL cu operatorii uzuali de comparaţie
aritmetică, rezultatul este nedefinit:

Pentru a efectua căutări ale valorilor NULL, trebuie să folosiţi o sintaxă specială. în loc de a folosi =
sau ! = pentru a testa egalitatea sau inegalitatea, folosiţi IS NULL sau IS NOT NULL.

MySQL 3.23 şi versiunile superioare au un operator de comparaţie special, specific pro-gramului


MySQL, şi anume <=>, care este adevărat chiar şi pentru comparaţiile între valori NULL.
Sortarea rezultatelor unei interogări
Uneori se observă că, dacă se emite o interogare SELECT * FROM nume_tabel
asupra unui tabel după încărcarea în tabel a unui set iniţial de date, rândurile sunt
regăsite în aceeaşi ordine în care au fost inserate. Acest fapt nu este întotdeauna
adevărat. Dacă ştergeţi şi inseraţi rânduri după încărcarea iniţială a tabelului, se
observă modificarea ordinii în care serverul returnează rândurile tabelului.
Puteţi specifica dacă sortarea unei coloane se va face în ordine ascendentă sau descendentă
folosind cuvintele cheie ASC sau DESC după numele coloanelor din clauza ORDER BY. De
exemplu, pentru a sorta numele candidatilor în ordine descrescătoare, folosiţi DESC astfel:
Rezultatele interogării pot fi sortate pe mai multe coloane, iar fiecare coloană
poate fi sortată în ordine ascendentă sau descendentă, independent de celelalte
coloane.
Limitarea rezultatelor unei interogări
Când o interogare returnează mai multe rânduri, dar dumneavoastră doriţi să
vedeţi numai câteva, clauza LIMIT este utilă, mai ales în conjuncţie cu ORDER BY.
MySQL vă permite să limitaţi datele de ieşire ale unei interogări la primele n
rânduri ale rezultatului returnat. Interogarea următoare selectează pe primii trei
candidati:

De asemenea, LIMIT vă permite să extrageţi o secţiune de înregistrări din mijlocul unui set de rezultate.
Pentru aceasta, trebuie să specificaţi două valori. Prima valoare este numărul înregistrării iniţiale din
setul de rezultate pe care doriţi să-l vedeţi. (Prima înregistrare este numerotată cu 0, nu 1.) Cea de-a
doua valoare indică numărul de înregistrări care vor fi returnate. Interogarea următoare este similară cu
precedenta, care returnează cinci înregistrări, începând de la al treilea rând al rezultatului:
Calculul şi denumirea valorilor din coloanele de ieşire

Majoritatea interogărilor precedente au produs date de ieşire prin regăsirea valorilor


din tabele. MySQL vă mai permite să calculaţi o valoare din coloana de ieşire ca
rezultat al unei expresii. Expresiile pot fi simple sau complexe. Interogarea
următoare evaluează o expresie simplă (o constantă) şi o expresie mai complexă,
care implică numeroase operaţii aritmetice şi câteva apeluri la funcţii. 2 inseamna ca
are doua cifre dupa virgulă.
De asemenea, expresiile se pot referi la coloanele din tabele
Această interogare formatează numele candidatilor sub forma unui singur şir, prin
concatenarea numelui şi a prenumelui separate printr-un spaţiu.

Când folosiţi o expresie pentru a calcula valoarea unei coloane, expresia este folosită
pentru antetul coloanei. Aceasta poate duce la o coloană foarte lată, dacă expresia este lungă (aşa cum o
arată interogarea precedentă). Pentru a rezolva problema, capului de coloană i se poate atribui un nume,
folosind construcţia AS nume. Asemenea nume se numesc alias-uri de coloană. Rezultatul interogării
anterioare poate deveni astfel mai semnificativ:
Lucrul cu date calendaristice

Principalul aspect pe care trebuie să-l reţineţi atunci când lucraţi cu date în MySQL este că
acestea sunt întotdeauna reprezentate începând cu anul. Data de 27 noiembrie 2015 este
reprezentată sub forma “2015-11-27". Datele nu se scriu nici sub forma “11-27-2015" şi nici sub forma
“27-11-2015“.
MySQL oferă numeroase moduri de efectuare a operaţiilor cu date. Unele dintre acestea
sunt următoarele:
 Sortare după dată.
 Căutarea unei anumite date sau a unui domeniu de date.
 Extragerea unei părţi dintr-o valoare de tip dată, precum anul, luna sau ziua.
 Calcularea diferenţei între date.
 Calcularea unei date prin adunarea sau scăderea unui interval dintr-o altă dată.
Pentru a căuta anumite date, fie în funcţie de valoarea exactă, fie prin comparaţie cu o
altă valoare, comparaţi o coloană DATA cu valoarea care vă interesează:
Pentru a testa sau pentru a regăsi părţi ale datelor calendaristice, puteţi folosi funcţii
precum YEAR() (an), MONTH() (lună) sau DAYOFMONTH() (ziua din lună). De
exemplu, puteti găsi candidatii care s-au născut în aceeaşi lună (martie) căutând
datele a căror valoare a lunii este egală cu 3:

De asemenea, interogarea poate fi scrisă şi în funcţie de numele lunii:


Pentru a fi mai exact - specificând chiar ziua naşterii - pot combina interogările pentru
MONTH () şi DAYOFMONTH () pentru a găsi candidatii născuţi într-o zi anume:
Stabilirea corespondenţei cu un model
MySQL vă permite să căutaţi valori care corespund unui anumit model. Astfel, puteţi
selecta înregistrări fără a furniza o valoare exactă. Pentru a executa o operaţie de
stabilire a corespondenţei cu un model, folosiţi operatori speciali (LIKE şi NOT LIKE)
şi specificaţi un sir care conţine caractere de înlocuire. Caracterul _ corespunde
oricărui caracter, iar % corespunde oricărei secvenţe de caractere (inclusiv o
secvenţă vidă). Stabilirea corespondenţei cu un model folosind LIKE şi NOT LIKE nu
face diferenţa între majuscule şi minuscule.

Acest model corespunde numelor de familie care conţin litera R sau r oriunde în interiorul numelui:
Acest model corespunde prenumelor care conţin exact sase caractere:
Generarea de sumare
Una dintre cele mai utile operaţii pe care MySQL le poate face pentru
dumneavoastră este să rezume mari cantităţi de date brute şi să realizeze
sumarul acestora. MySQL devine un aliat puternic atunci când veţi învăţa să-l
folosiţi pentru a genera sumare, deoarece aceasta este o activitate extrem de
obositoare, consumatoare de timp şi supusă la erori atunci când este
efectuată manual.

O altă formă de realizare a unui sumar este numărarea, folosind funcţia COUNT (). Dacă folosiţi COUNT(*),
aceasta vă indică numărul de rânduri selectat de interogarea dumneavoastră. Dacă interogarea nu are
nici o clauză WHERE, COUNT(*) vă indică numărul rândurilor din tabelul dumneavoastră.
COUNT() poate fi combinată cu ORDER BY şi LIMIT.

Există funcţii de sumar altele decât C0UNT(). Funcţiile MIN(), MAX(), SUM() şi AVG() sunt utile
pentru determinarea valorii minime, maxime, totale şi medii dintr-o coloană
PHP și MySQL
Baza de date poate fi foarte ușor exploatată prin intermediul limbajului
PHP, dar şi cu alte limbaje (de exemplu Java).
Pentru interacțiunea cu baza de date sunt necesari cinci pași:
• se creează o conexiunea la sistemul de baze de date
• se selectează o bază de date
• se execută o instrucțiune SQL
• se folosesc datele întoarse
• se închide conexiunea.

Script MySQL:
Exemplu PHP și MySQL
Introducere

• Limbajul PHP este unul dintre cele mai importante limbaje de programare web, codul sursă
este public, fiind accesibil tuturor şi server-side (rularea sa nu se face pe calculatorul celui care
vizualizează pagina, ci pe server-ul care o conţine).
• PHP este prescurtarea de la Hypertext PreProcessor. Limbajul a fost început în 1994 ca o
extensie a limbajului server-side Perl, şi apoi ca o serie de CGI-uri compilate, de către Rasmus
Lerdorf, pentru a genera un curriculum vitae şi pentru a urmări numărul de vizitatori ai unui site.
A evoluat apoi în PHP/FI 2.0, dar proiectul open-source a început să ia amploare după ce Zeev
Suraski şi Andi Gutmans au lansat o nouă versiune a interpretorului PHP în vara anului 1998,
această versiune primind numele de PHP 3.0. Tot ei au schimbat numele în acronimul amintit
mai sus, până atunci PHP-ul fiind cunoscut ca „Personal Home Page tools”.
• În prezent este utilizată versiunea 6 a acestui limbaj.
• Spre deosebire de paginile HTML, care puteau fi verificate și pe calculatorul local, paginile
PHP nu pot fi verificate decât dacă sunt gazduite pe un server web care are instalat PHP.
• Când accesăm o pagina HTML serverul care o găzduiește trimite pagina HTML către browser
spre afișare. În cazul unei pagini PHP serverul citește codul PHP, îl interpretează și generează
dinamic pagina HTML care este trimisă browserului spre afișare. Acesta este motivul pentru
care utilizatorii folosesc PHP pentru construirea unor pagini cu conținut dinamic.
Introducere

• Limbajul PHP, în marea majoritate a cazurilor, se foloseşte sub formă de secvenţe de cod inserate
în cadrul unui document HTML.
• Structura unui script PHP este foarte asemănătoare cu cea a unui cod scris în limbajul C, mai
ales în sensul în care structurile de programare au aceeaşi sintaxă şi aceeaşi funcţionalitate.
• Rolurile de bază ale unui script PHP constau în aceea că script-ul poate prelua date trimise de
către o pagină web de la un client (în general, datele pot fi trimise de către o pagină web prin
intermediul formularelor) şi de a executa o secvenţă de program în urma căreia va rezulta un cod
HTML, cod pe care clientul îl va primi sub forma unei pagini web.
• Clientul nu va avea acces la codul efectiv al script-ului, ci, prin faptul că acesta se află pe server
şi se rulează tot pe acesta, va primi direct HTML-ul generat de script.
• Scriptul PHP este inserat între tag-urile : „<?php” şi „?>”.
• Instrucţiunea „echo” cuprinsă între acestea este o instrucţiune specifică limbajului PHP, ea
având rolul de a scrie în pagina web textul ce urmează după, cel cuprins între ghilimele.
• Un fişier ce conţine script-uri PHP se salvează de regulă cu extensia .php.
• Separatorul dintre instrucţiunile unui script .php este caracterul ”;”.
• În mod implicit limbajul PHP nu este case-sensitive (deci nu face diferenţa între literele mari şi
cele mici) în ceea ce priveşte cuvintele rezervate ale limbajului (instrucţiunile) respectiv funcţiile (fie
că e vorba de cele predefinite ale limbajului, fie că e vorba de cele definite de către utilizator).
• Este case-sensitive în ceea ce priveşte numele de variabile.
Constante

• Definirea constantelor de către utilizator, în sensul că prin anumiţi identificatori


putem folosi valori constante, se face cu ajutorul funcţiei define.
• Forma generală a acesteia este:

define(”nume constanta”, valoare);

Exemplu:

<?php
define("pi",314e-2);// am definit o constanta numerica reala
define("greeting","Buna ziua!");//o constanta de tip sir de caractere
echo greeting,"<br>";// afisam constanta sir de caractere
echo "Constanta pi, aproximata cu 2 zecimale este ",pi;//iar aici pe cea numerica
?>
Variabile

În PHP identificatorii rezervaţi variabilelor încep cu caracterul ”$”.


Exemplu 1: IF

• if(expresie) instrucţiune1; [else instrucţiune2;]


Exemplu 2: WHILE

• while(expresie) instrucţiune;
Exemplu 3: FOR

• for(expresie_iniţializare;expresie_continuare;expresie_incrementare) instrucţiune;
Exemplu 4: CONTINUE și BREAK
Exemplu 5
Exemplu 6: SIRURI
Exemplu 7
Exemplu 8
Exemplu 9: ARRAY
Exemplu 10
Exemplu 11
Exemplu 12: FUNCTII
Bibliografie:

1. http://www.w3schools.com/
2. Paul DuBois - MySQL (5th Edition) (Developer's Library)
3. Curs PHP - http://www.seap.usv.ro/
Vă mulțumesc pentru atenție !

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