Sunteți pe pagina 1din 32

SGBD-ul MICROSOFT ACCESS

Obiecte de tip interogare


Interogarea unei baze de date nseamn regsirea i extragerea informaiilor stocate n
aceasta. Pentru realizarea interogrilor SGBD Access pune la dispoziia utilizatorilor obiectele
de tip cereri (Query). Rezultatul cererii se prezint sub forma unei foi de rspuns dinamic care
poart numele de DynaSet. Foaia de rspuns dinamic (DynaSet-ul) nu mai exist fizic dup
nchiderea cererii. O cerere poate avea drept surs de date unul sau mai multe tabele ale bazei de
date sau chiar o alt cerere creat anterior.
Interogrile reprezint un instrument esenial n lucrul cu orice sistem de gestiune a
bazelor de date. Ele sunt folosite pentru selectarea nregistrrilor, actualizarea tabelelor i
adugarea de noi nregistrri ntr-un tabel. Interogrile se folosesc cel mai frecvent pentru
selectarea anumitor grupuri de nregistrri care ndeplinesc anumite condiii. De asemenea ele
pot fi folosite pentru combinarea informaiilor din diferite tabele .
Interogrile se pot crea cu ajutorul rutinei Simple Query Wizard sau prin proiectare n
fereastra Query Design.
O cerere Access poate fi utilizat pentru:
-

regsirea i ordonarea datelor dup anumite criterii;

efectuarea de calcule;

actualizarea bazei de date (prin cereri de tip aciune);

pregtirea datelor n vederea afirii lor n formulare sau rapoarte;

Tipuri de interogri
Access permite crearea a patru tipuri de interogri:

Interogri de tip Select pentru extragerea datelor din unul sau mai multe tabele i de a

le afia n form tabelar. Interogrile de tip Select nu permit actualizarea datelor


selectate ci doar vizualizarea lor. De obicei acest tip de interogare constituie o surs
de date pentru un raport sau formular.
Interogri de tip Crosstab pentru sintetizarea datelor din unul sau mai multe tabele ca

foaie de calcul (asemntor cu foile de calcul Excel).


Interogri de tip Action pentru crearea unor noi tabele, sau pentru modificarea datelor
dintr-un tabel existent. Exist urmtoarele categorii de interogri de aciune:
Interogri de tip Make Table care permit crearea de noi tabele prin
extragerea informaiilor din tabelele existente n baza de date;

Interogri de tip Update care permit actualizarea (modificarea) datelor din

tabelele existente fr a crea tabele noi sau nregistrri noi;


Interogri de tip Append care permit adugarea de noi nregistrri ntr-o

tabel existent
Interogri de tip Delete care permit tergerea unor nregistrri dintr-o

tabel existent funcie de criteriile introduse de utilizator.


Interogrile de tip Parameter care folosesc aceeai interogare de mai multe ori cu

parametrii diferii.
Dintre acestea cererile de selecie sunt cele mai utilizate ele, asigurnd utilizatorilor
posibilitatea consultrii bazei de date..
Operaii privind un obiect de tip interogare
Operaiile privind obiectele de tip cerere se refer la crearea, utilizarea (activarea
interogrii i afiarea datelor) i respectiv modificarea acestora.
Pentru exemplificarea cererilor de interogare din acest curs vom considerare o baz de
date constituit pentru gestionarea produselor (stocurilor) dintr-un magazin, avand schema de
mai jos :

Crearea unui obiect de tip interogare


Crearea unei cereri de selecie se poate realiza n mod grafic (mod implicit) sau n mod SQL
(prin construirea unui bloc de cerere folosind limbajul declarativ Structured Query Language).
Vom prezenta ambele moduri de construire a interogrilor bazei de date
Fiind un obiect Access, inceperea crerii interogrii se realizeaz n fereastra Database
prin activarea fiei Query (specificnd astfel tipul de obiect Access pe care dorim s l crem) i
apoi apsarea butonului New, sau selectnd din meniul Insert opiunea Query.
Access ofer mai multe modaliti de creare a cererilor. Aceste modaliti sunt enunate n
caseta de dialog New Query, afiat ca urmare a iniierii operaiei de creare a cererii:
- modul grafic de proiectare, Design View (proiectarea interogrilor utiliznd interfaa
grafic este cunoscut sub numele Query By Example);
- utilizarea asistentului pentru cereri simple, Simple Query Wizard;
- utilizarea asistentului pentru cereri ncruciate, Crossab Query Wizard;
- utilizarea asistentului pentru cutarea nregistrrilor duplicat, Fin Duplicaes Query
Wizard;
- utilizarea asistentului pentru cutarea nregistrrilor care nu au corespondent n dou
tabele, Find Unmatched Query Wizard.

Pentru crearea unei cereri de selecie se alege opiunea Design View din caseta New
Query sau a opiunii Create query in design View , aa cum se observ n figura urmtoare:

.
Dup alegerea modului de creare, se trece la selectarea tabelelor surs din care se vor
extrage datele. Caseta Show Table, din figura de mai jos ofer posibilitatea precizrii sursei de
date pentru construirea cererii.

Sursa de date pentru o cerere (Query) poate fi reprezentat de:


-

una sau mai multe tabele;

una sau mai multe interogri;

tabele i interogri.

Se vor selecta tabela/tabelele i/sau cererile surs i se va aciona butonul Add pentru a
realiza aducerea acestora n fereastra de proiectare a cererii. Dup a fost precizat sursa de date
se va nchide fereastra Show Table prin acionarea butonului Close . La nevoie se poate
redeschide fereastra folosind butonul Show Table din bara de instrumente

sau opiunea

Show Table din meniul Query.


Dup selectarea tabelelor fereastra principal Access va fi:
Sursa de
Date

Grila Query
Design

Fereastra Select Query (de mai sus ) este mprit n dou zone:
a. Zona superioar, n care se vizualizeaz tabelele/interogrile surs de date precum i relaiile
definite ntre acestea;
b. Grila Query Design structurat astfel:
Linia Field: rezervat pentru definirea numelui atributului selectat;
Linia Table: destinat precizrii sursei de date;
Linia Sort: permite precizarea sensului sortrii pentru atributul din coloana respectiv;
Linia Show: permite inhibarea afirii realizrilor cmpului respectiv;
Linia Criteria: ofer posibilitatea precizrii criteriilor de selecie prin introducerea
expresiilor Access corespunztoare;

Liniile Or: permit precizarea mai multor criterii de selecie n cazul expresiilor Access
utiliznd operatorul OR.
Odat specificat sursa de date, definirea interogrii de selecie presupune parcurgerea
urmtorilor pai:
1. Selectarea tipului de interogare se poate face din meniul principal, opiunea Query:

sau de la butonul Query type de pe bara de butoane:

Obs. Butonul

permite punerea n execuie a interogrii.

2. Precizarea atributelor ale cror realizri urmeaz s le returneze cererea. Numele acestor
atribute se vor preciza n grila Query Design n rndul Field utiliznd una din urmtoarele
modaliti:

Selectarea atributului din cadrul listei Field Name ce poate fi deschis prin acionarea
cu mouse-ul a butonului List Box ;
Executarea unui dublu clic de mouse asupra atributului dorit din tabela/interogarea
aflat n panoul superior;
Metoda drag-and-drop care presupune selectarea cu mouse-ul a atributului dorit din
panoul superior i tractarea acestuia n linia Field.
Dac este necesar s fie aduse n panoul inferior toate atributele aparinnd unei tabele se va
proceda n unul din urmtoarele moduri:
Selectarea tuturor atributelor din tabela surs (aflat n panoul superior) printr-un
dublu clic de mouse pe numele tabelei i glisarea atributelor n grila Design (panoul
inferior);
Utilizarea asteriscului aparinnd tabelei surs: tragei cu mouse-ul asteriscul n prima
coloan Field. Chiar dac n grila de proiectare este completat doar prima coloan Field
la execuie interogarea va returna realizrile tuturor atributelor;

Caseta Query Properties


Utilizarea

proprietii

utiliznd butonul Properties

Output All Fields: Se va deschide caseta Query Properties


din bara de instrumente sau executnd dublu click ntr-o zon

liber a panoului superior, n linia Output All Fields se va preciza Yes (figura de mai sus ) .

Precizarea valorii Yes pentru proprietatea Output All Fields nu va determina aducerea n
grila de proiectare a cmpurilor din tabela surs, dar, n momentul executrii cererii, DynaSet-u\
va cuprinde realizrile tuturor atributelor.
n mod implicit n DynaSet, antetul coloanelor este reprezentat de numele atributului, cu
excepia cazului n care la crearea tabelei ai precizat o alt etichet prin intermediul proprietii
Caption. Dac dorii afiarea n DynaSet a unei noi etichete pentru un atribut plasai mouse-ul n
linia Field naintea numelui atributului, tastai eticheta dorit urmat de caracterul ":".
3. Se precizeaz criteriul de selecie (n mod implicit se returneaz realizrile tuturor
tuplurilor pentru atributele specificate) prin introducerea unei expresii Access valide n
rndul Criteria (eventual i rndul OR). Acest criteriu permite selectarea doar a anumitor
nregistrri care ndeplinesc anumite condiii Introducerea expresiei Access se face prin
tastare sau se construiete prin intermediul generatorului de expresii (Expression
Builder) a crui fereastr se deschide selectnd opiunea Build a meniului contextual pe
care l activai printr-un clic dreapta de mouse n rndul Field.

Criteriile de selectare se pot construi cu ajutorul constructorului de expresii care poate fi


activat fie prin intermediul butonului Build de pe bara de butoane:

fie din meniul local activat cu butonul dreapta a mouse-ului

:
Se va pune n execuie astfel Expression Builder:

4. Se precizeaz, dac este necesar, cmpul/cmpurile dup care se dorete o eventual


sortare i sensul acestei a n linia Sort.

Proiectarea unei interogri de selecie

n figura de mai sus se prezint modul n care s-a definit interogarea de selecie prin care
se realizeaz afiarea stocului pentru produsul faina. Sursa de date a cererii este reprezentat de
trei tabele ale bazei de date: Furnizori, Produse i respectiv Stocuri.
In privina cererilor de selecie care au ca surs mai multe tabele trebuie precizat c, n
mod implicit, Access utilizeaz operaia de echicompunere, fapt ce conduce la selectarea
nregistrrilor ce au corespondent n ambele tabele (interogri de tip Inner Join).
De exemplu, dac se realizeaz o cerere asupra tabelelor Produse i Stocuri, fr a se
specifica vreun criteriu, n lista rezultatelor nu vor figura dect produsele pentru care exist ceva
n stoc. Dac se dorete realizarea unei interogri de tip Outer Join (folosind operaia de
compunere extern) se va efectua dublu click asupra liniei de legtur dintre tabele i, n caseta
Join Properties (ca n figura de mai jos ) se poate preciza selectarea tuturor nregistrrilor din
una dintre tabele, indiferent dac au sau nu corespondent n cealalt tabel.
Pentru realizarea operaiei de compunere pe baza unei relaii de inegalitate (<, >, o) a cmpurilor
de legtur dintre tabele se poate folosi limbajul SQL. O cerere ce are ca surs dou tabele ntre
care nu exist nici o relaie va avea ca rezultat produsul cartezian al nregistrrilor din cele dou
tabele.

Caseta Join Properties


Executarea interogrii de aciune se poate realiza n unul din urmtoarele moduri:
Utiliznd butonul Query View

(primul n bara de instrumente);

Utiliznd butonul Run

din bara de instrumente;

Utiliznd opiunea Datasheet din meniul View;


Utiliznd opiunea Run din meniul Query.
In Figura de mai jos este redat rezultatul executrii cererii anterior proiectate.

Rezultatul unei interogari de selectie


Revenirea n modul Design se realizeaz prin activarea butonului Design View bara de
instrumente sau selectnd din meniul View opiunea Design View.
Salvarea interogrii proiectate se poate realiza prin opiunea Save din meniul File sau
nchiznd fereastra Select Query, n ambele situaii utilizatorul fiind invitat s tasteze numele
interogrii create (n mod implicit este atribuit numele Query n, unde n indic numrul cererii).
Modificarea unei cereri
Pentru a modifica o cerere, aceasta trebuie deschis n modul Design. Modificrile se pot
realiza insernd noi coloane sau tergnd coloane deja definite. Inserarea unei noi coloane se
efectueaz selectnd coloana naintea creia dorim s introducem noua coloan i alegnd
opiunea Colum n din meniul Insert.
tergerea unei coloane din grila de proiectare se realizeaz selectnd coloana i acionnd
tasta Delete sau butonul Cut din bara de instrumente sau executnd opiunea Delete Column din
meniul Edit.
Modificarea unei cereri poate presupune i extinderea sursei de date (utiliznd fereastra
Show Table). De asemenea modificarea cererii poate implica i precizarea unor formate de
afiare asociate unor coloane pentru ca datele returnate s fie uor de parcurs (pentru precizarea

unui anumit format de afiare se va plasa cursorul mouse-ului n coloana dorit i se va executa
clic dreapta, selectndu-se din meniul contextual opiunea Properties.
Va fi afiat caseta Field Properties (figura alturat) n care se va putea specifica numrul
de zecimale dorit sau un format de afiare pentru cmpul respectiv.

Pe lng modurile de vizualizare Design i Datasheet Access permite utilizatorilor


vizualizarea i modificarea codului SQL al interogrilor. Pentru aceasta se va apela din meniul
View opiunea SQL View. Fraza SQL ce st la baza cererii exemplificate n Figura 4. 16 este
prezentat n figura de mai jos

Modificarea interogrilor n modul SQL View

Cmpuri calculate n interogri de selecie


Interogrile de selecie pot cuprinde i cmpuri calculate. Aceste cmpuri returneaz, la
executarea interogrii, valoarea expresiilor Access asociate lor.

Exemplu de camp calculat intr-o interogare


Pentru a aduga un cmp calculat ntr-o interogare se tasteaz numele acestuia ntr-o nou
coloan din grila Query Design, se adaug dou puncte: i apoi se completeaz expresia dorit.
Exemplu: Interogarea din Figura de mai sus calculeaz data limit pn la care trebuie onorat
fiecare comand.

Expresii i operatori pentru interogri


Elementele unei expresii Access sunt:
-

Operatori',

Constantele;

Identificatorii;

Funciile.

Operatorii utilizai n construirea expresiilor Access se pot clasifica astfel:


Aritmetici: +,-,*,/, Mod (returneaz restul mpririi la un ntreg), A (ridicare la putere).
De atribuire i comparare: =, <, >, <=, >=, < >.
Aceti operatori returneaz valorile logice True i False., Excepie reprezint cazul n care unul
dintre operatori are valoarea Null i deci, orice comparare va returna valoarea Null.
Logici: And, Or, Not. Se pot utiliza pentru construirea expresiilor Access compuse.

De concatenare a irurilor de caractere: +, &.

Operatori de identificare
Operatorii de identificare , ! i . , sunt specific programului Access. Operatorul ! se mai
numete i operatorul bang. Ei sunt folosii n urmtoarele situaii:

Combinarea denumirilor claselor de obiecte i a denumirilor obiectelor pentru a

selecta un anumit obiect sau a proprietii unui obiect. Exemplu:


Forms!Note
Deosebirea denumirilor obiectelor de denumirea proprietilor; exemplu:

Textbox1.Fontsize=10
Identificarea anumitor cmpuri din tabele : studenti!marca

Caracterul ! este folosit pentru separarea referinelor de obiecte. Sintaxa:


Clasa_obiect!Denumire_obiect.
Caracterul . separ obiectele i proprietile sau metodele acestora, sintaxa fiind:
Clasa_Obiect!Obiect.Proprietate sau Clasa_Obiect!Obiect.Metoda

Ali operatori
Operator
Is
Like
In
Between

Descriere
Folosit cu valoarea logic Null pentru a stabili dac o
valoare este Null sau nu
Determin dac un ir de caractere ncepe cu un
anumit prefix
Determin dac o valoare de tip ir apare ntr-o list
de valori
Determin dac o valoare numeric sau o dat
calendaristic se gsete ntr-un anumit interval de
valori

Exemplu
Is Null
Is Not Null
Like EXE*
Like FILE????
X In (ABC,ggg,FILE)
Between 1 and 6

Expresiile Access utiliznd operatorul Like permit specificarea unor criterii de selecie prin
cutarea unui ir ntr-un text. n interiorul textului se pot folosi caracterele generice ? (poate
nlocui orice caracter n poziia n care apare) i * (orice n poziia n care apare i n
urmtoarele).

Figura 4. 21
Astfel expresia Like "Tom*" selecteaz toate numele care conin pe primele trei poziii
caracterele "Tom", iar expresia Like u*escu" va permite selecia numelor terminate n "eseu".
Operatorul In precizeaz mulimea de valori admise pentru un atribut. Interogarea din Figura 4.
22 va selecta clienii de tip SRL (a cror denumire se termin cu aceste trei caractere) ce au
comandat produsele "cablu telefonic" sau "banda izolanta".

Figura 4. 22
Constantele utilizate n construirea expresiilor Access pot fi de natur:
numeric (ex:1200,5,0) ;

text (ex:"123", "TOMA ION", str. Viilor 15);


Dat calendaristic (ex: #12.31.01# ceea ce indic data de 31 decembrie 2001).
Identificatorii sunt nume de obiecte Access (tabele, atribute, formulare,etc) ca de exemplu
[Produse]! [cod produs].
Prin intermediul identificatorilor se pot prelua valori pentru definirea criteriilor de pe formulare
create anterior. Exemplul din Figura 4. 23 prezint o interogare ce va afia comenzile i data
comenzilor pentru un produs a crui nume a fost selectat ntr-o caseta' de tip LisBox (numit
ListaProdu.se) pe un formular numit Selecie5.
Funciile care pot fi de natur:
Dat calendaristic : Date() Month(), Year (), etc. Exemple:
Date() returneaz data curent;
Month(Date()} returneaz numrul lunii calendaristice curente.
Year(Date(*)) returneaz anul curent.
De tip text: Len() - returneaz lungimea unui ir, TrimQ - elimin spaiile de la nceputul i de
la sfritul unui ir, Left() - returneaz primele n caractere de la nceputl unui ir, etc.
Matematice i trigonometrice: ABS() - returneaz valoarea absolut a unui numr, INT() returneaz partea intreag dintr-o valoare numeric, ROUND() -rotunjete o valoare cu un
anumit numr de zecimale,SUM() - calculeaz suma, AVG() - calculeaz media, etc.
Financiare: PV() returneaz valoarea actual a unei anuiti pltite n rate periodice egale,
SLN() returneaz valoarea amortizarea unui mijloc fix dup o anumit perioad (amortizare
liniar) etc.
Funcii diverse: ISNUMERIC(), ISNULL(), etc.
Expresii pot fi utilizate ntr-o interogare de selecie fie drept criterii de selecie fie pentru a
calcula anumii indicatori. Expresia poate fi tastat n rndul Field al unei coloane (exemplul din
Figura 4. 20) sau poate fi construit cu ajutorul generatorului de expresii (a crui fereastr se
activeaz efectund clic dreapta n linia Field i selectnd din mediul contextual opiunea Build).
Exemplul din Figura 4. 24 prezint utilizarea generatorului de expresii pentru a calcula valoarea
fiecrui produs de pe o comand.

Fereastra Expresion Builder cu un alt exemplu


Parametrizarea interogrilor
Interogrile de selecie prezentate pn n acest moment returneaz ntotdeauna tuplurile
din tabelele surs care corespund unei anumite cereri fixe: clienii trebuie s aib domiciliul n
Bucureti sau Ploieti iar data livrrii s fie anterioare datei curente (vezi exemplul de interogare
de selecie prezentat ntr-un paragraf anterior). De multe ori ns, ar fi util o interogare al crei
criteriu de selecie s poat fi precizat la nivel general i particularizat de utilizator n funcie de
necesitile sale de informare (precizndu-se concret ce realizri ale atributului sunt cutate)
chiar n momentul execuiei cererii. O astfel de interogare se caracterizeaz prin faptul c n grila
Design, pe coloana dorit, n linia Criteria, se va preciza ntre paranteze drepte un mesaj ce
urmeaz a fi afiat la executarea cererii permind ca utilizatorul s introduc criteriul de selecie
dorit. Parametrii pot fi utilizai nu doar n rndul de criterii, ci i n formulele cmpurilor
calculate, dac se dorete introducerea unui termen variabil n expresii.
Practic n aceste interogri se dorete ca expresia (criteriul) din interogare s fie variabil
de la o execuie la alta se poate crea o interogare cu parametru. n acest caz criteriile sunt
introduse n caseta de dialog Enter Parameter Value. Se deschide interogarea n mod design view,
i n cmpul criteria se introduce un text ntre paranteze drepte.

Acest text va fi afiat n caseta de dialog Enter Parameter Value n momentul n care se
pune n execuie interogarea, iar utilizatorul poate introduce criteriul de selecie n mod dinamic,
la execuie.

Traducerea SQL va fi:


SELECT

studenti.marca,

studenti.nume,

studenti.DataN,

profile.cod_prof,

special.cod_spec
FROM ((profile INNER JOIN (ani INNER JOIN PLANE ON ani.an = PLANE.as) ON
profile.cod_prof = PLANE.cod_prof) INNER JOIN special ON (special.cod_spec =
PLANE.cod_spec) AND (profile.cod_prof = special.cod_prof)) INNER JOIN studenti ON
(ani.an = studenti.an_s) AND (special.cod_spec = studenti.cod_spec) AND (profile.cod_prof =
studenti.cod_prof)
WHERE

(((studenti.DataN)

Between

#1/1/1970#

And

#1/1/1980#)

AND

((profile.cod_prof)=[Introducei cod profil:]));

Interogri de sintetizare a datelor (gruparea datelor )


Pe lng posibilitatea de a utiliza expresii pentru a aduga cmpuri calculate n interogri,
Access permite utilizatorilor realizarea unor cereri prin intermediul crora se pot aplica funcii
unor nregistrri grupate dup criterii prestabilite. Prin intermediul acestor query cu rol de

sintetizare a datelor se pot construi cu uurin cereri care s returneze totalul, media, minimul
sau maximul unor grupuri de tupluri.
Pentru a realiza o cerere de sintetizare a datelor se va elabora interogarea de selecie
aducndu-se n grila Query Design cmpurile necesare i adugndu-se eventualele cmpuri
calculate, dup care se va apsa butonul Totals din bara de instrumente. Ca rezultat al acestei
operaii, n grila Query Design, va fi disponibil un nou rnd intitulat Total, n mod implicit,
gruparea datelor dup valorile cmpului toate coloanele vor avea selectat n linia total opiunea
Group By care conduce la respectiv. Se va pstra opiunea Group By n dreptul cmpurilor de
grupare, urmnd ca pentru celelalte cmpuri s fie selectat din lista de selecie funcia dorit.
Lista conine nou funcii de tip agregat ce sunt prezentate n tabelul urmtor:
Funcia

Returneaza

Tipul de cmpuri pentru care se poate aplica

AVG

Media aritmetic

Number, Date, Currency, AutoNumber

COUNT
FIRST
LAST
MAX

Numrul total de valori


Prima valoare
Ultima valoare
Valoarea maxim

Toate tipurile
Toate tipurile
Toate tipurile
Text, Number, Date, Currency, AutoNumber

MIN
STDEV

Valoarea minim
Deviaia standar a

Text, Number, Date, Currency, AutoNumber


Number, Date, Currency, AutoNumber

SUM

valorilor
Suma valorilor

Number, Date, Currency, AutoNumber

VAR

Varianta valorilor

Number, Date, Currency, AutoNumber

Pe lng aceste funcii mai sunt disponibile opiunile WHERE i EXPRESSION.


-

Opiunea Where se va utiliza dac un cmp trebuie utilizat pentru a preciza anumite criterii

de selecie, dar nu se dorete efectuarea gruprii dup cmpul respectiv.


-

Opiunea Expression se va utiliza pentru cmpurile calculate ce returneaz un singur rezultat

la nivelul grupului.

Interogri de tip Crosstab


Interogrile Crosstab sunt interogri sintetice cu ajutorul crora se poate determina cu
exactitate modul n care sunt afiate pe ecran datele sintetice. Interogrile Crosstab afieaz
datele sintetice n forma tradiional a foilor de calcul tabelar asemntoare cu tabelele pivot din
Excel.

Practic, este posibil elaborarea unor tabele n care gruparea i ordonarea datelor se
realizeaz att pe linii ct i pe coloane la intersecia crora se pot efectua calcule complexe.
Etapele ce trebuie urmate pentru realizarea unei astfel de cereri de interogare sunt urmtoarele :
1. Elaborarea unei interogri de selecie n modul Design View. Se vor alege tabelele ce conine
datele i se vor selecta cmpurile dorite pentru afiare i eventualele cmpuri pentru care se vor
impune restricii.
2. Din meniul Query se va selecta opiunea CrossTab Query ce va avea ca efect imediat afiarea
liniilor Total i Crosstab n grila interogrii.
3. Se va specifica modul de agregare a datelor, respectiv funciile totalizatoare n linia Total.
4. In linia CrossTab se va opta pentru Row Heading n cazul cmpurile ce vor fi afiate pe liniile
tabelului, Column Heading pentru cmpul ce va fi afiat pe vertical, i Value pentru valorile ce
vor fi afiate la intersecia liniilor cu coloanele. Este permis existena mai multor cmpuri
ordonate pe orizontal (Row Heading), dar a unui singur cmp Column Heading i a unui singur
cmp Value
Exemplu: O interogare care va avea ca rezultat un tabel sintetic cu rezultatele la examene
ale unei specializri ar putea avea urmtoarea structur:

Pentru a crea o interogare se selecteaz cmpurile dorite din unul sau mai multe tabele,
apoi se specific unul dintre cmpuri ca fiind de tipul Column Heading, unul sau mai multe
cmpuri, de tipul Row Heading i unul de tip value.

Cmpul de tip value va apare la intersecia unei linii cu o coloan; pentru acest cmp se
specific o funcie agregat ca de exemplu Sum, Count, etc din linia Total. Celelalte cmpuri, care
apar n tabelul sintetic vor avea clauza Where n linia Total i vor fi folosite la specificarea
unor criterii din interogare.

Interogri tip aciune


Pe lng interogrile pentru selecia datelor i cele de tip CrossTab care au fost
exemplificate n paragrafele anterioare, S.G.B.D. Access pune la dispoziia utilizatorilor o
categorie distinct de interogri care permit manipularea i actualizarea nregistrrilor.
Extrem de utile n exploatarea bazei de date acestea pot avea ca rezultat:
* Crearea de noi tabele (Make Table Query)
* Actualizarea datelor (Update Query)
* Adugarea de noi nregistrri (Append Query)
* tergerea nregistrrilor (Delete Query)
Modul de elaborare a unei interogri tip aciune este similar celui prezentat n cazul
interogrilor de selecie, presupunnd ca etap suplimentar specificarea explicit prin
intermediul meniului Query a tipului de cerere dorit.
Modificrile asupra bazei de date sunt efectuate doar n momentul execuiei interogrii
care se poate realiza prin apsarea butonului din bara de instrumente Query Design
sau prin deschiderea interogrii n fereastra Database .
Este recomandat proiectarea n prealabil a cererii ca o simpl interogare de selecie i
verificarea rezultatelor ce vor fi afectate deoarece nu exist posibilitatea revenirii n cazul
tergerii sau modificrii eronate a nregistrrilor .

Interogri de tip Make Table


La crearea acestor tipuri de interogri, dup includerea tabelelor surs i alegerea tipului
de interogare Make table, Access va solicita utilizatorului numele tabelului de date care se va
crea:

Noul tabel va prelua din tabelele existente toate cmpurile selectate n linia Field din
tabelele existente, eventual cu specificarea unui criteriu.
Traducerea SQL va fi:
SELECT studenti.marca, profile.cod_prof, special.cod_spec, ani.an, PLANE.cod_disc
INTO [note]
FROM ani INNER JOIN (((profile INNER JOIN PLANE ON profile.cod_prof =
PLANE.cod_prof) INNER JOIN special ON (special.cod_spec = PLANE.cod_spec) AND
(profile.cod_prof = special.cod_prof)) INNER JOIN studenti ON (special.cod_spec =
studenti.cod_spec) AND (profile.cod_prof = studenti.cod_prof)) ON (ani.an = studenti.an_s)
AND (ani.an = PLANE.as);

Interogri de tip Update


Aceste tipuri de interogri permit actalizarea datelor dintr-un tabel sau mai multe tabele.
Dup alegerea tipului de interogare Update Query i specificarea cmpurilor care se vor
actualiza, n linia Update To se va introduce expresia care va actualiza cmpul respectiv, eventual
cu specificarea unui criteriu, ca n exemplul urmtor:

n limbaj SQL:
UPDATE [note] SET [note].nota_fin = Int(0.6*[note]![nota_ex]+0.4*[note]![nota_lab]
+0.5)
WHERE ((([note]![nota_ex])>=5) AND (([note]![nota_lab])>=5));
Trebuie menionat c n cadrul interogrilor Update nu sunt admise modificri asupra
cmpurilor cheie primar sau modificri ce ar putea conduce la nerespectarea restriciilor de
integritate. O situaie ce ar putea genera erori survine atunci cnd, n cazul cmpurilor de tip text,
valoarea rezultat depete lungimea cmpului din tabel, n acest caz valoarea va fi trunchiat
din partea dreapt.

Interogri de tip Delete


Interogrile de tip delete permit tergerea nregistrrilor dintr-o tabel de date, eventual
cu specificarea unui criteriu. Se vor selecta tabelele surs pentru interogare, apoi se va selecta
tabela din care se fac tergerile astfel: se poziioneaz mouse-ul pe caracterul * de la tabelul din
care se vor face tergerile, apoi se trage acest caracter pn n prima coloan; restul cmpurilor
care se vor introduce vor fi utilizate doar la specificarea unui criteriu de tergere. Se observ c

pe linia Delete a aprut clauza From n dreptul tabelului din care se fac tergerile, iar n dreptul
celorlalte cmpuri a aprut clauza Where, care specific o condiie.

n limbaj SQL:
DELETE studenti.*, ani.an
FROM ani INNER JOIN ((profile INNER JOIN special ON profile.cod_prof =
special.cod_prof) INNER JOIN studenti ON (special.cod_spec = studenti.cod_spec) AND
(profile.cod_prof = studenti.cod_prof)) ON ani.an = studenti.an_s
WHERE (((ani.an)="5"));

INTEROGRI PENTRU ADUGAREA DE NREGISTRRI


Interogrile pentru adugare ofer utilizatorilor posibilitatea inserrii de noi nregistrri n
tabelele pornind de la nregistrrile existente.
Pentru a realiza o interogare de tip Append este necesar parcurgerea urmtoarelor etape:
1. Elaborarea unei interogri de selecie n modul Design View. Se va alege tabela ce conine
datele i vor fi luate n calcul doar cmpurile ce conin valorile ce vor fi adugate, iar, n cazul n

care se dorete aplicarea unor criterii de selecie a acestora, se vor aduga cmpurile de
restricionat.
2. Se vor tasta eventualele condiii n linia de criterii a interogrii.
3. Din meniul Query se va selecta opiunea Append Query ce va conduce la afiarea casetei
Append n care se va selecta numele tabelei n care dorim adugarea.
4. Transformarea interogrii de selecie ntr-o interogare de adugare are ca efect imediat
apariia rndului Append To n fereastra de proiectare a interogrii, n acest rnd se va specifica
pentru fiecare cmp din tabela ce conine datele denumirea cmpului corspondent din tabela
unde vor fi adugate.

Folosirea SQL n Access


Limbajul SQL este limbajul comun pentru gestiunea bazelor de date client-server.
Principalul su avantaj este faptul c este un limbaj standardizat, putndu-se folosi un set comun
de instruciuni n toate sistemele de gestiune a bazelor de date compatibile SQL.
SQL este un limbaj de aplicaie pentru bazele de date relaionale, nu un limbaj de
programare.
Sintaxa SQL
Comenzile SQL se impart n ase categorii:
1. Data Query Language (DQL) cuprinde comenzi care returneaz date din tabele i
determin modul n care sunt prezentate rezultatele. Comanda SELECT este
principala comand din aceast categorie.
2. Data Manipulation Language (DML) conine comenzile INSERT i DELETE
care permit adugare sau tergere de rnduri ntregi precum i comanda UPDATE
care modific datele din coloanele specificate de rnduri.
3. Transaction

Processing

Language

(TPL)

cuprinde

comanzile:

BEGIN

TRANS[ACTION], COMMIT TRANS[ACTION|WORK] i ROLLBACK


TRANS[ACTION|WORK], care grupeaz mai multe operaii DML. Dac
operaia DML a unei tranzacii nu reuete, operaiile DML precedente sunt
anulate (derulate napoi) .

4. Data Definition Language (DDL) include instruciunea CREATE TABLE care


definete structura tabelelor. Comenzile DDL se pot folosi pentru modificarea
tabelelor precum i pentru crearea i tergerea indexurilor.

Pentru crearea

indexurilor se folosete comanda CREATE INDEX.


5. Cursor Control Language (CCL) permite selectarea pentru procesare a unui
singur rnd din setul de rezultate al interogrii..
6. Data Control Language (DCL) efectueaz funcii administrative cum ar fi
acordarea i ridicarea privilegiilor de folosire a bazei de date (GRANT i
REVOKE).
Cuvintele cheie se clasific n:

Comenzi (ex. SELECT)

Calificative (ex. WHERE)

Clauze (ex. ORDER BY)

Operattori (Operatorii cunoscui sau JOIN)

Funcii pentru sintetizarea grupurilor (ex. MIN())

Alte cuvinte cheie

Scrierea interogrilor de selectare cu SQL


Se folosete o instruciune SELECT care returneaz un tabel de interogare (denumit set
de rezultate). Sintaxa:
SELECT [ALL|DISTINCT|DISTINCTROW] [TOP n [PERCENT]] lista_selectie
FROM lista_tabele
[WHERE conditie]
[ORDER BY criteriu [ASC|DESC]]
unde:
lista_selectie determin cmpurile care se vor include n rezultatul interogrii (sunt cele
din linia Fields n mod Design, validate cu caseta de validare show).

Calificativele opionale ALL, DISTINCT i DISTINCTROW specific dac sunt permise


rnduri cu acelai coninut sau nu.
Modificatorul opional TOP n [PERCENT] limiteaz rezultatele interogrii la primele n
rnduri sau la n procente din totalul rezultatelor interogrii.
FROM TABLE lista_tabele specific sursa de tabele a interogrii.
WHERE condiie filtreaz rezultatele interogrii
ORDER BY criteriu specific ordinea de sortare a unui obiect din sursa de date a
interogrii.
Exemplu:
SELECT nume, marca
FROM studeni
WHERE dataN LIKE */*/1980
ORDER BY nume;
n SQL toate instruciunile se ncheie cu caracterul ;.
Folosirea semnelor de punctuaie i a simbolurilor din SQL

Virgula se folosete pentru separarea membrilor unei liste

Parantezele drepte se folosesc atunci cnd denumirea unui obiect include


caractere albe

Dac sunt mai multe tabele surs se folosete caracterul punct ca delimitator
(ex. Studenti.marca)

Ghilimelele se folosesc pentru valori de tip text

Caracterele % i * permit substituirea cu un singur caracter sau cu mai multe.

Caracterul # se folosete

n operatorul LIKE pentru reprezentarea unei

singure cifre, sau pentru delimitarea valorilor de tip Date/Time din expresii
Crearea unei interogri cu instruciuni SQL

1. Se deschide baza de date dorit (de ex. Studeni), apoi o interogare n Design View
2. Se nchide Show Table fr a selecta un tabel.
3. Se deschide SQL View.
4. Se scrie instruciunea (SELECT de ex.)
Folosirea funciilor agregate din SQL
Aceste funcii se folosesc pentru a calcula totalul, media sau alte date statistice pentru
grupurile de nregistrri cu o valoare de atribut comun (se va aduga clauza GROUP BY). Se
poate limita i mai mult rezultatul clauzei GROUP BY folosind calificativul opional HAVING.
Sintaxa:
SELECT [ALL|DISTINCT|DISTINCTROW]
Functie_agregat(camp) AS nume_alias
[, lista]
FROM nume_tabele
[WHERE condiie]
GROUP BY criteriu_grupare
[HAVING criteriu_agregat]
[ORDER BY criteriu_sortare]
unde cmpul folosit ca parametru ntr-o funcie agregat trebuie s fie numeric.
Ex:
SELECT Avg(nota_fin) AS media, cod_disc
FROM [note]
WHERE cod_spec="CE" AND an="1"
GROUP BY cod_disc
ORDER BY Avg(nota_fin) DESC;
Se obine ca rezultat media pe discipline a unei specializri (CE).

Crearea uniunilor cu SQL


Se utilizeaz structura JOIN ON care specific tabelul care trebuie unit i relaia dintre
cmpuri.
Sintaxa:
SELECT [ALL|DISTINCT|DISTINCTROW]
From nume_tabel {INNER|LEFT|RIGHT} JOIN tabel_legatura
ON criteriu_legatura
[ nume_tabel {INNER|LEFT|RIGHT} JOIN tabel_legatura
ON criteriu_legatura ]
[WHERE conditie]
[ORDER BY criteriu]
unde: nume_tabel {INNER|LEFT|RIGHT} JOIN tabel_legatura specific[ denumirea
tabelului cuplat cu celelalte tabele. Fiecare tabel care particip ntr-o uniune trebuie introdus
naintea clauzei JOIN. INNER definete o uniune intern, LEFT, RIGHT definesc uniuni
externe.
ON criteriu_legatura definete cele dou cmpuri care trebuie unite i relaia dintre ele.
Exemplu: Testai efectul instruciunii:
SELECT nume, studenti.marca, nota_fin, cod_disc
FROM studenti INNER JOIN [note] ON studenti.marca=note.marca
WHERE (studenti.cod_spec="CE") and (note.cod_disc=1407)
ORDER BY studenti.nume;

Creare interogri de aciune cu SQL


Interogri Update
Sintaxa:

UPDATE tabel {INNER|LEFT|RIGHT} JOIN tabel_legatura


ON criteriu_legatura
[ nume_tabel {INNER|LEFT|RIGHT} JOIN tabel_legatura
ON criteriu_legatura ]
SET camp=expresie [, camp=expresie]
[WHERE conditie ]
Interogri Make table
SELECT lista_cmpuri
INTO tabel_nou
FROM tabel {INNER|LEFT|RIGHT} JOIN tabel_legatura
ON criteriu_legatura
[ nume_tabel {INNER|LEFT|RIGHT} JOIN tabel_legatura
ON criteriu_legatura ]
[WHERE conditie]
Interogri de tip Append
INSERT INTO table_destinaie
SELECT [ALL|DISTINCT|DISTINCTROW]
From nume_tabel {INNER|LEFT|RIGHT} JOIN tabel_legatura
ON criteriu_legatura
[ nume_tabel {INNER|LEFT|RIGHT} JOIN tabel_legatura
ON criteriu_legatura ]
[WHERE conditie_adaugare]
[ORDER BY criteriu]
Interogri de tip Delete
DELETE FROM tabel

[WHERE conditie_stergere]
Interogri de tip Crosstab
TRANSFORM functie_agregat(camp) [AS alias]
SELECT [ALL|DISTINCT|DISTINCTROW]
From nume_tabel {INNER|LEFT|RIGHT} JOIN tabel_legatura
ON criteriu_legatura
[ nume_tabel {INNER|LEFT|RIGHT} JOIN tabel_legatura
ON criteriu_legatura ]
PIVOT cmp

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