Sunteți pe pagina 1din 13

Unitatea de nvare

Aplicaii Access realizate cu ajutorul limbajului SQL

Cuprins

1. Aplicaii Access realizate cu limbajul SQL .1 2 Teste de autoevaluare ..11 3 Rspunsurile testelor de autoevaluare ..12 4 Bibliografie/webografie..12

Obiective:

n acest modul sunt prezentate aplicaii realizate n Access cu ajutorul limbajului SQL.

Competene:

Dobndirea abiliti referitoare la folosirea limbajului SQL pentru utilizarea i modificarea bazelor de date relaionale.

1. Aplicaii Access realizate cu limbajul SQL


n aceast unitate de nvare vom folosi limbajul SQL pentru a modifica i utiliza bazele de date. Pentru aprofundarea acestui subiect se recomand lucrrile [1-5,8,9]. Aplicaiile se refer la o baz de date simpl format dintr-un singur tabel. Se presupune tabelul cu angajaii unei companii din figura 5.1. n acest tabel sunt urmtoarele elemente: cheia primar PersonalID (numeric) generat n mod automat, Nume familie (text), Nume propriu(text), Data angajrii (dat), Revizuire care introduce data modificrii nregistrrii (dat), Salariul anual (numeric) , Sex genul persoanei respective (text).

Fig. 5.1. Tabelul Personal cu angajaii unei companii. 1

Aplicaiile urmtoare au ca scop prezentarea limbajului SQL aplicat la exploatarea acestui tabel. Fr ndoial odat nvat acest limbaj este mult mai flexibili dect instrumentele predefinite existente n MS Access. Vom crea mai multe interogri [5,10,11], descrise n aplicaiile 1-7. A1. Scopul aplicaiei: selectarea personalului din tabelul creat anterior Personal figura 5.1 i aranjarea personalului dup data angajrii. Folosim instruciunea SELECT. Putem s ne imaginm instruciunea SELECT ca o fraz n care avem mai multe propoziii (clauze). Pe primul rnd (prima propoziie clauza SELECT) sunt introduse cmpurile din tabel alese din tabelul Personal; asteriscul (*) indic faptul c alegem toate elementele din tabel. A doua propoziie (clauza FROM) indic tabelul din care se extrag informaii. Ultima propoziie (clauza) ORDER BY impune ca noul tabel format prin aceast interogare s fie ordonat dup Data angajrii. Fraza (instruciunea) SELECT se ncheie cu (;). SELECT * FROM Personal ORDER BY Personal.[Data angajarii]; Vom descrie n continuare paii care se parcurg pentru obinerea acestei interogri. La restul aplicaiilor paii P1-P7 sunt identici astfel nct prezentarea va fi scurtat. Se modific doar codul instruciunii introdus la pasul 4. P1.Suntem n meniul Creare i alegem opiunea de Proiectare interogare figura 5.2,a. P2. Apare tabelul care ne ajut s crem aceast interogare n modul simplificat disponibil n MS Access 2010. nchidem aceast fereastr, figura 5.2,b deoarece intenionm s folosim limbajul SQL. P3. Dm clic dreapta pe numele implicit al interogrii Interogare1 figura 5.2,c i alegem afiarea sub forma SQL figura 5.2,d. Iniial n vizualizarea SQL instruciunea are un cuvnt cheie SELECT urmat de (;) figura 5.2,e. P4. Adugm codul instruciunii, indicat mai sus, figura 5.2,f (1). P5. Executm interogarea figura 5.2,f (2). Observm rezultatul ordonat dup coloana cu data angajrii, figura 5.2,g. P6. Dm clic dreapta pe numele implicit al interogrii Interogare1 figura 5.2,c i alegem Salvare figura 5.2,h. Indicm un nume pentru interogarea creat (Selectie data anagajarii) folosind limbajul SQL figura 5.2,i.

P7. nchidem interogarea figura 5.2,j. Interogarea este acum n structura bazei de date figura 5.2,k i poate fi executat prin dublu clic.

j k Fig. 5.2. Realizarea unei interogri cu limbajul SQL.

A2.Scopul aplicaiei: selectarea personalului angajat dup 01.01.2005 i aranjarea personalului dup data angajrii. Folosim instruciunea SELECT. Pe primul rnd (prima propoziie clauza SELECT) sunt introduse cmpurile din tabel alese din tabelul Personal: PersoanaID, Nume familie, Nume propriu. De remarcat utilizarea parantezelor drepte pentru numele care sunt alctuite din mai multe cuvinte. A doua propoziie (clauza FROM) indic tabelul din care se extrag informaii. A treia propoziie WHERE impune o condiie ca data angajrii s fie mai mare dect 01.01.2005. De remarcat utilizarea (#) pentru marcarea datei. Ultima propoziie ORDER BY impune ca noul tabel format prin aceast interogare s fie ordonat dup Data angajrii. Fraza (instruciunea) SELECT se ncheie cu (;). SELECT Personal.PersoanaID, Personal.[Nume familie], Personal.[Nume propriu] FROM Personal WHERE Personal.[Data angajarii] ># 01/01/2005# ORDER BY Personal.[Data angajarii];

Fig. 5.3 Efectul aplicrii instruciunii SELECT din aplicaia A2. A3.Scopul aplicaiei: crearea unei coloane noi format din angajai cu salariul mai mare ca 20000 i cu data angajrii dup 01.01.2005. Folosim din nou instruciunea SELECT. Pe primul rnd coloanele Nume familie i Nume propriu (separate printr-un spaiu) sunt grupate ntr-o singur coloan numit Angajati Salariu mai mare decat 20000 prin folosirea cuvntului cheie AS. A doua propoziie (clauza FROM) indic tabelul din care se extrag informaii. A treia propoziie WHERE impune dou condiii: salariul anual s fie mai mare ca 20000 i ca data angajrii s fie mai mare dect 01.01.2005. Ultima propoziie ORDER BY impune ca noul tabel format prin aceast interogare s fie ordonat dup Data angajrii. SELECT ([Nume familie] & ' ' & [Nume propriu]) AS [Angajati Salariu mai mare decat 20000] FROM Personal WHERE ([Salariu anual] > 20000 AND [Data angajarii] > #01/01/2000#) ORDER BY Personal.[Nume familie]; Efectul aplicrii acestei interogri se vede n figura 5.4. Sunt cinci persoane care au fost angajate dup 2005, ordonate dup numele de familie.

Fig. 5.4. Efectul aplicrii instruciunii SELECT din aplicaia A3.

A4.Scopul aplicaiei: crearea unei coloane cu o formul de adresare. Folosim instruciunea SELECT. Pe primul rnd se gsete instruciunea IIF (dac); aceast instruciune alege textul D-na. dac coloana Sex are textul F, iar dac aceast condiie nu este ndeplinit se utilizeaz textul Dl. iar n continuare Nume familie, grupate ntr-o singur coloan numit Adresare prin folosirea cuvntului cheie AS. A doua propoziie (clauza FROM) indic tabelul din care se extrag informaii. Ultima propoziie ORDER BY impune ca noul tabel format prin aceast interogare s fie ordonat dup Sex i apoi dup Salariul anual. SELECT IIF(Sex='F', 'D-na. ', 'Dl. ') & [Nume familie] AS Adresare FROM Personal ORDER BY Sex, [Salariu anual];

a b Fig. 5.5. Efectul aplicrii instruciunii SELECT din aplicaia A4. Rezultatul const ntr-o coloan Adresare figura 5.5,a n care sunt introduse persoanele din tabelul Personal numite cu D-na sau Dl. n funcie de sex, ordonate dup sex (mai nti femeile) i apoi dup salariul anual. Pentru a putea vedea modul de selecie n figura 5.5,b a fost dat i tabelul Personal. A5.Scopul aplicaiei: utilizarea predicatului TOP (de asemenea se pot aplica TOP PERCENT, DISTINCT, DISTINCTROW) .

Folosim instruciunea SELECT. Pe primul rnd n clauza SELECT se gsete predicatul TOP. Acest predicat face o ordonare a nregistrrilor i returneaz un numr de nregistrri (n cazul nostru dou TOP 2), cu coloanele indicate n SELECT:[Nume familie], [Nume propriu], Sex, [Salariu anual]. A doua propoziie (clauza FROM) indic tabelul din care se extrag informaii. Ultima propoziie ORDER BY impune ca noul tabel format prin aceast interogare s fie ordonat dup Salariul anual n ordine descresctoare.

Fig. 5.6. Efectul utilizrii predicatului TOP n instruciunea SELECT din aplicaia A5. SELECT TOP 2 [Nume familie], [Nume propriu], Sex, [Salariu anual] FROM Personal ORDER BY [Salariu anual] DESC; Rezultatul se vede n figura 5.6,a. Se returneaz un numr de nregistrri n cazul nostru dou, cu coloanele indicate n SELECT, din tabelul Personal ntr-o ordine descresctoare. Dac modificm ultima propoziie se returneaz un numr de dou nregistrri, ntr-o ordine cresctoare figura 5.6,b : SELECT TOP 2 [Nume familie], [Nume propriu], Sex, [Salariu anual]

FROM Personal ORDER BY [Salariu anual]; Dac modificm numrul de rnduri din predicatul TOP, se returneaz un numr de trei nregistrri, ntr-o ordine cresctoare figura 5.6,c : SELECT TOP 3 [Nume familie], [Nume propriu], Sex, [Salariu anual] FROM Personal ORDER BY [Salariu anual];

Fig. 5.7. Efectul utilizrii predicatului DISTINCT n instruciunea SELECT din aplicaia A6. informaii. SELECT DISTINCT [Nume familie] FROM Personal;

A6.Scopul aplicaiei: utilizarea predicatului DISTINCT. Acest predicat selecteaz doar rndurile distincte. Utilitatea se poate vedea la un tabel la care avem (de exemplu) n nregistrrile pe o coloan mai multe firme care se repet. Dac dorim s vedem doar ce firme sunt, putem folosi acest predicat. Folosim instruciunea SELECT, pe primul rnd n clauza SELECT se gsete predicatul DISTINCT. Acest predicat alege rndurile cu numele de familie diferite. A doua propoziie (clauza FROM) indic tabelul din care se extrag

Rezultatul este o list de persoane n care numele nu sunt repetate, figura 5.7. Se vede c n tabelul din figura 5.1 sunt dou persoane cu numele d e familie Alexandrescu.

A7.Scopul aplicaiei: utilizarea funciilor de agregare exemplifica utilizare funciei de agregare valoarea medie AVG.

. Vom

Folosim instruciunea SELECT. Pe primul rnd n clauza SELECT se gsete funcia Avg. Aceast funcie face media valorilor de pe coloana Salariu

anual i salveaz rezultatul ntr-o coloan Salariu mediu. A doua propoziie (clauza FROM) indic tabelul din care se extrag informaii. SELECT Avg([Salariu anual]) AS [Salariu mediu]FROM Personal; Rezult un cmp cu salariul mediu figura 5.8. Se poate ca valoarea afiat implicit s fie cu un numr mare de zecimale. Pentru a controla modul de afiare alegem instruciunea format FORMAT ( valoarea pe care dorim s o afim, "#########.00") unde numrul de (#) indic spaiile rezervate pentru afiare iar numrul de (0) indic numrul de spaii de la partea zecimal: SELECT Format (Avg([Salariu anual]) , "#########.00")AS [Salariu mediu] FROM Personal; Dac folosim funcia SUM n locul funciei de medie AVG se va face suma valorilor din coloana Salariu anual sum care va fi descrcat n coloana Total salarii figura 5.9. SELECT Sum([Salariu anual]) AS [Total salarii] FROM Personal;

Fig. 5.8. Efectul utilizrii funciei AVG n instruciunea SELECT din aplicaia A7.

Fig. 5.9. Efectul utilizrii funciei SUM n instruciunea SELECT din aplicaia A7.

Rezult un cmp cu suma salariilor din firm, figura 5.9. Alte funcii de agregare sunt: Count(), First(), Last(), Min(), Max(), StDev(), StDevP, i Var(). Un exemplu de folosire a unei funcii de agregare (AVG) n cadrul unei clauze WHERE este dat n continuare. Folosim instruciunea SELECT. Pe primul rnd n clauza SELECT sunt indicate coloanele [Nume familie], [Nume propriu] i [Salariu anual] alese dintr-o nregistrare. Salariu anual
9

este redenumit [Salariu peste medie] pentru claritatea coninutului. A doua propoziie (clauza FROM) indic tabelul din care se extrag informaii. A treia clauz WHERE alege doar rndurile la care salariul anual este mai mare ca valoarea medie a salariilor din tabelul Personal. Salvm interogarea sub numele de Salariu peste medie, figura 5.10.

a b Fig. 5.10. Efectul utilizrii funciei AVG n clauza WHERE din aplicaia A7. SELECT [Nume familie], [Nume propriu], ([Salariu anual]) AS [Salariu peste medie] FROM Personal WHERE (([Salariu anual])) > (SELECT AVG([Salariu anual]) FROM [Personal]); Rezultatul const n patru nregistrri la care salariaii au salarii peste medie. Funcia de agregare Count se poate folosi ntr-o interogare pentru a calcula numrul de nregistrri. De exemplu putem numra cte persoane de sex feminin sunt: SELECT Count([Salariu anual]) AS [Numar persoane sex feminin] FROM Personal WHERE (Sex='F' ); A8.Scopul aplicaiei: adugarea de nregistrri la un tabel .

Folosim instruciunea INSERT Fig. 5.11. Efectul utilizrii funciei INTO care adaug o COUNT n clauza SELECT din aplicaia A7. nregistrare sau mai multe ntrun tabel. Pe primul rnd al instruciunii INSERT INTO se gsete numele tabelului i coloanele n care se produc modificri: [Nume familie],[Nume

10

propriu] ,[Data angajarii],[Salariu anual], Sex. n continuare valorile ce se adaug n tabelul Personal. INSERT INTO Personal ([Nume familie],[Nume propriu] ,[Data angajarii],[Salariu anual], Sex) VALUES ('Teodorescu','Maria', #11/01/2000#,50000,'F')

se indic

b Fig. 5.12. Instruciunea INSERT INTO. Deoarece se modific tabelul n prealabil apare un mesaj de avertizare figura 5.12,a. Rezultatul o nou nregistrare a fost adugat tabelului Personal, figura 5.12,b. Se recomand pentru exerciii suplimentare studiul lucrrilor [6,7,10-12] .

Explicaii suplimentare la clas

2 Teste de autoevaluare
1. ntr-o instruciune SELECT, clauza FROM : a. v permite s sortai rezultatele unei interogri ntr-o foaie de date;
11

b. specific tabelele sau interogrile care conin datele pe care clauza SELECT le va utiliza; c. specific nregistrrile regrupate ce trebuie afiate ntr-o instruciune SELECT dotata cu o clauza GROUP BY. 2. ntr-o instruciune SELECT, clauza Where se folosete : a. permite folosirea unor criterii de interogare cnd dorim s utilizm condiii pentru a limita numrul de nregistrri returnate ntr-o interogare; b. nu exist o astfel de clauz n instruciunea SELECT; c. listeaz cmpurile care conin datele pe care dorii s le utilizai. 3. ntr-o instruciune SELECT, funcia de agregare Count se folosete: a. determin media valorilor dintr-o coloan de tip numr; b. nu exist o astfel de funcie n varianta Access 2010 ea a fost nlocuit cu SUM; c. se poate folosi ntr-o interogare pentru a calcula numrul de nregistrri . 4. n limbajul SQL din Access exist: a. o clauz Select i o instruciune Select; b. numai instruciunea Select; c. numai clauza Select.

3 Rspunsurile testelor de autoevaluare


1-b, 2-a, 3-c, 4-a

4 Bibliografie/webografie

1. Constantinescu C. Baze de date. Universitatea din Craiova, 2007. 2. Doro I. Baze de date. Editura Cibernetic MC, Bucureti , 2010. 3. Fusaru D., Gherasim Z., Andronic, M. Bra A. Stroe, P. Aplicaii economice n Visual Basic i Acces, Ed. Fundaiei Romnia de mine, Bucureti, 2003. 4. Gavot M. Baze de date. Editura SNSPA - Facultatea de Comunicare i Relaii Publice: Bucureti, 2001. 5. Garsia Molina H., Ullman H., Wiondom J. Database Systems. The Complete Book. Pretience Hall, Upper Saddle Riner, 2002.

12

6. Georgescu C., Georgescu M. Baze de date relaionale i multidimensionale, Ed. did. i ped. RA, Bucureti, 2005. 7. Giulvezean C., Mircea G., Trnveanu D., Margea C. Baze de date, Ed. Univ. de Vest, Timioara 2009. 8. Lungu I. Baze de date Oracle, Limbajul SQL, Editura ASE, Bucureti , 2005. 9. Trandafir R. , Nistorescu M.S. Bazele informaticii i Limbaje de programare Baze de date relaionale, Univ. Tehnic de Construcii Bucureti, 2007. 10. Tudor N.L. Sisteme informatice i gestiunea bazelor de date Oracle, Editura Matrix Rom, Bucureti, 2011. 11. Tudor N.L. Sisteme informatice i gestiunea bazelor de date, Ed. Univ. din Ploieti, 2007. 12. ***. Office.microsoft.com- Ajutor i asisten. Microsoft Access 2010.

13

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