Documente Academic
Documente Profesional
Documente Cultură
Limbajul SQL (Structured Query Language): Este un limbaj declarativ (neprocedural) care permite o comunicare complex i rapid a utilizatorului cu bazele de date, n funcie de cerinele i restriciile informaionale ale acestuia. Prin acest limbaj utilizatorul descrie informaiile pe care vrea s le obin n urma interogrii, fr a preciza algoritmii necesari pentru obinerea rezultatelor dorite. SQL - face parte din categoria limbajelor de aplicaii (orientate pe mulimi) pentru baze de date relaionale. Este un limbaj standard - ca urmare principalele sale instruciuni sunt recunoscute de ctre mai multe SGBD-uri (Oracle, Access, Dbase, INFORMIX, DB2, Visual FoxPro.)
Faciliti
Faciliti orientate obiect ce propun definirea la nivel de utilizator a tipurilor de date abstracte; Structuri de control specifice: IF, FOR, WHILE Comunicare n reea; Prelucrare distribuit; Faciliti multi-media, nglobate n modulul Multi - Media SQL. Pe lng manipularea i regsirea datelor, SQL efectueaz i operaii complexe privind actualizarea i administrarea bazei de date.
n funcie de rolul lor n manipularea datelor i tranzaciilor, instruciunile SQL, pot fi grupate n:
1.
2. 3.
4.
5. 6.
instruciuni de definire a datelor care permit descrierea structurii bazei de date; instruciuni de manipulare a datelor n sensul adugrii, modificrii i tergerii nregistrrilor; instruciuni de selecie a datelor care permit consultarea bazei de date; instruciuni de procesare a tranzaciilor care privesc unitile logice de prelucrare i constituie n fapt, operaii multiple de manipulare a datelor; instruciuni de control al cursorului; instruciuni privind controlul accesului la date.
SGBD Access 2010: SQL Cuvintele cheie ale vocabularului SQL (fraza SQL) sunt: instruciunile, clauzele, funciile i operatorii. Instruciunile: au cel mai important rol, deoarece determin executarea unei aciuni (SELECT; CREATE; INSERT; DELETE; UPDATE; TRANSFORM; ALTER; DROP). Clauzele restricioneaz aria valoric a entitilor ce particip la interogare (WHERE; ORDER BY; GROUP BY; HAVING). Funciile mbuntesc capacitile SQL de a manipula datele (Sum; Max; Min; Avg; Count; Iif). Operatorii efectueaz o comparare a valorilor seleciei:
= ; > ; >= ; < ; <= ; <>; And; Or; Not; Between; Like; In
SGBD Access 2010: SQL Reguli de sintax ale unei fraze SQL:
1. 2. 3. 4.
CREATE QUERY DESIGN CLOSE (SHOW TABLE) UNION / PASS TROUGTH / DATA DEFINITION 5. INTRODUCERE COMENZI SQL Ex. SELECT ALL a1 FROM A; 6. RUN 7. SAVE ( SAVE AS..)
SGBD Access 2010: SQL SELECT LMD: I.a. Interogri (simple) de selecie
SELECT [domeniu ALL / DISTINCT / TOP n ] <list selecie cmpuri> FROM <nume tabel(e)> [WHERE <criteriu de selecie>] [ORDER BY <list cmpuri criterii de ordonare> {ASC/DESC}];
Domeniul - determin modalitile de manipulare a nregistrrilor din BD asupra creia opereaz selecia. Domeniul poate fi: ALL (implicit) include toate nregistrrile care ndeplinesc condiiile impuse; DISTINCT elimin nregistrrile care au valori duplicate n cmpurile selectate (se va afia doar o apariie a datei multiple) TOP n primele n
SGBD Access 2010: SQL SELECT SELECT [domeniu: ALL / DISTINCT / TOP n] <list selecie cmpuri> FROM <nume tabel(e)> [WHERE <criteriu de selecie>] [ORDER BY <list cmpuri criterii de ordonare> {ASC/DESC}]; List selecie cmpuri - reprezint proiecia BD, cuprinznd toate cmpurile care vor aprea n tabelul cu rezultatele interogrii
Clauza FROM nume tabel precizeaz tabelul sau tabelele (sau interogri deja create) din care fac parte cmpurile ce se utilizeaz pentru proiecia BD Clauza WHERE precizeaz criteriul de selecie sub forma unei expresii. Clauza este opional i nu opereaz cu funcii totalizatoare Clauza ORDER BY - criteriul de ordonare a nregistrrilor selectate. Fiecare cmp precizat n Clauza ORDER BY constituie o cheie de sortare (sensul sortrii se precizeaz prin ASC (implicit) sau DESC)
Tabelul A a1 a2 a3 a4 a5 a6
Selectarea cmpurilor a2, a4 i a5 din A pt. care a2 s ia valorile 1500, 13000 i 14000, cu ordonare cresctoare a lui a2 i descresctoare a lui a5
SELECT a2,a4,a5 FROM A WHERE a2 IN(1500, 13000, 14000) ORDER BY a2 ASC, a5 DESC;
SELECT funcie_agregat1, funcie_agregat2... AS [Alias 1], [Alias 2], ...n,... FROM <nume tabel(e)> WHERE <criteriu de selecie> Funcii agregat: Count (<>Null); Sum(nume atribut) ; Min(nume atribut) ; Max (nume atribut) Avg (nume atribut); Iif(([Valoare]<5000000,0,[Valoare]*0.15) AS
Reducere
Obs. n lipsa opiunii GRUP BY, la utilizarea funciilor agregat, rezultatul va conine o singur linie
SELECT funcie_agregat1 AS [Alias1], ...2,... FROM <nume tabel(e)> WHERE <criteriu de selecie>
Selectarea celei mai mari / mai mici / i medii valori a lui a5 din tabela A
Numrarea nregistrrilor din tabela A Selectarea rezultatului evalurii unei condiii, pentru care a2 este diferit de zero
SELECT a1, a5, a6, IIF(a5>=a6;a5-a6;a6-a5) AS [Rezultat evaluare] FROM A WHERE a2 IS NOT NULL;
Exemple:
Se da structura tabelelor de date: Facturi(NrFact,Datafact, Datascad, Codfiscal) Continut Factura(Codisbn, NrFact,Cantitate, PretF) 1. Sa se afiseze numarul si data facturilor emise pentru toti clientii: SELECT FACTURI.NrFact, FACTURI.datafact FROM FACTURI; 2. Sa se afiseze cantitatea maxima si minima facturata clientilor: SELECT MAX(CANTITATE) AS CANTITATE_MAXIMA, MIN(CANTITATE) AS CANTITATE_MINIMA FROM [CONTINUT FACTURA];
List selecie se refer la una sau mai multe funcii agregate care au ca argumente nume de cmpuri ale tabelei(lor) bazei de date. Aceste cmpuri trebuie s fie n mod obligatoriu numerice.
AS ALIAS asociaz un pseudonim aferent rezultatului unui calcul simplu sau unei funcii agregat.
SGBD Access 2010: SQL SELECT LMD: II. Interogri (complexe) de selecie i grupare
SELECT [domeniu] [funcie FROM nume tabel(e)
WHERE criteriu de selecie [GROUP BY cmp(uri) de grupare] [HAVING criteriul cmpului de grupare]
[ORDER BY list cmpuri criterii de ordonare {ASC/DESC}];
Clauza GROUP BY precizeaz cmpul sau cmpurile pe baza crora se va efectua gruparea nregistrrilor. Se pot executa funciile agregate descrise n lista de selecie pentru fiecare dintre grupurile de nregistrri ( cu linia de Total n QBE) Clauza GROUP BY formeaz grupuri de tupluri ale unei relaii, pe baza valorilor comune luate de un atribut. Rezultatul unei fraze SELECT ce conine clauza GROUP BY se obine prin regruparea tuturor liniilor din tabelele enumerate n FROM, extrgndu-se cte o singur apariie pentru fiecare valoare distinct a coloanei sau a grupului de coloane
103
103
90
74
5
25
50000
300000
Exp: Interogri (complexe) de selecie i grupare SELECT NRFACT, SUM(CANTITATE*PRETF) AS VALOARE GROUP BY NRFACT HAVING SUM(CANTITATE*PRETF)>490;
SELECT NRFACT, SUM(CANTITATE*PRETF) AS VALOARE FROM [CONTINUT FACTURA] WHERE CANTITATE>7 GROUP BY NRFACT HAVING SUM(CANTITATE*PRETF)>1400;
WHERE criteriu de selecie [GROUP BY cmp(uri) de grupare] [HAVING criteriul cmpului de grupare]
[ORDER BY list cmpuri criterii de ordonare {ASC/DESC}];
HAVING se refer la restricia aplicat cmpului de grupare. Clauza WHERE acioneaz nainte de gruparea nregistrrilor, n timp ce HAVING activeaz restricia dup gruparea acestora. Deci, prin asocierea clauzei HAVING la GROUP BY este posibil selectarea anumitor grupuri de tupluri ce ndeplinesc un criteriu numai la nivel de grup.
SGBD Access 2010: SQL SELECT SELECT a1, SUM(a3*a4) AS a5 FROM A GROUP BY a1 HAVING SUM(a3*a4) >500000;
Tabela R a1
100 100 101 101 103 208 85 208 74 90 74 10 30 8 10 5 25 200000 100000 200000 300000 50000 300000
a5=SUM(a3*a4)
100
103
812500
775000
Tabela R1
460000
a1
100
a5=SUM(a3*a4)
812500
103
SELECT a1, SUM(a3*a4) AS a5 FROM A WHERE a3>5 GROUP BY a1 HAVING SUM(a3*a4) >750000;
SELECT b1, b2, b4, b5, b3*b4 AS [produs b3 i b4] FROM B WHERE b2=criteriu text GROUP BY b4 HAVING Sum(b3*b4)>300000;
SELECT b1, b2, Avg(b3) AS [medie b3], Count(*) AS [Total] FROM B GROUP BY b3, HAVING Avg(b3) > 250000 AND Count (*)>5;