Sunteți pe pagina 1din 4

Limbajul SQL SQL (Structured Query Language) este un limbaj (ce cunoate mai multe variante) de interogare a bazelor

de date relaionale. SELECT formeaz baza oricrei interogri SQL. Sintaxa enunului SELECT este ntotdeauna aceeai. Un enun SELECT este format din mai multe cuvinte cheie numite clauze. SELECT se definete utiliznd diverse configuraii ale acestor clauze n scopul obinerii informaiei necesare. Unele clauze sunt obligatorii altele opionale. n plus, fiecare clauz este format din unul sau mai multe cuvinte cheie utilizate la extragerea ca ntreg a informaiei cerute prin enunul SELECT. Diagrama unui enun SELECT i a eventualelor clauze este prezentat n figura de mai jos: SELECT <nume_coloan> FROM <nume_tabel> WHERE <condiie_cutare> GROUP BY <coloan_grupare> HAVING <caracteristic_grup>

SELECT clauza primar a enunului SELECT i este obligatorie. Se utilizeaz pentru a specifica numele cmpurilor ce vor fi afiate n rezultatul interogrii. Cmpurile vor fi extrase din tabelele specificate n clauza FROM. Se pot utiliza de asemenea funcii agregat (de ex. Sum(Ore_lucrate)) sau expresii matematice ( de exemplu Cantitate*Pret). FROM clauza secundar de asemenea obligatorie. FROM se utilizeaz pentru a specifica tabelele din care vor fi extrase cmpurile specificate n clauza SELECT. WHERE Clauz opional utilizat n filtrarea nregistrrilor returnate de clauza FROM. WHERE este precedat de o expresie numit <condiie_cutare>. Atunci cnd condiia de cutare conine un singur predicat, aceste dou noiuni sunt sinonime Predicatul poate conine operatori de comparaie sau operatori booleeni. SQL definete o list de 18 predicate. Cteva exemple: Operator Comparaie BETWEEN Explicaie Conine unul din cei ase operatori de comparaie =, <> (diferit), >, <, <=, >= (de ex. SELECT *FROM student Where media>9.2) Testeaz dac valoarea unei expresii se gsete ntr-un interval dat de valori (de ex. SELECT *FROM student Where media BETWEEN 8 AND 9) Testeaz dac valoarea unei expresii coincide cu un element dintr-o list de valori (de ex. SELECT *FROM student WHERE adresa IN (Suceava, Falticeni, Botosani)) Testeaz dac valoarea parial unui ir de caractere coincide cu un ablon definit de utilizator (de ex. SELECT *FROM student WHERE nume LIKE C*) Determin dac o expresie este nul (adic valoarea ei este necunoscut sau lipsete: SELECT *FROM student WHERE nume IS NULL) Verific dac o anumit nregistrare exist n rezultatele returnate de o subinterogare.

IN

LIKE

IS NULL

EXISTS

Observaie: Se pot combina dou sau mai multe condiii folosind operatorii logici OR i AND. Crearea unui nou cmp calculat pe baza cmpurilor din tabelele implicate n interogare se realizeaz prin astfel: <formula_de_calcul> AS <nume_camp_nou> Exemplu: Ci studeni exist n baza de date? SELECT COUNT(*) AS numar_studenti FROM student

Poate aprea necesitatea ordonrii rezultatelor obinute. Ordonarea se realizeaz utiliznd clauza ORDER BY ASC/DESC. Exemplu: Ordonai cresctor studenii din tabela student n funcie de nume. SELECT *FROM student ORDER BY nume ASC GROUP BY Atunci cnd se utilizeaz funcii agregate n clauza SELECT se utilizeaz de obicei i clauza GROUP BY pentru a separa informaia n grupuri distincte. Exemplu: Care sunt studenii, pe specializri, cu media mai mare de 8.5 SELECT student.nume, student.prenume, student.specializarea, student.media_bac FROM student GROUP BY student.nume, student.prenume, student.specializarea, student.media_bac HAVING (((student.media_bac)>8.5)); HAVING opereaz la nivel de grupuri ce au fost create n prealabil cu clauza GROUP BY. Where acioneaz asupra cmpurilor ce ndeplinesc condiia specificat n timp ce HAVING acioneaz asupra grupurilor. Observaie: Pentru a scrie i lansa n execuie o interogare SQL trebuie parcuri urmtorii pai: 1. Din fereastra principal Access se alege Query apoi Create query in Design View 2. Nu se selecteaz nicio tabel din fereastra Show Table i se apas butonul Close 3. Din bara de meniuri se alege meniul Query, opiunea SQL specific apoi Data Definition. Se va afia o fereastr n care se va introduce interogarea SQL care se va lansa n execuie cu butonul Run (!)

Se consider tabelele cu structura descris mai jos:

1. O tabel se poate crea prin comanda SQL CREATE TABLE. De exemplu, pentru crearea tabelei Facturi, se introduce comanda: CREATE TABLE facturi(Nr_fact number, codc number, dataf date) 2. Pentru a introduce date ntr-o tabel se utilizeaz comanda SQL INSERT. De exemplu, pentru a popula cu date tabela creat mai sus, se scrie comanda: INSERT INTO Facturi(Nr_fact, Codc, Dataf) VALUES (1000, 11, 01/12/2007). Am presupus c exist un client cu codul 11. Instruciunea SQL de introducere a unei nregistrri n tabela studenti este: INSERT INTO student(nr_marca, nume, prenume, data_n, specializarea, media_bac, bursa) VALUES (5, "popovici","andrei", 14/09/2008, "mng", 7, 300) Se cere: a) b) c) 1. Creai tabela facturi utiliznd comanda SQL descris Introducei date n tabela Facturi Realizai urmtoarele interogri: Clienii a cror denumire ncepe cu litera a

SELECT FROM clienti WHERE denc LIKE a* 2. Clienii n a cror denumire apare litera s SELECT FROM clienti WHERE denc LIKE s* 3. Ci clieni are magazinul (se va folosi funcia COUNT)? SELECT COUNT(*) AS Nr_clienti FROM clienti 4. Vnzarea cu cea mai mare valoare pentru produsul x SELECT produse.codp, produse.denp, Max([cant]*[pret]) AS valoare FROM produse, vanzari WHERE (((produse.codp)=[vanzari].[codp])) GROUP BY produse.codp, produse.denp HAVING (((produse.denp)="caiet")) 5. Vnzarea cu cea mai mare valoare pentru toate produsele. SELECT produse.codp, produse.denp, cant*pret AS valoare FROM produse, vanzari WHERE (((produse.codp)=vanzari.codp)) and (cant*pret)=(select max(cant*pret) from vanzari);

6. Valoarea total a vnzrilor pentru produsul pine SELECT produse.codp, produse.denp, Sum([cant]*[pret]) AS valoare FROM produse, vanzari WHERE (((produse.codp)=[vanzari].[codp])) GROUP BY produse.codp, produse.denp HAVING (((produse.denp)="cuie")); 7. Totalul vnzrilor pe fiecare client SELECT clienti.codc, Sum([cant]*[pret]) AS Valoare FROM clienti, vanzari WHERE clienti.codc = vanzari.codc GROUP BY clienti.codc; 8. Totalul vanzarilor pe fiecare produs SELECT produse.codp, Sum([Cant]*[Pret]) AS Valoare FROM produse, vanzari WHERE produse.codp = vanzari.codp GROUP BY produse.codp 9. Ce produse sunt pe factura clientului cu codul 11 eliberat in data de 01/01/2007? 10. Care este situaia facturilor pe clieni i pe zile? 11. Care sunt zilele n care s-au ntocmit cel puin 2 facturi? 12. Ce produse s-au vndut n valoare de peste 1000 lei? 13. Care sunt firmele din Botosani, Suceava sau Flticeni?

S-ar putea să vă placă și