Documente Academic
Documente Profesional
Documente Cultură
Interog ri de selec ie
SELECT
Limbajul de manipulare a datelor: Interog ri (simple) de selec ie (simple) SELECT [domeniu: ALL/DISTINCT/DISTINCTROW] list selec ie cmpuri FROM nume tabel (e) [WHERE criteriu de selec ie] [ORDER BY list cmpuri criterii de ordonare {ASC/DESC}]; Domeniul determin modalit ile de manipulare a nregistr rilor din BD asupra c reia opereaz selec ia. Domeniul poate fi: ALL (implicit) include toate nregistr rile care ndeplinesc condi iile impuse; DISTINCT elimin nregistr rile care au valori duplicate n cmpurile selectate (se va afi a doar o apari ie a datei multiple) DISTINCTROW elimin nregistr rile duplicate n ansamblul lor (nu numai pe acelea care au cmpuri duplicate)
SELECT
List selec ie cmpuri reprezint proiec ia BD, cuprinznd toate cmpurile care vor ap rea n tabela cu rezultatele interog rii (,) Clauza FROM nume tabel precizeaz tabela sau tabelele (sau interog ri deja create) din care fac parte cmpurile ce fac obiectul proiec iei BD (,) Clauza WHERE precizeaz criteriul de selec ie sub forma unei expresii. Clauza este op ional i nu opereaz cu func ii totalizatoare Clauza ORDER BY precizeaz criteriul de ordonare a nregistr rilor selectate. Fiecare cmp precizat n Clauza ORDER BY constituie o cheie de sortare (sensul sort rii se precizeaz prin ASC (implicit) sau DESC)
SELECT : Exemple
Selectarea (f r dubluri a) lui a5 > 1000
SELECT : Exemple
Selectarea cmpurilor a2, a4 i a2 din A pt. care a2 s ia valorile 1500, 13000 i 14000, cu ordonare cresc toare a lui a1 i descresc toare a lui a5 Selectarea celei mai mari / mai mici / i medii valori a lui a5 din tabela A Num rarea nregistr rilor din tabela A Selectarea rezultatului evalu rii unei condi ii, pentru care a2 este diferit de zero
SELECT a2,a4,a5 FROM A WHERE a2 IN(1500, 13000, 14000) ORDER BY a2 ASC, a5 DESC; SELECT DISTINCTROW Max(a5) AS [a5_maxim], Min(a5) AS [a5_minim], Avg(a5) AS [a5_medie] FROM A
SELECT a1, a5, a6, IIF(a5>=a6;a5-a6;a6-a5) AS [func ie condi ional ] FROM A WHERE a2 IS NOT NULL;
SELECT
LMD: Interog ri (complexe) de selec ie i grupare Func iile de grup (agregat) permit construirea unor interog ri SQL prin care utilizatorul poate s efectueze diverse calcule pentru grupuri de nregistr ri care au cmpuri de aceea i valoare valoare.
SELECT [domeniu] [func FROM nume tabel (e) WHERE criteriu de selec ie
selec ie]
List selec ie se refer la una sau mai multe func ii agregate care au ca argumente nume de cmpuri ale tabelei(lor) bazei de date. Aceste cmpuri trebuie s fie n mod obligatoriu numerice. AS ALAS asociaz un pseudonim rezultatului unui calcul simplu sau unei finc ii agregat.
SELECT
selec ie]
Clauza GROUP BY precizeaz cmpul sau cmpurile pe baza c rora se va efectua gruparea nregistr rilor. Astfel, se pot executa func iile agregate descrise n lista de selec ie pentru fiecare dintre grupurile de nregistr ri ( cu Total n QBE) HAVING se refer la restric ia aplicat cmpului de grupare. Clauza WHARE ac ioneaz nainte de gruparea nregistr rilor, n timp ce HAVING activeaz restric ia dup gruparea acestora.
SELECT
SELECT b1, b2, b4, b5, b3*b4 AS [produs b3 i b4] FROM B WHERE b2=ctiteriu text GROUP BY b4 HAVING Sum(b3)>300000; SELECT b1, b2, Avg(b3) AS [medie b3], Count(*) AS [Total] FROM B GROUP BY b3,b4 HAVING Sum(b3)>3000000 AND Avg(b3)>250000 AND Count (b4)>50
Compunerile echivalente (EchiCompunerile) -> utilizeaz clauza WHERE (pt selec ia nregistr rilor) asociat cu o egalitate a valorilor n cmpurile de leg tur .
SELECT [domeniu] list selec ie cmpuri din tabele diferite FROM nume tabele [WHERE criteriu de compunere [ i de selec ie]
[ORDER BY list cmpuri criterii de ordonare {ASC/DESC}];
SELECT A.a1, Sum(B.b2* SELECT A.a1, A.a2, B.b1, C.c1, C.c3 B.b3) AS Total FROM A, B FROM A, B, C WHERE A.a1=B.a1 AND A.a1=C.a1 WHERE A.a1=B.a1 AND A.a5>=10000; ORDER BY C.c3;
A compus cu B i A compus cu cu C
SELECT
b4 b5 a1
O compunere intern (INNER sau echivalent (echicompunere) INNER) este aceea n care liniile unui tabel sunt combinate cu liniile altui tabel, rezultnd un num r total de linii egal cu produsul num rului de linii din fiecare tabel (cazul 1 din Join Properties). LEFT OUTER JOIN (1 n) include toate nregistr rile din tabela A 1 (cardinalitate 1) i numai acele nregistr ri din tabela B 1 (cardinalitate n) pentru care valorile atributelor cheie (a1 sunt n a1) egale (cazul 2 din Join Properties). RIGHT OUTER JOIN (1 n) include toate nregistr rile din tabela 1 B (cardinalitate n) i numai acele nregistr ri din tabela A B n A (cardinalitate 1) pentru care valorile atributelor cheie (a1 sunt 1 a1) egale (cazul 3 din Join Properties).
SELECT : JOIN
Tabela C a1 c1 c2 c3 c4 C5 b1
SELECT [domeniu] list selec ie cmpuri din tabele diferite FROM nume tabel _1 {INNER/LEFT OUTER/RIGHT OUTER } JOIN nume tabel _2 ON criteriu asociere
[WHERE criteriu de selec ie [ORDER BY list cmpuri criterii de ordonare {ASC/DESC}];
SELECT A.a5, B.b3, (A.a5*B.b3) AS [Produs] FROM A INNER JOIN B ON A.a1=B.a1 ORDER BY A.a5;
SELECT A.a1, A.a2, A.a5, B.b1, C.c1 FROM A INNER JOIN (B INNER JOIN C ON B.b1=C.b1) ON B (A.a1=B. a1 ) AND (B.b1=C.b1);
SQL
O subinterogare sau o interogare imbricat presupune ca setul de rezultate ob inut de la o interogare s constituie argument pentru o alta (interogare n interogare). Subinterog ri construite pe o singur tabel SELECT [domeniu] list selec ie cmpuri FROM nume tabel [WHERE cmp > / < / >= / <= / <> / = (SELECT cmp FROM nume tabel [WHERE criteriu de selec ie]); SELECT DISTINCTROW a1 a1,a3,a5 FROM A WHERE a5 > (SELECT a5 FROM A WHERE a4=text);
SQL
Subinterog ri construite pe mai multe tabele SELECT [domeniu] list selec ie cmpuri FROM nume tabel _1 [WHERE tabel _1.cmp leg tur =(SELECT cmp leg tur FROM nume tabel _2 [WHERE criteriu de selec ie pentru subinterogare]) SELECT a1 a1,a2,a5 FROM A WHERE A.a1 a1=(SELECT a1 FROM B WHERE b3>25000);
SQL
Subinterog ri pentru care a fost construit o compunere SELECT [domeniu] list selec ie cmpuri FROM nume tabel _1,nume tabel _2 [WHERE tabel _1.cmp leg tur =tabel _2.cmp de leg tur AND tabel _1.cmp leg tur =(SELECT cmp de leg tur FROM nume tabel _2 [WHERE criteriu de selec ie pentru subinterogare]) SELECT a1 a1,a2,a5 FROM A,B A,B WHERE A.a1 B.a1 a1=B a1 AND A.a1 a1=(SELECT a1 FROM B WHERE b3>25000);
SQL
Tabela A a1 a2
Domeniul de ob inere a rezultatelor unei subinterog ri poate fi influen at prin precizarea unuia din cuvintele cheie: ALL ANY i ALL, respectiv EXIST . Fiecare predicat (ANY, ALL, EXISTS) poate s fie utilizat i n forma cu nega ie NOT ALL: ALL se preiau rezultatele subinterog rii i, dac acestea ndeplinesc condi ia cerut , se returneaz valoarea logic True EXEMPLU: se afi eaz a2 (numele produselor) pentru care a4=1 (de calitatea nti) i a5 (pre ul) este mai mic dect pre ul a5 al tuturor a2 (produselor) pentru care A4=2 (de calitatea a 2-a) SELECT a2 FROM A WHERE a4=1 AND a5< ALL (SELECT a5 FROM A WHERE a4=2);
SQL
Tabela B b1 b2
ANY/SOME: ANY/SOME are n vedere compararea valorii de ie ire a subinterog rii cu fiecare nregistrare din interogarea extern . Dac pentru fiecare nregistrare din interogare exist un rezultat al subinterog rii, se va returna valoarea logic True. Cuvntul cheie SOME are acela i rol i caracteristici ca ANY EXEMPLU: se returneaz lista unor elemente (b1, b2, b3, b4) care apar in domeniului precizat de b3 pentru restric iile b5=ABC i b4=2000 SELECT b1,b2,b3,b4 FROM B WHERE b3= ANY (SELECT b3 FROM B WHERE b5=ABC AND b4=2000);
SQL
Tabela B b1 b2
EXISTS: EXISTS folose te subinterogarea ca pe o condi ie, analiznd setul de rezultate al acesteia i returnnd valoarea False dac nu exist nici o ie ire. Se poate astfel verifica existen a anumitor nregistr ri i controla ansamblul r spunsurilor date de interogare. EXEMPLU: S se verifice dac n cadrul tabelei B exist nregistr ri pentru care b4 < 2002 SELECT b2,b4 FROM B WHERE EXISTS (SELECT * FROM B WHERE b4 < 2002);