Documente Academic
Documente Profesional
Documente Cultură
Crearea interogrilor
Scop:
Tipuri de interogri:
de selecie; ncruciate efectueaz operaii asupra datelor unui cmp; de aciune execut operaii cu nregistrrile selectate;
Crearea interogrilor
SELECT Customers.CompanyName, Customers.City, Orders.OrderDate FROM Customers INNER JOIN Orders ON Customers.CustomerID=Orders.CustomerID ORDER BY Customers.CompanyName DESC , Orders.OrderDate DESC;
Crearea interogrilor - 3
identificatori constau din nume ale obiectelor bazei de date (tabele, cmpuri, vederi etc) aceste nume sunt introduse de utilizator sau de sistemul de operare; iruri de caractere orice ir de caractere care nu este un identificator sau un cuvnt rezervat; operatori simboluri care indic operaiile ce urmeaz a fi efectuate asupra expresiilor; sunt utilizai n instruciuni ca: DELETE, INSERT, SELECT sau UPDATE; cuvinte rezervate au o semnificaie special pentru interpretorul SQL; exemple: SELECT, GRANT, DELETE sau CREATE.
ordinea clauzelor ntr-o comand SELECT nu poate fi schimbat; doar prezena clauzelor SELECT i FROM este obligatorie.
Crearea interogrilor - 4
Clauze:
- specific numele tabelelor din care vor fi extrase datele; - filtreaz nregistrrile; - filtreaz grupurile dup o condiie; - specific numele cmpurilor incluse n tabelul final;
dup cuvntul SELECT trebuie specificate numele cmpurilor care trebuie s apar n tabelul rezultat numele cmpurilor trebuie separate de caracterul , caracterul * determin includerea tuturor cmpurilor n tabelul rezultat dac tabelele menionate n clauza FROM au cmpuri cu nume identice atunci numele cmpurilor trebuie precedate de numele tabelelor ex: numeTabel.numeCamp numele unui tabel sau al unui cmp trebuie ncadrat ntre paranteze drepte dac conine spaii sau caractere speciale dup cuvntul SELECT pot fi precizate funcii sau formule aa dup cum sunt folosite numele cmpurilor numele cmpurilor din tabelul rezultat poate fi modificat cu cuvntul AS
Crearea interogrilor - 6
Interogri de selecie
Crearea interogrilor - 7
Interogri de selecie
Exemplu: afiarea tuturor coloanelor tabelului Masini.
SELECT ID_Masina, Marca, Nr_inmatriculare, Culoare FROM Masini;
Interogri de selecie
Exemplu: afiarea numelor celor care au nchiriat cel puin o main
SELECT CC.NumeClient, CC.PrenumeClient FROM Clienti CC, Inchirieri IC WHERE CC.ID_client = IC.ID_client; SELECT DISTINCT CC.NumeClient, CC.PrenumeClient FROM Clienti CC, Inchirieri IC WHERE CC.ID_client = IC.ID_client
Crearea interogrilor - 9
Interogri de selecie
Exemplu: afiarea numelor clienilor care locuiesc n judeul Cluj sau Alba.
SELECT cc.NumeClient, cc.PrenumeClient FROM Clienti cc WHERE cc.JudetClient = 'Cluj' OR cc.JudetClient = 'Alba';
Codul generat de Access SELECT DISTINCT Clienti.NumeClient, Clienti.PrenumeClient FROM Clienti WHERE (((Clienti.JudetClient)='Cluj' Or (Clienti.JudetClient)='alba'));
Crearea interogrilor - 10
Interogri de selecie
Exemplu: afiarea codului celor care au nchiriat o main de culoare rosie sau verde.
SELECT ci.ID_client FROM Inchirieri ci, Masini cm WHERE ci.ID_masina = cm.ID_masina AND (cm.Culoare = 'rosu' OR cm.Culoare = 'verde');
Crearea interogrilor - 11
Interogri de selecie
Exemplu: afiarea numelor celor care au nchiriat o main de culoare rosie sau verde.
SELECT ci.ID_client FROM Inchirieri ci, Masini cm WHERE ci.ID_masina = cm.ID_masina AND cm.Culoare = 'rosu'; UNION SELECT ci.ID_client FROM Inchirieri ci, Masini cm WHERE ci.ID_masina = cm.ID_masina AND cm.Culoare = 'verde';
Crearea interogrilor - 12
Interogri de selecie
Exemplu: afiarea culorilor primelor cinci maini nchiriate.
SELECT cm.Culoare FROM Inchirieri AS ci, Masini AS cm WHERE ci.ID_masina = cm.ID_masina AND ci.ID <= 5;
SELECT ci.ID, cm.Culoare FROM Inchirieri AS ci, Masini AS cm WHERE ci.ID_masina = cm.ID_masina AND ci.ID <= 5 ORDER BY ci.ID;
Crearea interogrilor - 13
Interogri de selecie
Exemplu: afiarea numelor celor care au nchiriat o main de culoare rosie i verde.
SELECT DISTINCT ci.ID_client FROM Inchirieri AS ci, Masini AS cm WHERE ci.ID_masina=cm.ID_masina AND (cm.Culoare='rosu' And cm.Culoare='verde'); SELECT DISTINCT CLI.NumeClient, CLI.PrenumeClient FROM Inchirieri ci1, Masini cm1, Inchirieri ci2, Masini cm2, Clienti CLI WHERE ci1.ID_client = ci2.ID_client AND ci1.ID_masina = cm1.ID_masina AND ci2.ID_masina = cm2.ID_masina AND (cm1.Culoare = 'rosu' AND cm2.Culoare= 'verde') AND ci1.ID_client = CLI.ID_client;
Crearea interogrilor - 14
automatizeaz procesul de modificare a criteriilor de selecie ale unei interogri; sunt implementate prin comanda PARAMETERS:
declar numele i tipul fiecrui parametru utilizat ntr-o interogare cu parametru; este opional dar atunci cnd este utilizat precede orice alt comand.
numele parametrilor pot fi folosii n clauze WHERE sau HAVING; dac numele parametrilor conin spaii sau semne de punctuaie atunci trebuie ncadrate ntre [ ].
Exemplu: Afiarea identificatorilor clienilor care au nchiriat o main de o anumit culoare (rosu) dup o anumit dat (18-apr-07).
PARAMETERS [Data inchirierii] DateTime, [Culoare masina] Text; SELECT DISTINCT INC.ID_client AS [identificator client], MAS.Nr_inmatriculare AS [Numar masina] FROM Masini AS MAS, Inchirieri AS INC WHERE INC.ID_masina=MAS.ID_masina AND INC.Data_inchirierii>[Data inchirierii] AND MAS.Culoare=[Culoare masina];
Crearea interogrilor - 15
Interogri multi-tabel
Rolul interogrilor multi-tabel este s ofere informaii pe baza datelor existente n dou sau mai multe tabele. Interogrile multi-tabel se materializeaz n unirea nregistrrilor tabelelor implicate. Modul de unire a tabelelor este determinat de natura legturilor dintre tabele. Dac ntre tabele exist relaii de tip unu-muli atunci cmpul comun determin modul de unire al tabelelor. Tabelele sunt unite n acest caz printr-o legtur intern. Dac ntre tabele nu sunt definite relaii atunci MS Access folosete cmpuri din cele dou tabele care sunt compatibile ca tip de date. Unul dintre aceste cmpuri trebuie s fie o cheie. Dac tabelele nu conin cmpuri compatibile atunci trebuie create tabele suplimentare pentru a defini legtura dintre tabelele de interes. Tabelele sunt unite n acest caz printr-o legtur extern.
Crearea interogrilor - 16
tabel1, tabel2 - sunt numele tabelelor ale cror nregistrri vor fi unite; camp1, camp2 - numele cmpurilor care vor stabili modul de unire a tabelelor; dac nu sunt cmpuri numerice atunci cmpurile trebuie s aib acelai tip, dar nu trebuie s aib i acelai nume; operator - orice operator relaional: "=," "<," ">," "<=," ">=," or "<>". SELECT campuri FROM tabel1 INNER JOIN (tabel2 INNER JOIN [( ] tabel3 [INNER JOIN [( ] tabelx [INNER JOIN ...)] ON tabel3.camp3 operator tabelx.campx)] ON tabel2.camp2 operator tabel3.camp3) ON tabel1.camp1 operator tabel2.camp2;
SELECT campuri FROM tabel1 INNER JOIN tabel2 ON tabel1.camp1 operator tabel2.camp1 AND ON tabel1.camp2 operator tabel2.camp2 OR ON tabel1.camp3 operator tabel2.camp3;
Crearea interogrilor - 19
SELECT * FROM Masini INNER JOIN Inchirieri ON (Masini.ID_masina = Inchirieri.ID_masina) AND ((Masini.ID_masina = Inchirieri.ID_client) OR (Inchirieri.ID = 13));
SELECT * FROM Masini INNER JOIN (Inchirieri INNER JOIN Clienti ON Clienti.ID_client = Inchirieri.ID_client) ON Masini.ID_masina=Inchirieri.ID_masina;
Crearea interogrilor - 20
Crearea interogrilor - 21
Crearea interogrilor - 22
Crearea interogrilor - 23
Crearea interogrilor - 24
Funcia Avg
Scop:
Sintaxa:
Avg(expr)
expr este o expresie ir care indic: cmpul ce conine datele numerice sau o expresie care efectueaz operaii cu datele din acel cmp. operanzii din expr pot fi: nume de cmpuri, constante sau funcii (dar nu alte funcii aggregate).
Crearea interogrilor - 25
Scop:
Sintaxa:
Count(expr) expr este o expresie ir care indic: cmpul ce conine datele care trebuie numrate sau o expresie care efectueaz operaii cu datele din acel cmp. operanzii din expr pot fi: nume de cmpuri sau funcii (dar nu alte funcii aggregate). nu consider articole ale cror cmpuri au valoarea Null, cu excepia cazurilor n care expr este indicat prin caracterul (*).
Crearea interogrilor - 26
Scop:
returneaz valoarea unui cmp din primul/ultimul articol al setului generat de o interogare SQL
Sintaxa:
First(expr) respectiv Last(expr) expr este o expresie ir care indic: cmpul ce conine datele care trebuie numrate sau o expresie care efectueaz operaii cu datele din acel cmp. operanzii din expr pot fi: numele unui cmp, o constant sau o funcie (dar nu alte funcii aggregate).
Crearea interogrilor - 27
Scop:
returneaz minimul sau maximul setului de valori din cmpul precizat n interogarea SQL
Sintaxa:
Min(expr) respectiv Max(expr) expr este o expresie ir care indic: cmpul ce conine datele care trebuie numrate sau o expresie care efectueaz operaii cu datele din acel cmp. operanzii din expr pot fi: numele unui cmp, o constant sau o funcie (dar nu alte funcii aggregate).
Crearea interogrilor - 28
Scop:
Sintaxa:
Sum(expr) expr este o expresie ir care indic: cmpul ce conine datele care trebuie numrate sau o expresie care efectueaz operaii cu datele din acel cmp. operanzii din expr pot fi: numele unui cmp, o constant sau o funcie (dar nu alte funcii aggregate). ignor articolele care conin cmpuri cu valoarea Null.
Crearea interogrilor - 29
Scop:
returneaz abaterea medie ptratic respectiv variaia setului de valori din cmpul precizat n interogarea SQL
Sintaxa:
StDev(expr), StDevP(expr), Var(expr), VarP(expr) expr este o expresie ir care indic: cmpul ce conine datele care trebuie numrate sau o expresie care efectueaz operaii cu datele din acel cmp. operanzii din expr pot fi: numele unui cmp, o constant sau o funcie (dar nu alte funcii aggregate).
Crearea interogrilor - 30
Exemplu: afiarea totalului sumelor ncasate, a numrului de pli efectuate i a plii medii.
SELECT Sum(SumaPlatita) AS Total_sume_incasate, Count(SumaPlatita) AS Plati_efectuate, Total_sume_incasate/Plati_efectuate AS Plata_medie FROM Inchirieri;
Crearea interogrilor - 31
Exemplu: ce valori afieaz urmtoarea interogare? SELECT Sum(SumaPlatita * 4.1829)/ Count(SumaPlatita) AS [???] FROM Inchirieri;
Crearea interogrilor - 32
este o comand DML (data manipulation language); rolul ei este s combine datele pe baza valorilor din cmpurile tabelelor; este folosit cel mai des n combinaie cu funciile aggregate; sintaxa comenzii este: Group By NumeTabel.Camp1, NumeTabel.Camp2
Crearea interogrilor - 33
Crearea interogrilor - 34
Interogri crosstab
prezint datele unei interogri ntr-o form mai compact dect cea a unei interogri obinuite; calculeaz suma, media i alte totaluri asupra nregistrrilor unui tabel, iar apoi grupeaz datele obinute ntr-un tabel rezultat; sintaxa: TRANSFORM functie comanda_select PIVOT camp [IN (valoare1[, valoare2[, ...]])]
functie - funcie aggregate care opereaz asupra datelor selectate. comanda_select - comand SELECT. camp - cmpul sau expresia utilizat pentru a crea capul tabelului rezultat. valoare1, valoare2 - valori utilizate pentru a crea numele coloanelor tabelului rezultat.
comanda TRANSFORM este opional, dar atunci cnd este utilizat trebuie s precead comanda SELECT; comanda SELECT genereaz numele rndurilor din tabelul rezultat.
Crearea interogrilor - 35
Interogri crosstab
Exemplu: determinarea veniturilor generate de fiecare main i client.
TRANSFORM SUM(Inchirieri.SumaPlatita) SELECT Inchirieri.ID_masina FROM Inchirieri GROUP BY Inchirieri.ID_masina PIVOT Inchirieri.ID_client;
TRANSFORM SUM(Inchirieri.SumaPlatita) SELECT Inchirieri.ID_masina FROM Inchirieri GROUP BY Inchirieri.ID_masina PIVOT Inchirieri.ID_client IN (1,2,3,4,5);
Interogri nlnuite
Exemplu: afiarea datelor personale ale clienilor din judeul Cluj care au pltit pentru nchirierea mainilor sume mai mari de 300 RON.
SELECT * FROM Clienti AS CL WHERE CL.ID_client IN (SELECT INC.ID_client FROM Inchirieri AS INC WHERE INC.SumaPlatita > 300 AND INC.ID_client IN (SELECT CLI.ID_client FROM Clienti AS CLI WHERE (CLI.JudetClient = 'Cluj')));
SELECT * FROM Clienti CLI, Inchirieri INC WHERE CLI.ID_client=INC.ID_client AND INC.SumaPlatita > 300 AND CLI.JudetClient = 'Cluj'; SELECT * FROM Clienti INNER JOIN Inchirieri ON Clienti.ID_client=Inchirieri.ID_client AND (Clienti.JudetClient = 'Cluj' AND Inchirieri.SumaPlatita > 300);
Crearea interogrilor - 37
Interogri de aciune
Interogri de actualizare
UPDATE tabel SET valoare_nou WHERE criterii; tabel numele tabelului care conine datele care trebuie actualizate; valoare_nou o expresie care determin valoarea care se va nscrie n cmpurile actualizate; criterii o expresie care indic nregistrrile ce vor fi actualizate.
Sintaxa:
Exemplu:
Crearea interogrilor - 38
Interogri de aciune
Interogri de tip Make-Tabel
SELECT cmp1[, cmp2[, ...]] INTO tabel_nou [IN baze_externe] FROM surs; tabel_nou numele tabelului care va conine datele rezultat; cmp1, cmp2 datele incluse n tabelul rezultat al interogrii; surs tabelul sau interogarea din care sunt preluate datele implicate n interogare; baze_externe numele unei alte baze de date n care va fi generat noul tabel.
Sintaxa:
Exemplu: Salvarea ntr-un tabel nou a veniturilor aduse de fiecare autovehicul nchiriat precum i a sumelor totale achitate de fiecare client. SELECT Inchirieri.ID_masina, Inchirieri.ID_client, Sum(Inchirieri.SumaPlatita) AS [Venit tranzactie] INTO Venituri FROM Inchirieri GROUP BY Inchirieri.ID_masina, Inchirieri.ID_client;
Crearea interogrilor - 39
Interogri de aciune
Interogri de tip Make-Tabel
Ce se ntmpl dac schimbm ordinea criteriilor n lista clauzei GROUP BY? Ce se ntmpl dac eliminm un criteriu din lista clauzei GROUP BY? Afiai datele la care mainile au fost nchiriate prima dat.
Crearea interogrilor - 40
Interogri de aciune
Interogri de tip Make-Tabel
Crearea interogrilor - 41
Interogri de aciune
Interogri de adugare
INSERT INTO tabel_int [(camp1[, camp2[, ...]])] [IN baz_extern] SELECT [surs_date.]camp1[, camp2[, ...] FROM tabel_surs sau INSERT INTO tabel_int [(camp1[, camp2[, ...]])] VALUES (valoare1[, valoare2[, ...]) unde: tabel_int numele tabelului la care vor fi adugate nregistrrile; camp1, camp2 numele cmpurilor la care se vor aduga date; baz_extern calea pn la baza de date; surs_date numele cmpurilor din care se vor prelua datele; tabel_surs numele tabelului din care se vor prelua datele; valoare1, valoare2 valorile care se vor nscrie n noua nregistrare.
Sintaxa:
Exemplu:
INSERT INTO Studenti ( ID_student, NumeStudent, PrenumeStudent ) SELECT ID_client, NumeClient, PrenumeClient FROM Clienti WHERE (Clienti.JudetClient='Cluj');
Crearea interogrilor - 42