CURS 6
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.
1. Introducere
• 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.
2. De ce să alegem MySQL?
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.
2. De ce să alegem MySQL?
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ă
MySQL este clasificat ca sistem de gestiune a bazelor de date relaţionale (SGBDR).
• 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.
3. Terminologie structurală
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
Type 'help' for help.
mysql>
După ce stabiliţi o conexiune
cu serverul, puteţi încheia
sesiunea oricând tastând
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.
5. Interogări
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.
6. Crearea bazei 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.
nume
Redundanţa datelor
Tip chestionar-test
Data examinare
Punctaj obţinut
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.
• 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.
6.2. Adăugarea de noi înregistrări
Daca se foloseste instrucțiunea INSERT trebuie specificat tabelul în care se dorește inserarea unui
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,....)
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 (...),(...),...
Acest procedeu necesită introducerea de la tastatură a unei cantităţi mai reduse de text, iar
execuţia sa de către server este mai eficientă.
INSERT INTO candidat VALUES (1,"Ionescu","N","Rodica","1981-11-
03","[email protected]", "zorilor 73", "VL","23415","07100000","fotografie");
INSERT INTO identificare VALUES ("Popescu“,”Alex”), (“Ion”,”Radu”);
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,...)
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 identificare (nume, prenume) VALUES ("Popescu“,”Alex”), (“Ion”,”Radu”);
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,...
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:
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.
INSERT INTO elev SET nume =“Marius“, sex=”M”;
LOAD DATA LOCAL INFILE “candidat.txt” INTO TABLE 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.
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ă.
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:
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:
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
programului 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
Limitarea rezultatelor unei interogăriCâ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:
Limitarea rezultatelor unei interogări
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ă
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.
PHP și MySQL
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”.
Introducere
• Î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.
Introducere
• 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.
Introducere
• 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
Vă mulțumesc pentru atenție !
Top Related