introducere în limbajele sql s i php - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · introducere...

82
Introducere în limbajele SQL s , i PHP (Informatic ˘ a Aplicat ˘ a 1 - Cursul 6) Victor BUCAT ˘ A Facultatea de Inginerie Electric ˘ a - U.P.B.

Upload: lydung

Post on 10-Apr-2018

246 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Introducere în limbajele SQL s, i PHP(Informatica Aplicata 1 - Cursul 6)

Victor BUCATA

Facultatea de Inginerie Electrica - U.P.B.

Page 2: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Partea I

Limbajul SQL

Page 3: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Ce este SQL?

I Structured Query Language (Limbaj structurat de interogare).

I limbaj standard folosit pentru gestiunea bazei de date, pentrucomunicarea cu ea.

I pronuntare: es-q-l sau precum cuvântul englezesc "sequel".

I limbaj neprocedural, declarativ (un limbaj procedural foloseste oserie de instructiuni executate secvential).

I se spune calculatorului ce rezultate se doresc fara a spune cum seobtin.

I SQL este adesea folosit în combinatie cu un limbaj procedural sauorientat spre obiecte (ex: MySQL+PHP).

Page 4: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Istoric al limbajului SQL

I Sfârsitul anilor ’70 - cercetatori de la IBM dezvolta System/R bazatpe lucrarile Dr. E. F. Codd.

I Oracle dezvolta Relational Software.

I Relational Technology dezvolta Ingres.

I 1982 - IBM SQL/DS.I standardizari (utile pentru portabilitate):

I 1986 - standardul ANSII 1987 - standardul ISOI 1989 - standardul SQL-89I 1992 - standardul SQL-92 (SQL 2) - 600 de paginiI 1999 - standardul SQL-99 (SQL 3)I 2003 - standardul SQL:2003I 2006 - standardul SQL:2006 (interoperabilitate cu XML)I 2008 - standardul SQL:2008I 2011 - standardul SQL:2011

I 2013 - Oracle Database 12c

Page 5: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Structura unui sistem SQL

I Structura de tip client/server

Page 6: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Sisteme SQL

I Clienti în linia de comanda

I Clienti cu interfata grafica

I Clienti interfata bazata pe web

Sisteme SQL:

I Access: produs de Microsoft, nu are client SQL; clientul, interfata simotorul pe acelasi calculator

I SQL Server: produs de Microsoft, clientul (iSQL sau QueryAnalyzer) ruleaza ca aplicatie în linia de comanda într-un nucleu decomenzi Microsoft Windows

I MySQL: sub licenta libera (locul 2 în clasamentul SGBDR gratuite cautilizare) cumparat în 2010 de Oracle prin achizitia SunMicrosystems care la rândul ei l-a cumparat de la o firma suedeza.Client în linia de comanda sub diferite sisteme de operare

I Oracle: clienti iSQL*Plus, SQL*Plus, SQL Worksheet

I Sybase: client iSQL

Page 7: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Conventii de sintaxa SQL

I Fiecare instructiune începe cu o comanda, de obicei sub forma unuisingur cuvânt

I Fiecare instructiune se termina cu punct si virgula (;)

I O instructiune se poate scrie pe mai multe linii

I Instructiunile sunt organizate într-o serie de clauze care trebuie saapara într-o anumita ordine

I Nu se face diferenta între majuscule si minuscule - case-insensitive(cu exceptia numelor de tabele)

I Virgulele sunt folosite pentru separarea articolelor dintr-o lista

Page 8: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Conventii de sintaxa SQL (continuare)

I Sirurile de caractere se pun între ghilimele

I Numele obiectelor bazei de date sunt formate numai din litere, cifresi liniute de subliniere

I Exista un set de cuvinte rezervate

I Un comentariu pe o singura linie începe cu doua liniute dedespartire (- -)

I Un comentariu pe mai multe linii se include între /* si */

Page 9: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Categorii de instructiuni SQL

I Limbajul de definire a datelor (DDL - Data Definition Language):CREATE, ALTER, DROP

I Limbajul de interogare a datelor (DQL - Data Query Language):SELECT

I Limbajul de manipulare a datelor (DML - Data ManipulationLanguage): INSERT, UPDATE, DELETE

I Limbajul pentru controlul datelor (DCL - Data Control Language):GRANT, ALTER

I Comenzile pentru controlul tranzactiilor (Transaction ControlCommands)

Page 10: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Crearea si manipularea tabelelor

Se foloseste instructiunea CREATE TABLE:

I numele noului tabel

I numele si definitiile coloanelor separate prin virgule

Exemplu:

CREATE TABLE Angajati(id_angajati INT(11) NOT NULL AUTO_INCREMENT,nume_ang VARCHAR(20),prenume_ang VARCHAR(20),adresa_ang VARCHAR(40),tel_ang VARCHAR(10),varsta_ang INT(2),id_functie INT(3));

Page 11: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Chei primare

CREATE TABLE Angajati(id_angajati INT(11) NOT NULL PRIMARY KEY,....);

sau:

ALTER TABLE AngajatiADD CONSTRAINT PRIMARY KEY (id_angajati);

Page 12: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Chei externe (straine)

CREATE TABLE Angajati(...id_functie INT(4) NOT NULL

REFERENCES Posturi(id_posturi););

sau:

ALTER TABLE AngajatiADD CONSTRAINTFOREIGN KEY (id_functie)

REFERENCES Posturi(id_posturi);

Page 13: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Actualizarea definitiilor tabelelor - instructiunile ALTER siDROP

Modificarea tabelelor:

ALTER TABLE AngajatiADD email_ang VARCHAR(25);

sau:

ALTER TABLE AngajatiDROP COLUMN spor_noapte;

Stergerea tabelelor:

DROP TABLE AngajatiCopie;

Page 14: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Inserarea datelor - instructiunea INSERT

I pentru a insera o singura înregistrare completa

I pentru a insera o singura înregistrare partiala

I pentru a insera rezultatele unei interogari

Exemple:

INSERT INTO AngajatiVALUES ("Cristea", "Dan", "Str. Uverturii,

nr.22", NULL, 23, NULL);

sau:

INSERT INTO Angajati (nume_ang, prenume_ang,adresa_ang, tel_ang, varsta_ang, id_functie)VALUES ("Cristea", "Dan",

"Str. Uverturii, nr.22", NULL, 23, NULL);

Page 15: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Actualizarea si stergerea datelor - instructiunile UPDATE siDELETE

Se foloseste instructiunea UPDATE, formata din trei componente:

I tabelul care urmeaza a fi actualizat

I numele coloanelor si noile valori ale acestora

I conditia de filtrare care determina înregistrarile ce urmeaza a fiactualizate

Pentru a sterge date (înregistrari) dintr-un tabel se foloseste instructiuneaDELETE. Exemplu:

DELETE FROM AngajatiWHERE id_angajati=8;

Pentru a sterge anumite coloane se foloseste instructiunea UPDATEatribuind valori NULL. Daca se omite clauza WHERE, operatiile deactualizare/stergere vor fi aplicate tuturor rândurilor din tabel.

Page 16: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplu instructiunea UPDATE

UPDATE AngajatiSET tel_ang = "07112233"WHERE id_angajati = 7;

Page 17: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Instructiunea SELECT

Regasirea datelor - Instructiunea SELECT (face parte din categoria DQL- Data Query Language)

I SELECT este instructiunea SQL cea mai folosita.

I e nevoie de doua informatii: ce se selecteaza + de unde seselecteaza

Page 18: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 1 - selectarea unei coloane

SELECT nume_studentFROM Studenti;

Page 19: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 2 - selectarea mai multor coloane

SELECT nume_studenti, prenume_studenti, varstaFROM Studenti;

Page 20: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 3 - selectarea tuturor coloanelor

Pentru a selecta toate coloanele se foloseste semnul asterisc (*)

SELECT *FROM Studenti;

Page 21: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 4 - sortarea datelor regasite

Instructiunile SQL sunt alcatuite din clauze, unele obligatorii (de exempluFROM în instructiunea SELECT), altele optionale.Pentru a sorta datele se foloseste clauza ORDER BY.

SELECT nume_studenti, prenume_studentiFROM StudentiORDER BY nume_studenti;

Page 22: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 5 - sortarea în functie de mai multe coloane

SELECT id, nume_studenti, prenume_studenti,varsta

FROM StudentiORDER BY varsta, nume_studenti;

Page 23: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 6 - sortarea în functie de pozitia coloanei

SELECT id, nume_studenti, prenume_studenti,varsta

FROM StudentiORDER BY 4, 2;

Page 24: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 7 - specificarea directiei de sortare

Pentru ordine descrescatoare se foloseste cuvântul cheie DESC.

SELECT id, nume_studenti, prenume_studentiFROM StudentiORDER BY nume_studenti DESC;

Page 25: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Filtrarea datelor: utilizarea clauzei WHERE

I Se folosesc criterii de cautare (adica "conditii de filtrare").

I Clauza ORDER BY trebuie plasata dupa WHERE.

I Operatorii clauzei WHERE: =,<>,!=,<,<=,>,>= ,BETWEEN,IS NULL

I când o coloana nu contine nicio valoare, se spune ca include ovaloare NULL (cu totul altfel decât un câmp care contine 0 sauspatiu)

Page 26: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 8 - clauza WHERE

SELECT nume_studenti, prenume_studenti, varstaFROM StudentiWHERE varsta = 20;

Page 27: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 9 - operatorii clauzei WHERE

SELECT id, nume_studenti, prenume_studenti,grupa

FROM StudentiWHERE grupa <> "112A";

Page 28: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 10 - operatorii clauzei WHERE

SELECT id, nume_studenti, prenume_studenti,varsta

FROM StudentiWHERE varsta BETWEEN 21 AND 23;

Page 29: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 11 - filtrarea avansata (operatorul AND)

SELECT nume_studenti, prenume_studentiFROM StudentiWHERE grupa = "111A" AND varsta > 21;

Page 30: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 12 - filtrarea avansata (operatorul OR)

SELECT nume_studenti, prenume_studenti, grupa,varsta

FROM StudentiWHERE grupa = "111A" OR varsta < 21;

Page 31: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 13 - filtrarea avansata (operatorul IN)

SELECT nume_studenti, prenume_studenti, varstaFROM StudentiWHERE varsta IN (20, 21, 22);

Page 32: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 14 - filtrarea avansata (operatorul NOT)

SELECT nume_studenti, prenume_studenti, varstaFROM StudentiWHERE NOT varsta = 20;

Page 33: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 15 - filtrarea avansata (operatorul LIKE)

I caracterul de înlocuire (oricâte): procent(%)

I caracterul de înlocuire (un singur caracter): liniuta de subliniere (_)

SELECT nume_studenti, prenume_studenti, grupaFROM StudentiWHERE prenume_studenti LIKE "S%";

Page 34: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 16 - filtrarea avansata (operatorul LIKE)

SELECT nume_studenti, prenume_studenti, varsta,grupa

FROM StudentiWHERE grupa LIKE "11_ _";

Page 35: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 17 - alias-uri

Un alias este un nume alternativ al unui câmp sau al unei valori. Seatribuie prin intermediul cuvântului cheie AS.

SELECT nume_studenti,varsta AS "VARSTA STUDENTULUI"

FROM Studenti;

Page 36: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 18 - efectuarea calculelor matematice

SELECT nume_studenti,2010-varsta AS "AN NASTERE"

FROM Studenti;

Page 37: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Functii pentru manipularea datelor

I functii pentru manipularea sirurilor de caractere (eliminarea saucompletarea cu valori, conversia în majuscule sau minuscule)I LENGTH()I LOWER()I UPPER()I RTRIM() - elimina spatiile albe de la dreapta sirului

I pentru operatii matematiceI ABS()I COS()I EXP()I PI()I SQRT()

I de tip data si ora

I functii de sistem

Page 38: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 19 - functii pentru manipularea datelor

SELECT CONCAT(UPPER(nume_studenti), " ",prenume_studenti)AS NUME

FROM Studenti;

Page 39: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 20 - functii matematice

SELECT PI(), SQRT(625), SIN(PI()/2);

Page 40: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Sintetizarea datelor

Utilizarea functiilor agregat

I lucreaza cu seturi de înregistrari pentru a calcula si returna osingura valoare

I AVG() - media valorilor dintr-o coloana

I COUNT() - numarul de înregistrari dintr-un tabel sau de înregistraricare satisfac un anumit criteriu

I MAX(), MIN()

I SUM()

Page 41: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 21 - functia AVG()

SELECT AVG(varsta) AS "Varsta medie"FROM Studenti;

Page 42: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 22 - functia COUNT()

SELECT COUNT(nume_studenti)AS Numarul_studentilor

FROM Studenti;

Page 43: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 23 - functia MAX()

SELECT MAX(varsta) AS Varsta_maximaFROM Studenti;

Page 44: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 24 - argumentul DISTINCT

SELECT AVG(DISTINCT varsta) AS "Varsta medie"FROM Studenti;

Page 45: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Gruparea datelor

I Grupurile permit împartirea datelor în seturi logice pentru a puteaefectua calcule de sinteza cu fiecare grup.

I Se foloseste clauza GROUP BY plasata dupa clauzele WHERE siORDER BY.

I Grupurile pot fi filtrate cu clauza HAVING (spre deosebire de clauzaWHERE care filtreaza înregistrari, HAVING filtreaza grupuri).

Page 46: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 25 - Gruparea datelor

SELECT grupa, SUM(restante) AS Restante_grupaFROM StudentiGROUP BY grupa;

Page 47: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 26 - clauza HAVING

SELECT grupa, SUM(restante) AS Restante_grupaFROM StudentiGROUP BY grupaHAVING SUM(restante) >= 5;

Page 48: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 27 - sub-interogari

SQL permite crearea sub-interogarilor, adica a interogarilor care suntînglobate în alte interogari.

SELECT nume_ang, prenume_ang, tel_angFROM AngajatiWHERE id_functie IN (SELECT id_functieFROM PosturiWHERE sal_min >= 4000);

Page 49: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 27 - sub-interogari

Page 50: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 28 - sub-interogari (crearea de câmpuri cu valoarecalculata)

SELECT den_post, (SELECT COUNT(*)FROM AngajatiWHERE Angajati.id_functie = Posturi.id_posturi) AS Nr_posturiFROM Posturi;

Page 51: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 29 - unirea tabelelor

SELECT nume_ang, prenume_ang, den_post, sal_minFROM Angajati, PosturiWHERE Angajati.id_functie = Posturi.id_posturi;

Page 52: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 30

SELECT nume_ang, prenume_ang, den_post, sal_minFROM Angajati, Posturi;

Page 53: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 31 - uniune interioara

SELECT nume_ang, prenume_ang, den_post, sal_minFROM Angajati INNER JOIN PosturiON Angajati.id_functie = Posturi.id_posturi;

Page 54: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 32 - uniune exterioara

Se foloseste RIGHT sau LEFT pentru a specifica tabelul din careurmeaza a se include toate rândurile.

SELECT nume_ang, prenume_ang, den_postFROM Angajati RIGHT OUTER JOIN PosturiON Angajati.id_functie = Posturi.id_posturi;

Page 55: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 33 - combinarea interogarilor

SELECT nume_ang, prenume_ang, varsta_angFROM AngajatiWHERE varsta_ang > 40UNIONSELECT nume_ang, prenume_ang, varsta_angFROM Angajati, PosturiWHERE Angajati.id_functie = Posturi.id_posturi

AND spor_noapte > 15;

Page 56: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 33 - combinarea interogarilor

Page 57: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Caracteristici avansate: Gestiunea prelucrarii tranzactiilor

Grupuri de operatii SQL ce se executa în totalitate sau deloc. Exemplu înMySQL:

START TRANSACTION...

Comanda SQL ROLLBACK este folosita pentru anularea instructiunilor.Pentru a crea un punct de salvare se foloseste instructiunea SAVEPOINT.

Page 58: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Caracteristici avansate: Securitatea bazelor de date

I autorizarea si autentificarea utilizatorilor

I securitatea este gestionata prin intermediul instructiunilor SQL:GRANT sau REVOKE

Page 59: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Bibliografie SQL

I https://www.w3schools.com/sql/

I https://www.tutorialspoint.com/sql/

I http://www.youtube.com/watch?v=4Z9KEBexzcM/

Page 60: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Partea II

Limbajul PHP

Page 61: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Prezentarea limbajului PHP

I învatarea PHP = pasul natural urmator dupa învatarea limbajuluiHTML

I se integreaza cu limbajul de marcare HTML

I Ierarhia celor mai folosite limbaje de programare:

Pozitie Limbaj Avantaje Dezavantaje

1 Java Portabilitate, popularitate Mai putin rapid decât limbajele originale compilate2 C Viteza Gestiunea dificila a memoriei3 C++ Viteza mai vechi/stângaci decât alte limbaje OO4 PHP Potrivit pt. programare web, documentatie ok Prea multe moduri de a face acelasi lucru5 VB - Merge doar în Windows6 Python Excelent de lizibil si de bine proiectat -7 C# Puternic si destul de rapid Doar pentru Windows8 JS Singurul mod pt. aplicatii web pe partea client Se foloseste doar cu un browser web9 Perl Procesare de test si administrarea de sistem Prea multe moduri de a face acelasi lucru

10 Ruby Limbajul cel mai mult orientat pe obiecte Viteza redusa

Page 62: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Prezentarea limbajului PHP

I dedicat dezvoltarii de pagini web dinamice

I nu ruleaza pe client (browser) ci pe server

I limbaj de script (interpetat, nu compilat)

I echivalentul PHP de la Microsoft este ASP

I permite aplicatii simple dinamice dar si aplicatii complexe ce contininteractiuni cu bazele de date

I cel mai adesea este folosit în conjunctie cu MySQL

I sintaxa similara limbajelor C, Java, Perl

I începând cu versiunea 5 contine caracteristici ale programarii OO(Orientate pe Obiecte)

Page 63: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Istoricul limbajului PHP

I creat în 1994 de Rasmus Lerdorf pentru a-si gestiona mai usorpaginile web personale

I initial PHP provenea de la Personal Home Page Tools

I 1995 - versiunea 2

I 1998 - versiunea 3 (de atunci PHP provine de la HyperTextPreprocessor ilustrând faptul ca PHP genereaza pagini webdinamice).

I 2000 - versiunea 4

I 2007 - versiunea 5

I 2013 - versiunea 5.5

I 3 decembrie 2015 - versiunea 7.0

Page 64: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Avantajele limbajului PHP

I este gratuit si Open Source

I nu depinde de platforma

I la fel de puternic ca mediile platite

I adaptat pentru traficul generat pe un server web

I este dedicat dezvoltarii web

I are o documentatie bogata

I comunitate de dezvoltare activa imensa

I este adesea folosit cu serverul web Apache care este deasemeneagratuit dar si robust

Page 65: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Ce este o pagina web statica?

Page 66: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘
Page 67: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Ce este o pagina web dinamica?

Page 68: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘
Page 69: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Diagrama operatiunilor pentru o pagina web dinamica

Page 70: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Ce este necesar pentru a putea folosi PHP?

I server web (Apache este folosit în 75% din cazuri, IIS (InternetInformation Server) de la Microsoft este folosit în 20% din cazuri

I preprocesorul PHP

I sistemul de gestiune a bazelor de date (MySQL)

Se recomanda instalarea componentelor concomitent, automat, cu kitulde instalare WAMP SERVER 2(http://www.wampserver.com/en/).Mai este nevoie de un editor de text (de ex. Notepad++ sau SublimeText).

Page 71: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Configurare

Fisierele de configurare sunt:

I httpd.conf pentru serverul Apache

I php.ini pentru limbajul PHP

I my.ini pentru MySQL

Page 72: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Configurare (continuare)

Trebuie sa ne asiguram ca în fisierul php.ini exista linia:

error_reporting = E_ALL

Si ca utilizatorul root din MySQL are setata o parola:

use mysql;update userset Password =

PASSWORD ("scrieti aici parola dorita")where user = "root";flush PRIVILEGES;quit;

Page 73: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Configurare (continuare)

Deasemenea în cazul în care serverul nu poate fi pus online trebuiespecificat un alt port decât portul 80 (setat implicit) în fisierul httpd.conf.Mai jos am setat acest port la 8080 în fisierul httpd.conf:

Listen 8080

Page 74: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Elementele limbajului

I Exemplele pentru sintaxa de baza le gasiti la adresahttp://itee.elth.pub.ro/~vbucata/ia/cursuri/ex/index.php

I Apoi alte câteva exemple:

I Exemplul 38 - Formulare

I Exemplul 39 - Cookieuri

I Fis, iere sesiune

I Exemplul 40 - PHP+MySQL

Page 75: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 38 - formulare

Fis, ierul ex38.php:

1 <html>2 <head>3 <title>Formular</title>4 <body>5 <form action="ex38b.php" method="post">6 utilizator:<input type="text" name="

utilizator" value=""/>7 </body>8 </html>

Fis, ierul ex38b.php:

1 <?php2 $utilizator=$_POST[’utilizator’];3 echo $utilizator;4 ?>

Page 76: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 39 - cookie-uri

1 <?php2 setcookie(’test’,45,time()+(60*60*24*7));3 ?>4 <?php5 $var1=0;6 if (isset($_COOKIE[’test’]))7 {8 $var1=$_COOKIE[’test’];9 }

10 echo $var1;11 ?>

Page 77: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Fis, iere sesiune

I ofera o sigurant,a mai mare decât cookie-urile

I sunt fis, iere ce sunt salvate pe serverul web s, i în care se poate stocaoricâta informat,ie se dores, te

I se folosesc cookie-uri pentru a vedea unde sunt stocate fis, ierelesesiune

I nu se poate vedea informat,ia ci doar adauga

I în cazul unui numar mare de utilizatori trebuie prevazute masuri desecuritate

Page 78: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

PHP+MySQL

Pentru interactiunea cu baza de date sunt necesari cinci pasi:

1 se creeaza conexiunea la sistemul de baze de date

2 se selecteaza o baza de date

3 se executa o instructiune SQL

4 se folosesc datele întoarse

5 se închide conexiunea

Page 79: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

script MySQL

Se scriu urmatoarele comenzi MySQL:

create database db1;use db1;create table studenti(

idstudent int auto_increment not null,primary key(idstudent),nume varchar(25) not null,prenume varchar(25) not null,annastere smallint(4) not null

);insert into studenti(nume, prenume, annastere)values ("Ion","Ion",1994),("Gheorghe","Gheorghe",1993);

Page 80: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Exemplul 40 - PHP cu MySQL

1 <?php $conexiune=mysql_connect("localhost","root","scrieti aici parola");2 if(!$conexiune){3 die("Eroare la conexiunea cu MySQL");4 }5 $bd_select=mysql_select_db("db1",$conexiune);6 if(!$bd_select){7 die("Eroare la deschiderea bazei de date");8 }9 $rezultat=mysql_query("select * from studenti",$conexiune);

10 if(!$rezultat){11 die("Instructiunea MySQL nu poate fi executata");12 }13 while($inregistrare=mysql_fetch_array($rezultat)){14 echo $inregistrare[0]." ".$inregistrare[1]."<br>";1516 }17 mysql_close($conexiune); ?>

Page 81: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Bibliografie PHP

I http://www.newthinktank.com/2014/08/php-programming/

I https://www.youtube.com/watch?v=7TF00hJI78Y

I http://www.newthinktank.com/2014/09/php-mysql-tutorial/

Page 82: Introducere în limbajele SQL s i PHP - itee.elth.pub.rovbucata/ia/cursuri/curs6.pdf · Introducere în limbajele SQL s, i PHP (Informatica Aplicat˘ a 1 - Cursul 6)˘ Victor BUCATA˘

Întrebari ?

Va mult,umesc pentru atent,ie!