Sunteți pe pagina 1din 46

Interogarea bazelor de date

Interogarea bazelor de date..........................................................................................2


1.1
Selectarea coloanelor unei tabele.........................................................................2
1.2
Selectare liniilor unei tabele ce satisfac anumite criterii.....................................8
1.3
Crearea unui formular de interogare n modul Design View...............................9
1.4
Meniurile unei interogri...................................................................................14
1.4.1
Meniurile unei interogri in modul Design View......................................15
1.4.2
Meniurile unei interogri n modul Datasheet View..................................16
1.5
Sortarea i filtrarea liniilor tabelei rezultat........................................................17
1.6
Condiii compuse...............................................................................................18
1.7
Crearea de interogri cu parametri....................................................................23
1.8
Reuniunea tabelelor...........................................................................................26
1.9
Utilizarea funciilor de agregare SQL n interogri...........................................27
1.10 Reprezentarea datelor agregate..........................................................................33
1.11 Formatarea tabelei rezultat................................................................................43
1.12 Probleme propuse..............................................................................................44
1.13 Intrebri de control............................................................................................46

1 Interogarea bazelor de date


O interogare a bazei de date (Query) este o cerere ctre baza de date de a obine date ce
satisfac anumite criterii. Operaia de interogare produce o tabel cu datele cerute, care se
va numi n continuare tabel rezultat. Instruciunea SQL cu care se interogheaz baza de
date este SELECT. In Access se creaz un formular grafic corespunztor instruciunii
SELECT cu o aplicaie vrjitor. O interogare este un obiect al bazei de date. Obiectele de
acest tip se vor numi Select Query. Un asemenea obiect poate fi examinat n dou vederi:
Design View, care este fereastra de proiectare,
Datsheet View care afiaz tabela rezultat.
Rezultatul unei interogri este o tabel cu date.
Menionm c exist i alte tipuri de interogri cu care se modific tabelele bazei de date.
Aceste tipuri de interogri vor fi prezentate ntr-o lucrare ulterioar.

1.1 Selectarea coloanelor unei tabele


Cea mai simpl interogare a unei baze de date este selectarea unor coloane dintr-o tabel.
Acest interogare corespunde instruciunii SELECT urmtoare
SELECT nume_coloana_1, nume_coloana_2, , nume_coloana_k
FROM nume_tabela;
unde nume_coloana_i este numele unei coloane din tabel. Cnd selectm coloane din
mai multe tabele, forma general a numelor coloanelor unei tabele este
nume_tabela.nume_coloana
deoarece numele coloanelor din diverse tabele pot coincide. Atributul nume_coloana al
obiectului nume_tabela este accesat cu operatorul punct.
Dac vrem s selectm toate coloanele tabelei, instruciunea SELECT are forma
SELECT *
FROM nume_tabela;
In exemplele urmtoare vom utiliza tabela PROIECT_ANGAJAT de mai jos. Tabela
conine angajaii ce lucreaz la diverse proiecte ale unei intreprinderi, cu salariul orar,
SAL_ORA i numrul de ore prestate la proiect, ORE. Cheia primar a tabelei este
format din cmpurile ID_PRJ i ID_ANG. Cmpurile NUME_ANGAJAT i DPT_ANG
sunt de tip text, celelalte de tip numeric.
PROIECT_ANGAJAT
ID_PRJ

ID_ANG

NUME_ANGAJAT

DPT_ANG

SAL_ORA

ORE

Proiectarea tabelei este cea din Figura 1.

Figura 1. Proiectarea tabelei PROIECT_ANGAJAT.

Tabela cu date este cea din Figura 2.

Figura 2. Tabela cu date PROIECT_ANGAJAT.

In intreprindere exist trei departamente, Informatica, Support, Documentare. Numele lor


se va introduce cu o caset combinat (Combo Box).
Vom exemplifica crearea unui formular corespunztor unei instruciuni SELECT pentru
selectarea cmpurilor ID_ANG, NUME_ANGAJAT, DPT_ANG i SAL_ORA.
Formularul corespunztor instruciuni SELECT de mai sus se creaz astfel:
1. se afiaz fereastra Database din Figura 3, n care se selecteaz n partea stng
opiunea Queries,
2. clic pe opiunea Create query by using wizard din partea dreapt i se afiaz caseta
aplicaiei Simple QueryWizard din Figura 4; se poate selecta aceeai opiune dintr-o
caset afiat cu clic pe meniul Insert Query, sau cu clic pe butonul New al barei
de instrumente a ferestrei Database,

Figura 3. Fereastra Database cu opiunea Queries selectat.

Figura 4. Pasul I. Selectarea coloanelor ce vor fi afiate.

3. la pasul I se selecteaz coloanele ce vor aprea n interogare. Caseta cu list Tables /


Queries conine toate tabelele bazei de date; se selecteaz tabela dorit din lista
Tables / Queries i n lista Available Field se afiaz coloanele tabelei, ca n Figura
4

5. Se mut n lista Selected Fields coloanele ce vor aprea n formular; mutarea se


face cu butoanele

. Butonul

mut toate cmpurile. Butoane


i
Rezultatul pasului I este artat n Figura 5,

mut cmpul selectat, butonul


transfer cmpurile n sens invers.

Figura 5. Pasul I. Coloanele selectate ce vor fi afiate.

4. clic pe butonul Next care afiaz caseta din Figura 6,

Figura 6. Pasul II. Alegerea tipului interogrii.

5. la pasul II se alege tipul interogrii Detail (shows every field of every record); cu
aceast opiune se afiaz fiecare cmp din fiecare linie a tabelei; clic pe butonul Next
ce afiaz caseta din Figura 7,

Figura 7. Pasul III. Alegerea titlului interogrii.

6. la pasul III se alege titlul interogrii; se poate trece la execuia cererii prin selectarea
opiunii Open the query to view information, sau se poate modifica proiectarea ei
prin selectarea opiunii Modify the query design. Pentru execuia interogrii clic pe
butonul Finish i se afiaz tabela rezultat din Figura 8.

Figura 8. Rezultatul interogrii unei tabele.

Aplicaia Access genereaz o instruciune SELECT pe baza formularului proiectat.


Aceast instruciune se poate afia cu clic pe opiunea SQL View a unuia din meniurile
contextuale ale formularului sau a meniului View din Tabelul 1 i Tabelul 3. Instruciunea
SQL pentru interogarea proiectat este artat n Figura 9.
7

Figura 9. Instruciunea SELECT corespunztoare formularului proiectat anterior.

1.2 Selectare liniilor unei tabele ce satisfac anumite criterii


Selectarea coloanelor liniilor unei tabele ce satisfac anumite criterii se face cu
instruciunea SELECT cu clauza WHERE care conine criteriile de selecie. Instruciunea
are forma
SELECT nume_coloana_1, nume_coloana_2, , nume_coloana_k
FROM nume_tabela
WHERE conditie
ORDER BY nume_coloana_1 [ASC | DESC] [, nume_coloana_2 [ASC | DESC] ];
Condiia din clauza WHERE este o expresie boolean ce are ca argumente
nume_coloana_1, nume_coloana_2, , nume_coloana_k. O linie a tabelei este selectat
cnd condiia din clauza WHERE are valoarea adevrat.
Dac vrem s selectm toate coloanele liniilor unei tabele ce ndeplinesc o condiie,
nstruciunea SELECT are forma
SELECT *
FROM nume_tabela
WHERE conditie
ORDER BY nume_coloana_1 [ASC | DESC] [, nume_coloana_2 [ASC | DESC] ];
Access permite s crem formulare grafice corespunztoare acestei instruciuni.
Elementele acestor formulare sunt traduse de Access ntr-o instruciune SELECT care
este executat pentru a obine tabela rezultat.
Reamintim c forma general a nume_coloana este
nume_tabela.nume_coloana
Atributul nume_coloana al obiectului nume_tabela este accesat cu operatorul punct.
Aceast form general se utilizeaz atunci cnd selectm coloane din mai multe tabele,
dup cum se va vedea n capitolele urmtoare, deoarece anumite coloane din diverse
tabele pot avea aceleai nume i doar forma general a nume_coloana le poate distinge.
Access permite ca nume_tabela i nume_coloana s conin i spaii, n acest caz ele sunt
incluse ntre paranteze drepte, [ i ] i forma general a nume_coloana este
[nume_tabela].[nume_coloana]
In cazul instruciunii SELECT, cnd se selecteaz date dintr-o singur tabel, n numele
coloanei se poate omite numele tabelei.

1.3 Crearea unui formular de interogare n modul Design View


Fie din nou tabela PROIECT_ANGAJAT repetat mai jos
PROIECT_ANGAJAT
ID_PRJ

ID_ANG

NUME_ANGAJAT

DPT_ANG

SAL_ORA

ORE

Vom exemplifica crearea unui formular corespunznd instruciunii


SELECT ID_ANG, NUME_ANGAJAT, DPT_ANG, SAL_ORA
FROM PROIECT_ANGAJAT
WHERE NUME_DEPARTAMENT = Informatica;
Crearea formularului corespunztor acestei instruciuni SELECT se face n urmtorii
pai:
1. se afiaz fereastra Database; n partea stng, se selecteaz opiunea Queries; n
partea dreapt se afiaz opiunile existente, Create query by using wizard i Create
query in Design view i interogrile (Queries) existente, vezi Figura 10,

Figura 10. Fereastra Database cu opiunea Queries selectat.

2. clic pe opiunea Create query in Design View care afiaz caseta Show Table din
Figura 11 i fereastra de proiectare a unei interogri din Figura 12. Cele dou ferestre
se pot afia i n alte feluri
cu clic pe butonul Design din bara de instrumente a casetei Database,
un clic pe butonul New al barei de instrumente a casetei Database sau cu clic pe
meniul Insert Query afiaz caseta de dialog New Query din Figura 13; un

clic pe opiunea Design View afiaz caseta Show Table din Figura 11 i fereastra
de proiectare din Figura 12,
butonul Show Table,
, i comanda Query Show Table afiaz caseta Show
Table din Figura 11, cu tabelele bazei de date utilizate n interogare.

Figura 11. Caseta Show Table.

Figura 12. Fereastra de proiectare a unei interogri.

10

Figura 13. Caseta de dialog New Query.

3. seciunea Tables a casetei Show Tables din Figura 11 afiaz toate tabelele din baza
de date; se selecteaz tabela dorit, n cazul nostru tabela PROIECT_ANGAJAT; clic
pe butonul Add i apoi pe butonul Close; n acest moment tabela se afiaz n partea
de sus a formularului Select Query ca n Figura 14, sub forma unei casete tip list cu
coloanele tabelei. Primul element din list este *; el corespunde selectrii tuturor
coloanelor tabelei. In partea de jos se introduc clauzele corespunztoare instruciunii
SELECT: coloanele ce vor fi selectate n linia Field, numele tabelei din clauza FROM
n linia Table, condiiile de selectare din clauza WHERE n liniile Criteria i or i
ordonarea liniilor selectate din clauza ORDER BY n linia Sort.

Figura 14. Formularul Select Query.

Pentru a introduce clauzele ce vor interveni n interogare se procedeaz astfel:

11

1. se completeaz celulele liniei Field cu numele coloanelor tabelei ce trebuie selectate


(clauza SELECT); pentru a completa o celul a liniei Field cu numele unei coloane
din tabel (un atribut), se poate proceda n dou feluri:
clic pe o celul a liniei Field din Figura 14 (ea va fi o coloan din tabela rezultat),
i se afiaz o list cu coloanele tabelei ca n Figura 15; clic pe coloana dorit,
(elementul din list); dac am selectat mai multe tabele, lista conine coloanele
tuturor tabelelor selectate, sub forma nume_tabela.nume_coloana; primul element
din lista coloanelor unei tabele are forma nume_tabela*, n cazul nostru
PROIECT_ANGAJAT*; dac vrem s selectm toate coloanele tabelei respective,
clic pe acest element;
un alt mod de a completa o celul a liniei Field cu o coloan a tabelei este de a
selecta coloana dorit din caseta cu numele tabelei afiat deasupra formularului,
n cazul nostru PROIECT_ANGAJAT; se trage coloana selectat cu butonul stng
al mousului apsat deasupra unei celule a liniei Field,

Figura 15. Completarea cmpurilor, tabelei, criteriilor i ordonrii datelor.

2. linia Table din formular se completeaz automat cu numele tabelei,


3. pentru a introduce modul de sortare al liniilor (clauza ORDER BY), clic pe celula
corespunztoare a liniei Sort; se afiaz lista din Figura 16, din care se alege opiunea
dorit,

12

Figura 16. Alegerea modului de sortare a liniilor tabelei rezultat.

4. n linia Show se marcheaz coloanele ce vor fi vizibile, ca n Figura 17,


5. n linia Criteria se introduc condiiile de selectare pentru fiecare coloan din clauza
WHERE; pentru fiecare coloan putem avea o condiie compus, format din dou
condiii legate prin operatorul or; n acest caz prima condiie se introduce pe linia
Criteria, a doua pe linia or; dup cum se va vedea mai jos, condiiile se pot introduce
direct sau se pot crea cu aplicaia Expression Builder,
6. se completeaz toate coloanele dorite i se obine formularul din Figura 17.

Figura 17. Formularul completat a unei interogri.

Pentru a salva formularul creat se utilizeaz opiunile Save i Save As ale meniului File
sau clic pe butonul de nchidere a ferestrei formularului.
Pentru a terge o coloan din interogare se selecteaz coloana i clic pe meniul Edit
Delete sau se apas tasta Delete.
Butonul Run,
, al barei de instrumente sau comanda Query Run produc execuia
cererii.
Pentru exemplul de mai sus tabela rezultat este cea din Figura 18.

13

Figura 18. Tabela rezultat a cererii din Figura 17.

In partea de jos a tabelei rezultat exist un cursor pentru navigare printre liniile selectate.
Instruciunea SELECT generat de Access din formularul proiectat se poate afia cu clic
pe opiunea SQL View a unuia din meniurile contextuale ale formularului sau a meniului
View din Tabelul 1 i Tabelul 3 sau cu clic pe opiunea SQL View din lista View, vezi
Figura 20.

Figura 19. Instruciunea SELECT generat din formular.

1.4 Meniurile unei interogri


Orice formular de interogare poate fi afiat n dou moduri (n dou vederi):
modul Proiectare (Design View),
modul Formular (Datasheet View) n care se poate examina tabela rezultat.
Fiecrei vederi i corespund meniuri, bare de instrumente i meniuri contextuale diferite.
Comutarea ntre cele dou vederi se poate face n multe moduri. Un clic pe butonul View
din stnga barei de meniu afiaz lista View din Figura 20 cu opiunile de comutare a
vederilor.

Figura 20. Lista View cu opiunile de comutare a vederilor.

14

1.4.1 Meniurile unei interogri in modul Design View


Meniul View i meniul contextual al formularului n vederea Design sunt artate n
Tabelul 1. Opiunile lor permit comutarea ntre cele dou vederi, Design i Datasheet.
Alte opiuni ale acestor meniuri vor fi prezentate ulterior.

a)meniul View

b) meniul contextual al formularului

Tabelul 1. Meniurile formularului n modul Design View.

Bara de meniuri i barele de instrumente n vederea Design sunt artate n Figura 21.

Figura 21. Barele de meniuri i de instrumente Design View.

Meniul Query are opiuni pentru crearea formularului de proiectare dorit. Butonul Query
Type,
, al barei de meniu n vederea Design, afiaz lista Query Type cu aceste
opiuni, vezi Figura 22.

15

a) meniul Query

b) lista Query Type

Figura 22. Meniul Query i lista Query Type cu opiunile de creare a unui formular de interogare.

Semnificaia acestor opiuni este cea din Tabelul 2.


Opiune

Instruciunea SQL
SELECT
SELECT
CREATE TABLE
UPDATE
INSERT
DELETE

Tabelul 2. Opiunile de creare a unui formular de interogare.

Exerciiu. Se va deschide prima interogare, proiectat cu aplicaia vrjitor, n modul


Design i se va compara formularul generat de vrjitor cu cel proiectat pentru a doua
interogare.
Se vor compara apoi cele dou instruciuni SELECT generate de Access n cazul celor
dou interogri.

1.4.2 Meniurile unei interogri n modul Datasheet View


Barele de meniuri i de instrumente ale vederii Datasheet sunt artate n Figura 23.

Figura 23. Barele de meniuri i de instrumente Datasheet View.

Meniul View i meniul contextual al formularului n vederea Datasheet sunt artate n


Tabelul 3. Opiunile Design View, Datasheet View i SQL View ale acestor meniuri

16

permit trecerea n modul Proiectare (Design), Formular (Datasheet), respectiv afiaz


instruciunea SQL generat de Access pe baza formularului de proiectare. Alte opiuni
permit sortarea datelor tabelei rezultat.

a) meniul View

b) meniul contextual al formularului

Tabelul 3. Meniurile formularului n modul Datasheet View.

Pentru a afia tabela rezultat se procedeaz n unul din urmtoarele moduri


se trece n modul Datasheet View cu clic pe opiunea Datasheet View din unul din
meniurile afiate n Tabelul 1, vezi i Figura 20,
se trece n vederea Design i clic pe butonul Run,
meniul Query Run.

al barei de instrumente sau pe

1.5 Sortarea i filtrarea liniilor tabelei rezultat


Este posibil sortarea i filtrarea liniilor tabelei rezultat aa cum s-a artat ntr-o lucrare
anterioar. Pentru aceasta tabela se afiaz n modul Datasheet View.
Sortarea liniilor tabelei rezultat se face astfel:
1. se selecteaz o coloan dup care se va face sortarea,
2. sortarea liniilor dup elementele coloanei selectate cresctor / descresctor se
realizeaz cu butoanele Sort Ascending,
, i Sort Descending,
, ale barei de
instrumente sau opiunile Sort Ascending i Sort Descending ale meniului Records
Sort.
Liniile tabelei se pot filtra, pentru a afia doar acele linii ce satisfac un criteriu.
Filtrarea prin selectarea valorilor se face astfel:
1. se gsete ntr-o coloan o instan a valorii ce trebuie s apar n rezultatul filtrrii,
2. se selecteaz toat celula sau se plaseaz cursorul la nceputul celulei,
3. clic pe butonul

al barei de instrumente.

17

Pentru a indeprta filtrul creat clic pe butonul


al barei de instrumente.
Pentru a selecta linii ce ncep cu acelai caracter, se selecteaz acest prim caracter ntr-o
celul i se procedeaz ca mai sus.
Pentru a selecta liniile ce conin un ir de caractere, se selecteaz acest subir ntr-o celul
i se procedeaz ca mai sus.
Ca exemplu, pentru a sorta cmpul ID_ANG al tabelei rezultat a interogrii precedente n
ordine descresctoare se selecteaz o celul cu clic i clic pe butonul
cel din Figura 24.

. Rezultatul este

Figura 24. Tabela rezultat a cererii din Figura 17 cu cmpul ID_ANG sortat n ordine descrectoare.

1.6 Condiii compuse


In urmtorul exemplu vom selecta angajaii de la departamentele Suport i Documentare
din tabela PROIECT_ANGAJAT cu instruciunea SELECT de mai jos.
SELECT ID_ANG, NUME_ANGAJAT, DPT_ANG, SAL_ORA
FROM PROIECT_ANGAJAT
WHERE DPT_ANG = Documentare OR DPT_ANG = Suport;
Condiia din clauza WHERE se completeaz n celulele DPT_ANG din liniile Criteria
i or. Formularul corespunztoare acestei interogri este cel din Figura 25.

18

Figura 25. Forma pentru selectarea angajailor departamentelor Documentare i Suport.

Instruciunea SELECT generat de Access din formularul creat mai sus este cea din
Figura 26

Figura 26. Instruciunea SELECT corespunztoare formei din Figura 25.

Tabela rezultat este cea din Figura 27.

Figura 27. Tabela rezultat pentru forma din Figura 25.

Clauza WHERE a instruciunii SELECT conine o condiie care este o expresie boolean.

19

Expresiile booleene sunt constituite din expresii relaionale separate de operatorii


booleeni AND, OR i NOT. In cazul cel mai simplu, o expresie boolean este constituit
dintr-o singur expresie relaional.
Expresiile relaionale sunt constituite din expresii aritmetice separate de operatorii
relaionali <, <=, >, >= , = i <> i operatorul Between And care testeaz dac o
valoare este cuprins ntr-un interval.
In unele cazuri avem nevoie s comparm un ir de caractere cu elementele unei coloane
care sunt iruri de caractere, ca n interogarea din Figura 25. Sirurile de caractere sunt
scrise ntre ghilimele. O operaie ce se poate efectua asupra irurilor este concatenarea.
Operatorul de concatenare este &. Pentru a testa dac un ir de caractere corespunde unui
ablon se utilizeaz operatorul LIKE, vezi o lucrare anterioar.
Expresiile aritmetice au ca termeni numere, atributul numeric respectiv (coloana
numeric din tabel) i operatorii aritmetici +, -, * i / pentru numere reale i +, -, \ i
Mod pentru numere ntregi. Prioritile operatorilor sunt cele cunoscute. Termenii
expresiilor aritmetice pot fi grupai n paranteze rotunde.
Exemplu. S testm dac atributul SAL_ORA al tabelei PROIECT_ANGAJAT din
exemplele anterioare este cuprins ntre valorile 40 i 60. Condiia se poate scrie n mai
multe feluri:
>= 40 AND <= 60
>=30+10 AND <= 60
>=(30+10) AND <= 60
BETWEEN 40 AND 60
NOT < 40 AND NOT > 60
In a doua expresie am folosit expresia 30+10 n loc de 40 pentru a sublinia c n
expresiile relaionale putem utiliza expresii aritmetice orict de complicate. In expresia a
treia am utilizat paranteze rotunde. Ultima condiie este artat n Figura 28.
Expresia boolean ce reprezint condiia din clauza WHERE se poate scrie direct n
cmpurile Criteria i or sau se poate crea cu aplicaia Expression Builder, ca ntr-o
lucrare anterioar. Implicit, n fereastra de proiectare din Figura 28 exist o singur linie
or. Se pot aduga mai multe linii or cu un clic pe linia or existent i apoi clic pe meniul
Insert Rows. Liniile or se pot terge cu un clic pe linie i apoi clic pe meniul Edit
Delete Rows.

20

Figura 28. Exemplu de condiie compus.

Uneori este dificil de a scrie condiia, deoarece spaiul din celul este prea mic. Se poate
afia o fereastr n care s se introduc expresia cu clic pe celul, apoi se apas tastele
Shift + F2 i se afiaz fereastra din Figura 29.

Figura 29. Afiarea unei ferestre pentru introducerea unei expresii.

Pentru a lansa aplicaia Expression Builder se procedeaz astfel:


1. se afiaz meniul contextual al coloanei formularului din Figura 30, cu un clic cu
butonul drept pe coloana pentru care vrem s crem condiia;
2. clic pe opiunea Build ce afiaz caseta Expression Builder din Figura 31, vezi i o
lucrare anterioar, cu care se creaz expresia dorit.

21

Figura 30. Meniu contextual al unei coloane a formularului.

O alt posibilitate de a lansa aplicaia Expression Builder este cu clic pe butonul Build,
, al barei de instrumente, vezi Figura 21.
In partea din stnga jos a casetei Expression Builder sunt afiate pe lng funcii,
constante, operatori i tabelele, formularele i alte obiecte din baza de date, ale cror
elemente se pot utiliza n expresii.

Figura 31. Caseta Expression Builder.

Opiunea Table Names din meniul din Figura 30 afiaz sau ascunde linia Table din
formular ce afiaz numele tabelelor.
22

1.7 Crearea de interogri cu parametri


Dup cum s-a vzut mai sus, linia Criteria este utilizat pentru introducerea de condiii
pentru selectarea liniilor tabelelor. Este posibil de a introduce parametri n criteriul de
selectare a liniilor, de exemplu elementele unei coloane s fie cuprinse ntre dou valori.
Putem crea interogri ce afiaz casete de dialog pentru introducerea parametrilor
interogrii. Acest lucru se face prin introducerea condiiei n cmpul Criteria, iar
parametri sunt nlocuii cu mesaje scrise ntre paranteze drepte, [ i ]. La efectuarea
interogrii, Access afiaz casete de dialog cu mesajele ce au fost introduse ntre
parantezele drepte.
Vom exemplifica acest lucru prin crearea unei interogri a tabelei PROIECT_ANGAJAT
n care vrem s selectm angajaii cu salarii orare ntre dou limite, care s fie parametrii
interogrii, pe care i vom introduce n casete de dialog afiate de Access. Definiia
tabelei PROIECT_ANGAJAT este repetat mai jos.
PROIECT_ANGAJAT
ID_PRJ

ID_ANG

NUME_ANGAJAT

DPT_ANG

SAL_ORA

ORE

1. crem un formular de interogare cu aplicaia Create Query by using Wizard, n care


selectm cmpurile ID_ANG, NUME_ANGAJAT, DPT_ANG i SAL_ORA,
2. deschidem fromularul creat n vederea Query Design, ca n Figura 32,
3. n cmpul Criteria al coloanei COST_ORA introducem condiia
Between [cost minim ora] And [cost maxim ora], ca n Figura 32.

Figura 32. Exemplu de condiie cu parametri.

La executarea interogrii se afiaz casetele de dialog din Tabelul 4

23

Tabelul 4. Mesaje pentru introducerea parametrilor.

Rezultatul interogrii este tabela din Figura 33.

Figura 33. Rezultatul interogrii cu parametri.

Putem controla ordinea n care sunt afiai parametrii n felul urmtor:


1. se afiaz caseta Query Parameters din Figura 34 cu clic pe meniul Query
Parameters,
2. n aceast caseta se introduce cte un mesaj pe rnd, n ordinea n care dorim s fie
afiate; textul trebuie s fie exact cel din fereastra de proiectare. In coloana din
dreapta se introduce tipul parametrului, din caseta de dialog afiat cu clic pe celula
respectiv.

Figura 34. Caseta Query Parameters.

24

Ca un alt exemplu, vom selecta toi angajaii din tabela PROIECT_ANGAJAT al cror
nume conine un anumit ir de caractere. Procedura este urmtoarea:
1. crem un formular de interogare cu aplicaia Create Query by using Wizard, n care
selectm cmpul NUME_ANGAJAT,
2. deschidem fromularul creat n vederea Query Design i introducem condiia ca n
Figura 35.
Condiia pentru testarea unui ir de caractere are forma
LIKE expresie regulat
Dup cum s-a artat ntr-o lucrare anterioar, n cazul nostru expresia regulat are forma
*sir*. Acest ablon se construiete ca * & sir & *, unde sir este irul de caractere
ce va fi introdus ntr-o caset de dialog. Pentru acesta condiia va fi scris
LIKE * & [Litere in nume] & *
vezi Figura 35. Reamintim c operatorul & concateneaz iruri de caractere.

Figura 35. Exemplu de condiie cu parametri.

La execuie se va afia o caset de dialog cu mesajul Litere in nume, n care vom


introduce irul de caractere dorit.
Presupunem c vrem s selectm angajaii ale cror nume conin irul esc. La execuia
interogrii se afiaz caseta de dialog din Figura 36.

25

Figura 36. Caseta de mesaj pentru introducerea parametrului.

Rezultatul interogrii este tabela din Figura 37.

Figura 37. Rezultatul interogrii cu parametri.

1.8 Reuniunea tabelelor


Una dintre operaiile ce se pot aplica asupra tabelelor rezultat este reuniunea acestor
tabele. Pentru reuniune, liniile tabelelor trebuie s aibe aceleai coloane. Reuniunea
tabelelor se face cu instruciunea SQL UNION cu forma
SELECT coloane
FROM nume_tabela_1
UNION
SELECT coloane
FROM nume_tabela_2;
Pentru exemplificare, vom considera tabela SITUATIE_FINANCIARA de mai jos, ce
conine datele financiare pe anii trecui ale unei intreprinderi
SITUATIE_FINANCIARA
AN

VENITURI

CHELTUIELI PROFIT_BRUT

IMPOZIT

PROFIT_NET

i tabela DATE_CONTABILE cu datele financiare pe anul curent


DATE_CONTABILE

26

AN

VENITURI

CHELTUIELI PROFIT_BRUT

IMPOZIT

PROFIT_NET

Vom crea o tabel ce reunete liniile celor dou tabele n felul urmtor:
1. se afiaz fereastra Database; n partea stng, se selecteaz opiunea Queries; n
partea dreapt se afiaz opiunile existente, Create query by using wizard i Create
query in Design view i interogrile (Queries) existente,
2. clic pe opiunea Create query in Design View care afiaz caseta Show Table; clic pe
butonul Close,
3. clic pe meniul Query SQL Specific, i n submeniul afiat, clic pe opiunea
Union, vezi Figura 38,

Figura 38. Meniul Query. Opiunea Union.

4. se afiaz caseta de text din Figura 39, n care se introduce instruciunea UNION din
Figura 39,

Figura 39. Instruciunea UNION.

5. clic pe butonul Run,

, al barei de instrumente i se obine tabela rezultat.

1.9 Utilizarea funciilor de agregare SQL n interogri


Instruciunea SELECT poate utiliza cteva funcii standard SQL pentru a face suma
valorilor unei coloane, calculul valorii medii, minime sau maxime a unei coloane, etc.
Aceste funcii sunt cele din Tabelul 5.

27

Funcia
AVG
MIN
MAX
SUM
VAR
STD

Semnificaia
Valoarea medie
Valoarea minim
Valoarea maxim
Suma valorilor din coloan
Dispersia
Abaterea medie ptratic

Tabelul 5. Funcii SQL pentru agregarea datelor n instruciunea SELECT.

Cea mai simpl interogare a unei baze de date cu utilizarea acestor funcii este aplicarea
lor asupra unor coloane dintr-o tabel. Acest interogare corespunde instruciunii
SELECT urmtoare
SELECT funcie(nume_coloana_1), funcie(nume_coloana_2), ,
funcie(nume_coloana_k)
FROM nume_tabela;
In acest caz nu s-a precizat numele coloanelor din tabela rezultat a interogrii, i aplicaia
atribuie acestor coloane nite nume standard. Instruciunea SELECT are i o form n
care putem atribui coloanelor tabelei rezultat ce nume dorim. Aceast form este
SELECT funcie(nume_coloana_1) AS nume_1, funcie(nume_coloana_2) AS nume_2,
, funcie(nume_coloana_k) AS nume_k
FROM nume_tabela;
Vom exemplifica utilizarea acestor funcii la tabela VANZARI, proiectat n Figura 40.
Tabela cu date este cea din Figura 41.

Figura 40. Proiectarea tabelei VANZARI.

28

Figura 41. Tabela VANZARI.

Vom calcula suma vnzrilor pe fiecare an. Procedura este urmtoarea:


1. se afiaz fereastra de proiectare a interogrii din Figura 42, dup cum s-a artat mai
nainte,

Figura 42. Fereastra de proiectarea interogrii.

2. se selecteaz prima celul din linia Fields cu un clic,


3. clic pe butonul Build,
, al barei de instrumente, care lanseaz aplicaia
Expression Builder din Figura 43; se selecteaz n fereastra stng opiunea
Functions Built-In Functions, n fereastra din mijloc se selecteaz SQL
Aggregate, iar n fereastra din dreapta funcia Sum; clic pe butonul Paste i n
fereastra superioar apare expresia Sum(expr) pentru care trebuie s completm
argumentul expr,

29

Figura 43. Fereastra aplicaiei Expression Builder.

4. selectm argumentul expr al funciei Sum cu un clic, ca n Figura 44,

Figura 44. Selectarea argumentului unei expresii.

5. selectm apoi tabela VANZARI n fereastra din stnga cu clic pe opiunea Tables
VANZARI; n acest moment n fereastra din mijloc apar cmpurile tabelei; clic pe
cmpul VANZARI_2001 i se genereaz expresia din fereastra superioar din Figura
45; numele coloanei este introdus ca [nume_tabela].[nume_coloana], adic
[VANZARI]![VANZARI_2001],

30

Figura 45. Expresia pentru nsumarea unei coloane.

6. se repet paii de mai sus i pentru celelalte coloane; linia Field este cea din Figura
46,

Figura 46. Fereastra de proiectare.

Expresia din prima celul a liniei Field este cea din Figura 47. Numele coloanei atribuit
de aplicaia Expression Builder este Expr1.

31

Figura 47. Expresia primei coloane a interogrii.

7. clic pe butonul Run ,


48.

, al barei de instrumente i tabela rezultat este cea din Figura

Figura 48. Tabela rezulatat a interogrii.

Dup cum se observ, coloanele tabelei rezultat au numele Expr1, , Expr4, atribuite de
aplicaia Expression Builder. Acest caz corespunde primei forme a instruciunii SELECT
prezentate n acest paragraf
SELECT funcie(nume_coloana_1), funcie(nume_coloana_2), ,
funcie(nume_coloana_k)
FROM nume_tabela;
Modificm Expr1 n celula liniei Field n AN 2001, ca n Figura 49 i la fel numele
celorlalte coloane pentru a fi mai semnificative. Tabela rezultat este cea din Figura 50.

Figura 49. Modificarea numelui coloanei tabelei rezultat.

Figura 50. Tabela rezultat a interogrii.

Acest caz corespunde celei dea doua forme a instruciunii SELECT


32

SELECT funcie(nume_coloana_1) AS nume_1, funcie(nume_coloana_2) AS nume_2,


, funcie(nume_coloana_k) AS nume_k
FROM nume_tabela;
In final, instruciunea SELECT este cea din Figura 51.

Figura 51. Instruciunea SELECT a interogrii.

1.10 Reprezentarea datelor agregate


Este posibil s afim rezultatul unei interogri sub forma unei matrice, ce are ca
elemente valorile agregate ale unui cmp, grupate funcie de alte cmpuri. Interogarea de
acest tip se numete Crosstab Query.
Fie tabela CHELTUIELI cu cheltuielile unei intreprinderi pe categorii i trimestre a crei
proiectare este cea din Figura 52 iar datele din tabel sunt cele din Figura 53.

Figura 52. Proiectarea tabelei CHELTUIELI.

Introducerea datelor din cmpul CATEGORIE se va face cu o caseta combinat (Combo


Box).

33

Figura 53. Tabela CHELTUIELI.

Vrem s afim cheltuielile sumarizate, pe categorii i pe trimestre ca n tabela de mai jos


TRIMESTRU
I
II
III
IV

Materiale
x
x
x
x

Piese
x
x
x
x

Utilaje
x
x
x
x

Categoriile de cheltuieli vor fi afiate pe coloane, trimestrele pe linii i suma cheltuielilor


pe tipuri de cheltuieli i pe trimestre n celulele tabelei.
Vom crea aceast interogare cu aplicaie vrjitor.
1. se afiaz fereastra Database; n partea stng, se selecteaz opiunea Queries,
2. clic pe butonul New al barei de instrumente care afiaz caseta New Query din Figura
54; se selecteaz opiunea Crosstab Query Wizard, care lanseaz aplicaia vrjitor,

34

Figura 54. Caseta New Query.

3. la pasul I al aplicaiei vrjitor se afiaz tabelele i interogrile din baza de date i se


aleg cele din care se va crea interogarea dorit; n cazul nostru selectm tabela
CHELTUIELI, vezi Figura 55; clic pe butonul Next,

Figura 55. Pasul I. Se aleg tabelele i interogrile din care se vor selecta cmpurile interogrii.

4. la pasul II al se afiaz cmpurile disponibile i se aleg maxim trei ale cror valori vor
constitui antetele liniilor. In cazul nostru alegem cmpul TRIMESTRU, vezi Figura
56; clic pe butonul Next,

35

Figura 56. Pasul II. Se aleg cmpurile ale cror valori vor constitui antetele liniilor.

5. la pasul III se afiaz cmpurile disponibile i se aleg cele ale cror valori vor
constitui antetele coloanelor. In cazul nostru alegem cmpul CATEGORIE, vezi
Figura 57; clic pe butonul Next,

36

Figura 57. Pasul III. Se aleg cmpurile ale cror valori vor constitui antetele coloanelor.

6. la pasul IV se afiaz cmpurile disponibile i se aleg cele ale cror valori vor fi
afiate la intersecia liniilor i coloanelor. Asupra valorilor acestor cmpuri se va
aplica o funcie de sumarizare din cele afiate n lista Function. In cazul nostru se
alege cmpul VALOARE i funcia de sumarizare Sum, vezi Figura 58. Este posibil
de a sumariza n plus rezultatele fiecrei linii ntr-un cmp separat. Pentru aceasta se
va marca butonul Yes, include row sums; clic pe butonul Next,

37

Figura 58. Pasul IV. Se aleg cmpurile ale cror valori vor fi afiate la intersecia liniilor i coloanelor.

7. la pasul V se alege numele interogrii create, vezi Figura 59. Clic pe butonul Finish i
se afiaz tabela rezultat din Figura 60.
Menionm c tabela rezultat conine i un cmp Total Of VALOARE ce sumarizeaz
valorile liniilor. Acest cmp apare deoarece la pasul IV am marcat butonul Yes, include
row sums.

38

Figura 59. Pasul V. Se alege numele interogrii create.

Figura 60. Interogarea tabelei CHELTUIELI.

Aplicaia vrjitor genereaz formularul de interogare din Figura 61.

39

Figura 61. Formularul de interogare generat de aplicaia vrjitor.

Vom crea acum o interogare tip Crosstab a aceleiai tabele CHELTUIELI n care
categoriile de cheltuieli vor fi afiate pe linii, trimestrele pe coloane i suma cheltuielilor
pe tipuri de cheltuieli i pe trimestre n celulele tabelei, ca mai jos.
CATEGORIE
Materiale
Piese
Utililaje

I
x
x
x

II
x
x
x

III
x
x
x

IV
x
x
x

In consecin, valorile cmpului CATEGORIE vor fi antetele liniilor, valorile cmpului


TRIMESTRU vor fi antetele coloanelor, iar valorile cmpului VALOARE vor fi
sumarizate n coloanele matricei.
Ca exerciiu vom crea o interogare de tip Crosstab proiectnd un formular n felul
urmtor:
1. se creaz o interogare n care se selecteaz tabela CHELTUIELI,
2. clic pe meniul Query Crosstab Query vezi Figura 38; se afiaz fereastra de
proiectare Crosstab Query din Figura 62,

40

Figura 62. Fereastra de proiectare Crosstab Query.

In fiecare celul a liniei Field se poate afia caseta cu cmpurile tabelei, din care se alege
cmpul dorit, ce va fi afiat pe linii, pe coloane sau sumarizat n celulele tabelei.
In fiecare celul a liniei Crosstab se poate afia caseta Crosstab din Figura 63b, n care se
alege tipul cmpurilor. Cmpurile ale cror valori vor fi antetele liniilor vor avea tipul
Row Heading, cele ale cror valori vor fi antetele coloanelor vor avea tipul Column
Heading. Cmpurile ce vor fi sumarizate vor avea tipul Value.
In fiecare celul a liniei Total se poate afia caseta Total din Figura 63a, n care se alege
funcia cmpului, de grupare a datelor, de sumarizare, etc. Pentru cmpurile de tip Row
Heading i Column Heading se va alege Group By. Pentru cmpurile sumarizate se va
alege funcia de agregare dorit, Sum Avg, etc.

a) caseta Total

b) caseta Crosstab

Figura 63. Casetele Total i Crosstab.

3. vom afia cmpul CATEGORIE pe linii, cmpul TRIMESTRU pe coloane i n


celulele tabelei suma cmpurilor VALOARE; proiectarea interogrii este cea din
Figura 64,
41

Figura 64. Proiectarea interogrii.

4. clic pe butonul Run, i se obine tabela din Figura 65.

Figura 65. Tabela rezultat a interogrii.

In al doilea exemplu, afim cmpul TRIMESTRU pe linie i cmpul CATEGORIE pe


coloane. Proiectarea interogrii este artat n Figura 66. Se va compara acest formular cu
cel generat mai nainte de aplicaia vrjitor.

42

Figura 66. Proiectarea interogrii

Tabela rezultat din interogare este cea din Figura 67.

Figura 67. Tabela rezultat a interogrii.

Se va compara aceast tabel cu cea generat mai nainte cu aplicaia vrjitor.

1.11 Formatarea tabelei rezultat


Tabela rezultat a interogrii se formateaz n acelai fel cu tabelele bazei de date. Pentru
formatare se utilizeaz opiunile meniului Format din Figura 68. Opiunile meniului
Format afiaz aceleai casete de dialog ca i n cazul tabelor bazei de date.

43

Figura 68. Meniul Format al unei interogri.

1.12 Probleme propuse


In tabelele de mai jos, atributele ce constituie cheia primar a tabelei sunt subliniate.
1. Fie tabela PROIECTE_ANGAJATI de mai jos. Coloanele ID_PRJ, ID_ANG,
SAL_ORA i ORE sunt de tip numeric, celelalte de tip text.
PROIECTE_ANGAJATI
ID_PRJ
100
100
100
200
200
300
300
300
400

ID_ANG
1290
1293
1045
1192
1351
1348
1284
1067
1095

NUME_ANG
Popescu
Ionescu
Georgescu
Vasilescu
Filipescu
Popa
Nicolae
Marinescu
Gheorghe

DPT_ANG
Informatica
Support
Documentare
Informatica
Support
Informatica
Support
Documentare
Informatica

SAL_ORA
60
40
25
60
40
60
40
25
60

ORE
10
8
12
20
15
20
14
12
15

Se va proiecta tabela PROIECTE_ANGAJATI. Se vor defini condiiile ORE >= 0,


SAL_ORA>=20, ID_PRJ, 100 <= ID_PRJ <= 999, 1000 <= ID_ANG <= 9999. Se vor
defini mti pentru introducerea cmpurilor ID_PRJ i ID_ANG. Numele
departamentelor se vor introduce cu o caset combinat (Combo Box).
Se vor defini formulare de interogare pentru urmtoarele cereri:
s se selecteze toi angajaii intreprinderii,
s se selecteze toi cu angajaii cu salariul orar mai mic sau egal cu 35 lei,
s se selecteze toi cu angajaii cu salariul orar mai mare sau egal de 38 lei,
s se selecteze toi angajaii din departamentul Informatica ce au lucrat cel puin 15
ore,
s se selecteze toi angajaii ce au lucrat un numr de ore cuprinse ntre dou limite ce
vor fi parametri,

44

s se selecteze toi angajaii al cror nume ncepe cu o liter ce va fi parametru.


La fiecare punct se va scrie instruciunea SELECT corespunztoare cererii. Se vor crea
formulare de afiare a tabelelor rezultat. Codiiile din clauza WHERE se vor crea direct i
cu aplicaia Expression Builder.
2. Fie tabela ANGAJATI de mai jos. Coloanele ID i SALARIU sunt de tip numeric,
celelalte coloane sunt de tip text.
ANGAJATI
ID
100
200
136
260
420
302
325
400

NUME
Popescu
Ionescu
Vasilescu
Georgescu
Nicolae
Gheorghe
Vasile
Popa

PRENUME
Ioan
Vasile
George
Nicolae
Dan
Dan
Nicolae
George

FACULTATE
Matematica
Electrotehnica
Calculatoare
Istorie
Calculatoare
Mecanica
Fizica
Chimie

SALARIU
1100
1700
1490
820
1600
1420
1360
1650

Se va proiecta tabela ANGAJATI. Se vor defini condiiile de validare ID >= 100,


SALARIU >= 600.
Se vor crea formulare de interogare pentru urmtoarele cereri:
s se selecteze toi angajaii intreprinderii,
s se selecteze facultile absolvite,
s se selecteze angajaii cu salarii mai mari ca 1500,
s se selecteze angajaii cu salarii mai mici sau egale cu 1500,
s se selecteze angajaii ce au absolvit facultile Electrotehnica, Mecanica,
Calculatoare,
s se selecteze angajaii ce au absolvit alte faculti dect Electrotehnica, Mecanica i
Calculatoare.
3. Fie tabela SITUATIE_FINANCIARA de mai jos cu datele contabile ale unei
interprinderi. Toate coloanele sunt de tip numeric.
SITUATIE_FINANCIARA
AN
2001
2002
2003
2004
2005
2006

VENITURI
420
470
550
620
705
690

CHELTUIELI
370
410
500
548
590
620

45

Fie tabela DATE_CONTABILE de mai jos cu datele contabile ale aceeai intreprinderi
pe urmtorii trei ani.
DATE_CONTABILE
AN
2007
2008
2009

VENITURI
712
722
695

CHELTUIELI
670
690
690

S se creeze o interogare care s calculeze reuniunea celor dou tabele. Se vor proiecta
cele dou tabele i se vor defini condiiile de validare VENITURI > 0, CHELTUIELI > 0.
4. Fie tabela FACTURA_TELEFONICA de mai jos.
NUME

PRENUME

NUMAR_TELEFON

VALOARE

LUNA

Cmpurile NUME, PRENUME i NUMAR_TELEFON sunt de tip text. Cmpurile


VALOARE i LUNA sunt numerice. Se va proiecta tabela FACTURA_TELEFONICA.
Se vor defini regulile de validare VALOARE > 0, LUNA cuprins ntre 1 i 12, cmpurile
NUME i PRENUME nenule. In cmpul NUMAR_TELEFON numerele ncep cu
prefixul 0251. Se vor introduce reguli de validare i mesaje de eroare pentru fiecare
cmp. Se va crea o masc pentru numerele de telefon de forma
(0000) 000-000
s se selecteze toate facturile telefonice cuprinse ntre dou luni ce vor fi parametri.

1.13 Intrebri de control


1. Care este forma instruciunii SELECT pentru selectarea unor coloane dintr-o tabel?
2. Care este forma instruciunii SELECT pentru selectarea unor linii dintr-o tabel ce
satisfac anumite criterii?
3. Cum se creaz o interogare cu parametri?
4. Cum se face sortarea liniilor tabelei rezultat?
5. Care este forma instruciunii UNION i la ce se utilizeaz?

46

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