Sunteți pe pagina 1din 233

CAPITOLUL.

PREZENTARE SGBD ACCESS 2013


ACCESS 2013 este un sistem de gestiune a bazelor de date care ofer urmtoarele faciliti:
-

Utilizeaz modelul relaional n gestiunea bazelor de date.

Gestioneaz cu succes baze de date de mrime medie i mic.

Aplicaiile ACCESS conin un ansamblu de colecii de obiecte tip: tabel (Table), interogare
(Query), formular (Form), raport (Report), macro (Macro), modul (Module).

Dispune de o interfa prietenoas pentru construirea obiectelor cu tipurile specificate anterior,


precum i de numeroase componente de asistare (Wizard) a operaiilor de efectuat.

Ofer posibiliti pentru importul de date din Excel, Word, Access, dBase, ODBC Database,
XML, HTML, SharePoint list, precum i efectuarea unor legturi (link) la Data Services.

Permite exportul de date n Excel, Word, Access, dBase, ODBC Database, XML, HTML, PDF,
e-mail, SharePoint list.

Este adaptat pentru lucru n reele de calculatoare cu partajarea nregistrrilor.

Dispune de instrumente de programare :


Declarativ (QBE, SQL, aciuni n obiecte macro);
Procedural (VBA).

Datele gestionate n ACCESS pot fi publicate pe Web, astfel nct i alte persoane s poat
utiliza baza de date folosind un browser Web.

Are posibiliti de a creea tabele pe baza unei liste SharePoint, astfel c datele se pot utiliza de
ctre persoane care nu au instalat pe calulatorul personal SGBD Access.

Interfaa oferit de Access 2013, este o interfa orientat spre rezultate. Ea a fost proiectat
cu scopul de a-i permite utilizatorului s gseasc i s foloseasc mult mai uor toate
caracteristicile avansate oferite de acest sistem de gestiune a bazelor de date.

n figura 1 este prezentat structura general a ferestrei Access 2013.

4
5

Figura 1. Structura general a ferestrei Access 2013.


Semnificaia notaiilor este urmtoarea:
1. Bara de titlu
2. Bara cu meniul principal
3. Bara de instrumente i comenzi specifice
4. Panoul de navigare
5. Rubrica document
6. Bara cu selectorul de vederi
Aa cum rezult din figura 1, elementele principale ale interfeei Access 2013 sunt:
1. Bara de titlu:

Conine informaii despre: numele bazei de date deschise, n stnga are butoane rapide pentru salvare i
corectare,

iar n colul din dreapta butoane de maximizare, minimaza, revenire i

nchidere.
2. Bara cu meniul principal: File, Home, Create, External Data, Database Tools.

n mod implicit, aceast bar conine cinci meniuri de comenzi:

File are comenzi pentru deschiderea, nchiderea, salvarea, tiprirea, sau crearea unei baze de

date, etc.

Home - cuprinde comenzile de baz Clipboard, comenzile de formatare caractere, alegere stiluri,

comenzi de inserare, comenzi de cutare, sortare, filtrare date.

Create - include comenzi ce permit crearea tuturor obiectelor Access: tabele, formulare, rapoarte,

interogri, macrouri i module.

External Data - conine comenzi ce au ca efect importul/exportul datelor din alte fiiere de tip

Excel, Word, Access, dBase, ODBC Database, XML, HTML, SharePoint list, precum i efectuarea unor
legturi (link) la Data Services.

Database Tools - are comenzi pentru crearea relaiilor dintre tabele (Relationships), programarea

n limbajul Visual Basic, definirea unui meniu cu SwitchBoard Manager, compactarea, repararea bazei
de date, executarea macro-urilor, analiza bazei de date, migrarea datelor spre un SQL Server, splitarea
tabelelor, mutarea tabelelor ntr-un site Share Point .
Observaie:
Dac se deschide un obiect Access, de exemplu un tabel, n modul de proiectare (Design View) bara cu
meniul principal se extinde prin meniul Design cu comenzi specifice: de vizualizare, definirea unei chei
primare, inserarea de noi nregistrri, tergere de nregistrri, vizualizare proprietilor tabelului i
afiarea indexurilor tabelului, crearea/redenumirea sau tergerea de data macro, afiarea relaiilor ntre
tabele i a dependenelor ntre obiecte (Figura 2).

Figura 2. Meniul principal extins cu noi comenzi


n cele ce urmeaz se prezint o sintez privind meniul FILE, care are asociate o serie de comenzi
frecvent utilizate precum: Info, New, Open, Save, Save As, Print, Close, Account, Options, aa cum
rezult din figura 3.

Figura 3. Opiunile meniului FILE


Semnificaia comenzilor utilizate din meniul FILE este urmtoarea:
Info

Afieaz informaii despre baza de date curent, se pot afia proprietile ei,
are opiuni de compactare, reparare, precum i de criptare cu parol.

New

Permite crearea unei baze de date noi. Sunt afiate toate modalitile de
creare, dintre care utilizatorul va selecta varianta dorit. De obicei selectm
BLANK DESKTOP DATABASE.

Open

Deschide o baz de date Access existent pe disc. Se afieaz o list cu cele


mai recente baze de date care au fost deschise n sesiunile anterioare.

Save

Permite salvarea contextului de lucru curent.

Save As

Salvarea bazei de date cu un nume nou/vechi sau salvarea unui obiect cu


acelai nume sau cu nume diferit.

Print

Permite previzualizarea pe ecran sau tiprirea la imprimant a informaiilor


din baza de date.

Close

nchide baza de date.

Account

Ofer informaii privind accesul utilizatorului la baza de date Access,


termenii licenei Microsoft.

Options

Permite stabilirea tuturor opiunilor pentru utilizarea SGBD Access.

Observaie:
Celelalte meniuri din bara cu meniul principal sunt explicate pe parcurs, prin intermediul operaiilor
practice pe care le execut acestea.

3. Bara de instrumente i comezi speciale conine un set de comenzi particulare n funcie de opiunea
din meniul principal ce a fost selectat.
De exemplu pentru opiunea HOME apare bara cu instrumentele afiate n figura 4.

Figura 4. Bara de instrumente asociat meniului HOME


Pentru opiunea DATABASE TOOLS apare bara cu instrumentele afiate n figura 5.

Figura 5. Bara de instrumente asociat meniului DATABASE TOOLS


4. Panoul de navigare este amplasat n stnga interfeei Access i include obiectele Access (tabele,
formulare, interogri, rapoarte, macrouri, module) create de utilizator, de unde apoi sunt apelate i
utilizate n funcie de necesitile aplicaiei respective.

Figura 6. Panoul de navigare

Observaie.
Ascunderea sau vizualizarea Panoului de navigare se realizeaz prin selecia tastei F11 sau a butonului
.
5. Rubrica document sau zona de lucru cu documente este utilizat pentru crearea, modificarea i
afiarea coninutului documentelor de tip: tabel, formular, raport, interogare, macro, modul. Este de fapt
zona n care se execut diverse operaii cu documente de diverse tipuri.

Figura 7. Zona de lucru cu documente


6.

Bara cu selectorul de vederi - conine butoanele Design View i Datasheet View, amplasate n

partea dreapt, iar n partea stng apar afiate unele informaii despre obiectul selectat n zona de lucru
aa cum rezult din figura 8.

Selectorul
de vederi

Figura 8. Bara cu selectorul de vederi

Fiecare opiune din cadrul interfeei Access are un meniu de context de unde utilizatorul poate s
efectueze o personalizare a operaiilor prin inserare de noi comenzi utiliznd opiunea Customize the
Quick Access Toolbar.
In cadrul ferestrei Customize the Quick Access Toolbar, se va alege comanda de adugat din caseta
Choose commands from, de exemplu - Export to Excel spreadsheet, iar cu ajutorul butonului Add se
transfer noua comand n bar, aa cum rezult din figura 9. Dac se dorete eliminarea unor comenzi
din bar se selecteaz comanda respectiv din panoul din dreapta, iar cu butonul Remove se execut
operaia de tergere.

Figura 9. Personalizarea operaiilor cu Customize the Quick Access Toolbar


Similar se poate personaliza meniul principal din panoul de comand (ribonul), selectnd Customize the
Ribbon din meniul de context i apoi transfernd opiuni din fereastra Choose commands from: n
fereastra Customize the Ribbon: i invers, aa cum rezult din figura 10.

Figura 10. Personalizarea meniului principal cu opiunea Customize the Ribbon


Dup lansarea n execuie a SGBD ACCESS 2013, pe ecran apare meniul principal de unde se alege varianta de
lucru i anume:
I. Crearea unei baze de date noi.
1. Se acioneaz succesiv butoanele: FILE

NEW

BLANK DESKTOP DATABASE

2. Pe ecran apare fereastra BLANK DESKTOP DATABASE unde n caseta File Name se introduce numele
bazei de date nou create, apoi se va selecta locul de memorare pe disc utiliznd butonul de rsfoire.
3. Se acioneaz butonul CREATE i baza de date este creat.

Figura 11. Crearea unei baze de date noi


II. Crearea unei baze de date cu ablon furnizat de ACCESS (tip desktop)
1. Se acioneaz succesiv butoanele FILE

NEW

Selectarea unui ablon tip DESKTOP

2. Se alege de exemplu Desktop Contacts, unde n caseta File Name se introduce numele bazei de date ce
dorim s fie creat dup ablonul ales, apoi se va selecta locul de memorare pe disc utiliznd butonul de
rsfoire.
3. Se acioneaz butonul CREATE i baza de date este creat.

Figura 12. Crearea unei baze de date dup un ablon


Pe ecranul de pornire a SGBD Access, sunt afiate modelele de aplicaii puse la dispoziie de acesta. Aplicaiile
de tip desktop au la nceputul denumirii cuvntul desktop, iar cele care au n pictogram un glob sunt pentru
crearea bazelor de date web. Cele mai utilizate sunt: Project Management, Asset Tracking, Contacs, Issue
Tracking, Task Manager. Utilizatorii le pot apela i ncrca cu date aa cum sunt furnizate sau pot modifica
structura tabelelor dup nevoile lor.
III. Crearea unei baze de date cu aplicaie web personalizat.
1. Se acioneaz succesiv butoanele FILE

NEW

Selectare variant Custom Web App

2. Apare fereastra Custom Web App unde: n App Name se introduce numele bazei de date, iar n Web
Location se introduce adresa web unde va fi memorat baza de date.
3. Se acioneaz butonul CREATE i baza de date este creat.

Figura 13. Crearea unei baze de date cu aplicaie web personalizat


n aceast variant trebuie s avem access la un site web, precum i drepturi de utilizare a locaiei respective.
La o baz de date creat cu aplicaie web au acces toi utilizatorii site-ului respectiv.

PROIECTAREA MODELULUI RELAIONAL


AL DATELOR PRIN NORMALIZARE
n literatura de specialitate, n funcie de complexitatea bazei de date sunt abordate
urmtoarele metode de proiectare:
proiectarea modelului relaional printr-un model static (utiliznd limbajul UML);
proiectarea modelului relaional printr-un model conceptual (utiliznd modelul entitate
asociere);
proiectarea modelului relaional prin procesul de normalizare.
n continuare este prezentat proiectarea modelului relaional prin procesul de normalizare.
Normalizarea este procesul care presupune descompunerea unui tabel relaional alctuit
dintr-un set de atribute, n dou sau mai multe tabele care vor forma baza de date, cu scopul de a
elimina redundanele (memorarea repetat a acelorai date) i anomaliile care pot aprea n
operaiile de adugare, modificare sau tergere de nregistrri. Acest proces se fundamenteaz pe
conceptele:

dependen funcional

dependen multivaloare

forme normale.

Ideea central care st la baza proiectrii unei baze de date relaionale este aceea de dependen
a datelor [Dollinger]. Aceasta se refer la faptul c ntre atributele unei relaii (tabel relaional)
sau ntre atribute din relaii diferite pot exista anumite legturi logice (dependene), iar aceste
legturi influeneaz proprietile relaiilor n raport cu operaiile curente care apar n exploatarea
bazei de date, cum ar fi: adugarea, modificarea i tergerea nregistrrilor.
Exemplu:
Fie relaia Aprovizionare (Cod_Fz, Nume-fz, Adresa_Fz, DenMarfa, PretFact):
Cod_Fz

Nume_Fz

Adresa_Fz

DenMarfa

PretFact

100

SC ALFA SRL

Bucuresti

Portocale

100

SC ALFA SRL

Bucuresti

Banane

101

SC BETA SRL

Brasov

Portocale

4.8

102

SC GAMA SRL

Galati

Kiwi

-----------

----------

---------

--------

Analiznd aceast relaie se observ o redundan a datelor pentru aprovizionrile realizate cu


acelai furnizor. Altfel spus valorile asociate atributelor Nume_Fz i Adres_Fz se repet la fiecare
marf livrat de acel furnizor. Mai mult aceast redundan a datelor conduce la apariia
urmtoarelor anomalii:

Anomalia de adugare nu se poate nregistra un furnizor att timp ct acesta nu livreaz


o marf.

Anomalia de tergere dac se terg toate mrfurile livrate de un furnizor, atunci se pierd,
n mod neintenionat, i caracteristicile acelui furnizor (numele furnizorului, adresa
furnizorului).

Anomalia de modificare dac se modific, spre exemplu, adresa unui furnizor, atunci
este necesar parcurgerea ntregii relaii pentru a opera modificarea la nivelul tuturor
nregistrrilor.

Aceste anomalii pot fi eliminate, dac tabelul iniial Aprovizionare este supus unui proces de
normalizare, n urma cruia va fi descompus n urmtoarele tabele:
Furnizori (Cod_Fz, Nume_Fz, Adresa_Fz)
Livrare (Cod_fz, DenMarfa, PretFact)
Furnizori
Cod_Fz

Nume_Fz

Adresa_Fz

100

SC ALFA SRL

Bucureti

101

SC BETA SRL

Brasov

102

SC GAMA SRL

Galai

Livrare
Cod_Fz

Den_Marfa

PretFact

100

Portocale

100

Banane

101

Portocale

4.8

102

Kiwi

2.1. Dependene funcionale


2.1.1. Dependena funcional simpl
ntre dou atribute X i Y exist o dependen funcional simpl, notat
, dac i numai
dac fiecrei valori a atributului X i corespunde o singur valoare a atributului Y. Atributul X se
numete determinantul iar Y determinatul dependenei.
De exemplu, pentru o valoare asociat unui CodMarfa i corespunde o singur valoare pentru
DenMarfa. n acest caz, este vorba despre o dependen funcional ce se stabilete ntre cele dou
atribute, reprezentat astfel: CodMarfa DenMarfa.
Alte exemple de dependene funcionale sunt reprezentate mai jos:
NrFact Datafact
NrFact CodFz.
CodMarfa, Nrfact PretFact
Tipuri de dependene funcionale:

Dependena funcional total. Dependena funcional XY este total dac nu exist


nici un subset Z al atributului X astfel nct ZY.
Exemplu: NrFact Datafact
NrFact CodFz
CodMarfa, Nrfact PretFact

Dependena funcional parial. Dependena funcional


exist un subset Z al atributului X (Z X) astfel ncat ZY.

este parial dac

Exemplu: CodMarfa, Nrfact Codfz este o dependen parial deoarece exist subsetul
Nrfact care determin funcional CodFz.

Dependena funcional trivial. Dependena funcional


un subset Y al atributului X (Y X) astfel ncat XY.

este trivial dac exist

Exemplu: CodMarfa, Nrfact Nrfact este o dependen trivial, care nu aduce nici un plus
de informaie.
Dependenele funcionale pot fi deduse folosind un set de reguli, numite axiomele lui Armstrong
[Dollinger]:
1. Reflexivitate: Dac Y X, atunci X Y.
Exemplu: Dac Nrfact (CodMarfa, Nrfact), atunci
(CodMarfa, Nrfact) Nrfact.
Aceast axiom genereaz dependenele funcionale triviale.
2. Augmentare (Amplificare): Dac X Y, atunci X Z Y Z
Exemplu: Dac NrFact CodFz , atunci
(Nrfact, Nrdocplata) (Codfz, Nrdocplata).

3. Tranzitivitate: Dac XY i YZ, atunci XZ.


Exemplu: Dac NrFact CodFz i Codfz Denfz, atunci NrfactDenfz. Aceast
axiom este utilizat n aplicarea formelor normale.
2.1.2. Dependena funcional multipl
ntre dou atribute X i Y exist o dependen funcional multipl, notat
X
Y, dac i numai dac pentru o valoare a atributului X corespund dou sau mai multe valori
a atributului Y.
De exemplu, pentru o valoare asociat unui CodFz vor corespunde mai multe valori pentru NrFact,
deoarece la date calendaristice diferite unui furnizor i se pot emite mai multe facturi. n acest caz,
este vorba despre o dependen funcional multipl ce se stabilete ntre cele dou atribute,
reprezentat astfel:
CodFz
NrFact. De asemenea, pe o factur se pot regsi mai multe mrfuri aprovizionate, fapt
pentru care putem spune c ntre atributele Nrfact i CodMarfa se stabilete o dependen
funcional multipl (Nrfact
CodMarfa).
2.2. Dependene multivaloare
Se consider relaia R(X,Y,Z), unde X,Y,Z sunt atributele acesteia (simple sau compuse). Fie
xi,yi,zi valorile atributelor X,Y i Z [Dollinger].
Spunem c exist o dependen multivaloare a atributului Z fa de Y, notat YZ, dac
pentru orice valori x1, x2, y, z1 i z2, x1x2, z1z2, astfel nct tuplurile (x1,y,z1) i (x2,y,z2) fac parte
din relaia R, atunci i tuplurile (x1,y,z2) i (x2,y,z1) fac parte din relaia R.
Din simetria definiiei rezult c dependena multivaloare YZ implic dependena
multivaloare YX.
De exemplu, n relaia R(Serie_Facultate, NrMatricolStudent, NumeProfesor) exist
dependene multivaloare, deoarece la seria unei faculti sunt nscrii mai muli studeni, care
studiaz cu mai muli profesori la materii diferite. Dac fiecare student studiaz cu toi profesorii,
atunci exist urmtoarele dependene multivaloare:
Serie_Facultate NrMatricolStudent
Serie_Facultate NumeProfesor
n mod practic, dac exist tuplurile (EAM_SeriaA, NrMatricol1, Profesor_Info) i
(EAM,_SeriaA, NrMatricol2, Profesor_Mate) atunci vor exista i tuplurile (EAM_SeriaA,
NrMatricol1, Profesor_Mate) i (EAM_SeriaA, NrMatricol2, Profesor_Info).
n general dependenele multivaloare sunt mai dificil de identificat i mai rar ntlnite n practic,
fapt ce ne determin s nu insistm mai mult asupra lor.

2.3 Formele normale


Teoria clasic a normalizrii este construit n jurul a cinci forme normale. E.F.Codd, printele
modelului relaional, a definit iniial trei forme normale [Fotache]: FN1, FN2 i FN3. Apoi, forma
normal Boyce-Codd, numit astfel dup numele celor doi specialiti n domeniu, s-a dorit a fi o
form generalizat a FN2 i FN3. Aceste patru forme normale sunt asociate dependenelor
funcionale.
Formele normale 4 i 5 (FN4, FN5), asociate n literatura de specialitate cu numele cercettorului
Fagin, se bazeaz pe dependenele multivaloare.
Muli specialiti consider c pentru elaborarea unei baze de date relaionale sunt suficient de
parcurs primele trei forme normale. Plecnd de la acest prezumie, n continuare vom prezenta
doar primele trei forme normale (FN1, FN2 FN3).
Forma normal 1 (FN1) O relaie (tabel) este n prima form normal dac toate atributele sale
sunt atomice (elementare, care nu se mai pot descompune) i nerepetitive. Un atribut este
considerat elementar atunci cnd descompunerea lui nu prezint interes pentru aplicaia ce se va
dezvolta.
Exemplu: Fie tabelul Furnizor (CodFz, DenFz, Adresa)
Localitate Strada Numr
CodFz

DenFz

Adresa

SC Agro SA

Bucureti, str. Popa Nan, nr.3

SC Muntenia SA

Bucureti, str. Alexandriei, nr.36

SC Tram SA

Braov, str. Biserica Neagr, nr.10

----------

--------------

--------------

Tabelul Furnizor nu respect FN1 dac exist cerine privind gruparea furnizorilor dup
localiti, deoarece este mult mai greu s extragi aceast informaie dintr-o adres complet.
Forma normal 2 (FN2). O relaie este n cea de-a doua form normal dac respect FN1 i orice
atribut non-cheie este total dependent fa de cheia primar a relaiei.
Exemplu:
Fie tabelul Marfuri_Facturi (NrFact, CodMarfa, DenMarfa, UM, Calitate, CantFact).
NrFact

CodMarfa

DenMarfa

UM

Calitate

CantFact

10

100

Portocale

kg

70

10

200

Kiwi

kg

90

11

400

Pomelo

buc

50

11

100

Portocale

kg

---------

---------------

---------------- ----

100

-----------

---------------

Analiznd aceast relaie, pot fi identificate urmtoarele dependene funcionale:

CodMarfa
DenMarfa, UM, Calitate, deoarece fiecare cod unic de marf determin o
valoare pentru denumirea mrfii, unitate de msur, calitate.

NrFact, CodMarfa
CantFact, atributul compus (Nrfact, CodMarfa) determin funcional
CantFact.n mod practic, unei facturi nu i se poate asocia o cantitate facturat total, altfel
spus ntre NrFact i CantFact nu poate exista o dependen funcional.

Pornind de la aceste dependene se deduce c relaia Marfuri_Facturi are o cheie primar compus,
format din atributele NrFact i CodMarfa.
n mod practic, tabelul Marfuri_Facturi nu respect FN2 deoarece se poate observa dependena
funcional a atributelor DenMarfa, UM, Calitate fa de CodMarfa, ceea ce implic dependena
parial a acestor atribute fa de cheia relaiei format din NrFact i CodMarfa.
Aceast dependen funcional parial are drept consecine o serie de anomalii:

anomalia de adugare nu se pot aduga noi mrfuri atta timp ct acestea nu sunt
aprovizionate, altfel spus nu apar pe o factur;

anomalia de tergere - dac se terge nregistrarea corespunztoare pentru o singur marf


existent, atunci se pierd i informaiile referitoare la denumire marf, unitate de msur i
calitate;

anomalia de modificare - dac se cere modificarea calitii pentru o marf, trebuie cutate
toate nregistrrile n care se regsete aceasta, ceea ce implic parcurgerea relaiei n
ntregime.

Figura 2.1 Dependene funcionale identificate


Aceste anomalii se pot elimina prin descompunerea relaiei Marfuri_Facturi n relaiile:
Marfuri (CodMarfa, DenMarfa, UM, Calitate)
MarfurFacturate (NrFact, CodMarfa, CantFact)

Forma normal 3 (FN3). O relaie este n FN3 dac respect FN2 i toate atributele non-cheie
sunt dependente direct de cheia primar. Altfel spus FN3 interzice dependenele tranzitive.
Exemplu:
Fie tabelul Facturi_Furnizori (NrFact, DataFact, CodFz, DenFz, Localitate)
NrFact

DataFact

CodFz

DenFz

Localitate

10

01/03/2009

SC Agro SA

Bucureti

11

05/03/2009

SC Agro SA

Bucureti

12

12/03/2009

SC Tram SA

Braov

----------

--------------

--------------

Pot fi identificate urmtoarele dependene funcionale:

NrFact
DataFact, CodFz, deoarece fiecare numr de factur determin o valoare pentru
data facturii i codul furnizorului care a emis acea factur.

CodFz DenFz, Localitate, deoarece fiecare cod unic de furnizor determin o valoare
pentru denumirea furnizorului i Localitatea acestuia.

Se observ ca ntre atributele NrFact i DenFz, Localitate apar dependene tranzitive, fapt ce ne
determin s afirmm c tabelul Facturi_Furnizori nu respect FN3.
Aceste dependene funcional tranzitive au drept consecine o serie de anomalii identificabile la
adugarea, modificarea sau tergerea nregistrrilor din cadrul acestui tabel.
Aceste anomalii pot fi eliminate prin descompunerea relaiei Facturi_Furnizori n relaiile:
Facturi (NrFact, DataFact, CodFz)
Furnizori (CodFz, DenFz, Localitate)

2.4 Cadrul metodologic de proiectare a modelului relaional prin normalizare


Proiectarea unei baze de date relaionale prin normalizare se poate realiza prin:

descompunerea tabelului relaional iniial n mai multe tabele, utiliznd formele normale
(FN1, FN2, FN3, FN4, FN5);
descompunerea tabelului relaional iniial n mai multe tabele, utiliznd matricea
dependenelor funcionale sau graful dependenelor.

2.4.1 Proiectarea modelului relaional prin normalizare utiliznd formele normale


Paii recomandai a fi realizai pentru proiectarea modelului relaional prin normalizare, utiliznd
formele normale sunt [Fotache]:
1. Inventarierea atributelor i constituirea tabelului relaional iniial (relaiei universale).
Se vor prelua toate atributele care fac obiectul problemei de rezolvat, din documentele
primare i situaiile de ieire.
2. Se determin cheia primar a relaiei i se reprezint toate dependenele funcionale ce
decurg de aici.
3. Se elimin atributele calculabile i cele repetitive astfel nct tabelul iniial s respecte
FN1.
4. Se elimin dependenele funcionale pariale prin descompunerea tabelului iniial n
tabele cu structuri mai simple, care s respecte FN2.
5. Se elimin dependenele funcionale tranzitive prin descompunerea tabelelor din etapa
anterioar astfel nct acestea s respecte FN3.
6. Se identific eventualele dependene multivaloare i se elimin astfel nct s tabelele s
respecte FN4, respectiv FN5.
2.4.2 Proiectarea modelului relaional prin normalizare utiliznd matricea dependenelor
funcionale
Demersul metodologic de proiectare a unui model relaional prin normalizare utiliznd matricea
dependenelor funcionale sau graful dependenelor presupune parcurgerea urmtoarelor etape:
1. Inventarierea atributelor. ntr-un dicionar al datelor se vor prelua toate atributele care fac
obiectul problemei de rezolvat, din documentele primare i situaiile de ieire.

2. Specificarea regulilor de gestiune diverse restricii/condiii impuse datelor. La nivelul


acestei etape, algoritmii de calcul sunt asociai i ei regulilor de gestiune.
3. ntocmirea dicionarului de date de ctre proiectantul bazei de date care va urmri
respectarea urmtoarelor reguli:

atributele sunt nscrise o singur dat;

sunt eliminate atributele sinonime;

sunt eliminate atributele calculate.

4. Stabilirea cheilor primare.


5. Stabilirea dependenelor funcionale ce pot fi descrise printr-un graf al dependenelor
sau n cadrul unei matrice a dependenelor funcionale.
6. Pentru atributele izolate se vor cuta grupuri de atribute ce pot constitui determinani ai
acestora.
7. Formarea tabelelor - cu fiecare cheie primar i atributele determinate direct i netranzitiv
se va forma un tabel.
8. Identificarea atributelor cu rol de cheie extern.
9. Definitivarea modelului relaional.
EXEMPLU:
O societate comercial dorete s-i informatizeze activitatea de aprovizionare cu mrfuri de la
furnizori. Furnizorii societii, se identific printr-un cod unic, nume, localitate, telefon i cont
bancar.
Aprovizionarea cu mrfuri se realizeaz n baza facturilor primite de la furnizori, fiecare Factur
identificndu-se printr-un numr unic, dat factur, data scadenei, codul, denumirea, contul
bancar al furnizorului, codul, denumirea i contul clientului, codul, denumirea, unitatea de msur,
cantitatea i preul mrfurilor facturate, valoarea acestora, valoare TVA i valoarea total a facturii.
Pentru fiecare zi de ntrziere (fa de data scadenei) a plii facturii, furnizorii percep o penalizare
de 1% din valoarea total a facturii.
Nomenclatorul mrfurilor include referine la codul de marf, denumire marf, unitatea de
msur i calitate. Nomenclatorul va conine maxim 100 de mrfuri distincte ale cror uniti de
msur sunt exprimate n kg, buc, litri.
Plata facturii se realizeaz printr-o Chitan, conform facturii emise, n care se precizeaz numrul
chitanei, data chitanei, suma pltit, denumirea i contul emitentului, denumirea i contul
beneficiarului (furnizorului). Societatea pltete cu un astfel de document o singur factur.
Se cere s se proiecteze baza de date relaional prin normalizare utiliznd matricea dependenelor
funcionale.
n acest scop s-au parcurs paii urmtori (descrii n cadrul metodologic de proiectare a modelului
relaional prin normalizare):
1. Inventarierea atributelor. Pe baza informaiilor referitoare la activitatea de aprovizionare cu
mrfuri de la furnizori, se poate ntocmi dicionarul de atribute:

Nr. Atribut
Crt.

Semnificaie

1.

CodFz

Cod Furnizor

2.

CodBenef

Cod Beneficiar

3.

NumeFz

Nume Furnizor

4.

Localitate

Localitate Furnizor

5.

Telefon

Telefon Furnizor

6.

ContBancar

Cont Bancar Furnizor

7.

NrFact

Numr Factur

8.

DataFact

Data Facturii

9.

DataScad

Data Scaden Factur

10.

CantitateFact

Cantitate Facturat

11.

PretFact

Pret Facturare

12.

CotaTVA

Cota TVA

13

Valoaremarfa

Valoare Marf Facturat

14.

TVA

Valoare TVA

15.

ValoareFactura

Valore Total Factur

16.

CodMarfa

Cod Marf

17.

DenMarfa

Denumire Marf

18.

UM

Unitate de Msur

19.

Calitate

Calitate Marf

20.

Nrchit

Numr Chitan

21.

DataChit

Data Chitan

22.

SumaPl

Suma Pltit

23.

TotalSumePl

Sume Totale Pltite

24.

Penalizare

Penalizare Factur

25

Nr_zile-intarz

Nr. Zile de ntrziere

2. Specificarea regulilor de gestiune:


O factur este emis de un singur furnizor.
O factur poate conine mai multe mrfuri, iar o marf se poate regsi pe mai multe
facturi.

O factur poate fi pltit ealonat.


O chitan este conform cu o factur emis de furnizor.
Algoritmi de calcul:
Valoare_Marf=CantitateFact*PretFact
TVA=CotaTVA*Valore_Marfa
ValoareFactura=Valoare_Marfa+TVA
Nr_zile_ntarz=DataChit - DataScad
Penalizare =Nr_zile_intarziere*ValoareFactura*1/100
Totalsumepl= suma pl
3. ntocmirea dicionarului de date, se va realiza pe baza urmtoarelor reguli:

fiecare atribut este nscris o singur dat;


sunt eliminate atributele sinonime (n exemplul prezentat, CodFz i CodBenef sunt
sinonime, deci se va reine doar unul dintre acestea CodFz);
nu sunt preluate atributele calculate (Valoare_Marfa, TVA, ValoareFactura,
Nr_zile_ntarz, Penalizare, Totalsumepl).

Dicionarul de date (DD): CodFz, NumeFz, Localitatea, ContBancar, Telefon, NrFact, DataFact,
DataScad, CantitateFact, PretFact, CotaTVA, CodMarfa, DenMarfa, UM, Calitate, NrChit,
DataChit, SumaPl.
4. Stabilirea cheilor primare: CodFz, NrFact, CodMarfa, NrChit.
5. Stabilirea dependenelor funcionale.
a. Graful dependenelor funcionale simple:

b. Graful dependenelor funcionale multiple:


Nrfact
NrFact

CodFz
NrChit

CodMarfa
NrFact

NrFact
CodMarfa

6. Atributele izolate: CantitateFact, PretFact i CotaTVA vor fi determinate de un grup de


atribute aa cum sunt reprezentate mai jos.

Ne punem ntrebarea De ce Nrfact nu determin funcional, spre exemplu, Cantitatefact?. n


mod practic, o factur poate conine mai multe mrfuri achiziionate i, prin urmare, Nrfact nu va
determina o singur valoare pentru CantitateFact. Pentru o factur (NrFact) se poate asocia o
valoare total facturat, dar nu se pot nsuma cantitaile, preurile, CotaTva a mrfurilor facturate.
Atributul compus (Nrfact, CodMarfa) reprezint o cheie primar care se va aduga cheilor
identificate n etapa precedent.
Dependenele funcionale identificate anterior se vor reprezenta ntr-o Matrice a
dependenelor funcionale (reprezentat ntr-o form simplificat, fr a include dependenele
funcionale multiple i dependenele funcionale multiple tranzitive, n figura 2.2). Liniile i
coloanele acestei matrici sunt reprezentate de atributele din dicionarul de date i atributele
compuse care au fost identificate ca fiind chei primare. Cheile primare sunt marcate prin caracterul
#. Pentru fiecare cheie primar, pe acea linie, sunt reprezentate tipurile de dependene funcionale
identificate astfel:
1- dependenele funcionale simple
1T - dependenele funcionale simple tranzitive

Figura 2. 2 Matricea dependenelor funcionale


7. Formarea tabelelor. Fiecare cheie primar i atributele determinate direct i netranzitiv
vor forma un tabel.
8. Identificarea cheilor externe (atributele subliniate prin linie discontinu la nivelul
modelului relaional).
9. Definitivarea modelului relaional.
FURNIZORI (CodFz, NumeFz, Localitate, Telefon, ContBancar)
FACTURI (NrFact, DataFact, DataScad, CodFz)
MARFURI(CodMarfa, DenMarfa, UM, Calitate)
MARFURIFACTURATE (CodMarfa, NrFact, CantitateFact, PretFact, CotaTVA)
CHITANTE (NrChit, DataChit, SumaPl, NrFact)

SGBD Access 2013: FORMULARE - Forms


Formularul (Form) este un
obiect ce permite introducerea
datelor, afiarea acestora,
controlul actualizrii datelor
introduse n tabele sau
controlul ntregii aplicaii

Formularele asigur:

Interfa prietenoas cu utilizatorul final,


realizat prin intermediul diferitelor
controale (butoane, casete text, etc.) sau
altor elemente grafice incorporate;
Actualizarea concomitent a mai multor
tabele prin intermediul subformularelor;
Reguli de validare suplimentare celor
definite la nivelul tabelelor.

SGBD Access 2013: Clasificare


Dup sursa de date:
Formulare legate (bound)- permit afiarea sau actualizarea datelor din
tabele;
Formulare nelegate (unbound)- destinate afirii sau editrii unor date
care nu sunt stocate n tabele (mesaje, informaii despre sistem, date
necesare unui raport etc.)

VIZUALIZAREA FORMULARELOR

1.Form View
2. Layout View
3. Design View

SGBD Access 2013:


Vizualizarea formularelor

Design View

Access 2013: Crearea formularelor

1. Selectare tabel/interogare ( sursa formular)


2. CREATE din meniul principal
3. Se opteaz pentru una din variantele de
realizare a formularului: Form, Form Design,
Blank Form, Form Wizard, Navigation,
More Forms: Multiple Items, Datasheet, Split
Form, Modal Dialog

4. Se executa operatiile in functie de varianta


aleasa
5. Save
6. Run

a) CREARE CU FORM
Selectarea unei tabele sau interogari (ca surs a
formularului ) din Panoul de navigare
Create butonul Form din grupul Forms

CREARE CU SPLIT FORM


Selectarea unei tabele sau interogari (ca surs a
formularului ) din Panoul de navigare
Create Split Form din grupul More Forms

CREARE CU MULTIPLE ITEMS


Selectarea unei tabele sau interogari (ca surs a
formularului ) din Panoul de navigare
Create butonul Multiple Items din grupul More
Forms

CREARE CU BLANK FORM


Selectarea unei tabele sau interogari (ca surs a
formularului ) din Panoul de navigare
Create butonul Blank Form din grupul Forms

CREAREA FORMULARELOR IN FORM WIZARD


PASI:
1. CREATE
2. FORM WIZARD
3. SELECTARE SURSA FORMULAR ( TABEL SAU INTEROGARE)
4. SPECIFICAREA CMPURILOR INCLUSE IN FORMULAR
5. NEXT
6. SPECIFICAREA DISPUNERII INFORMATIILOR (coloan, tabel,
foaie de date, aliniate) si NEXT
7. ATRIBUIRE NUME PENTRU FORMULARUL CREAT
8. SPECIFICARE DACA SE VIZUALIZEAZ N D.V. sau DESCHIDERE
9. FINISH

CREAREA FORMULARELOR IN FORM DESIGN


PASI:

1. CREATE
2. FORM DESIGN
3. ADD EXISTING FIELDS
4. SELECTAREA TABELULUI, A ATRIBUTELOR DIN
ACESTA SI GLISAREA LOR IN ZONA DIN
FORMULAR
5. CREAREA CONTROALELOR NOI/ SECTIUNI NOI
IN FORMULAR PRIN UTILIZAREA BUTOANELOR DE
CONTROL
6. FORMATAREA TEXTULUI DIN FORMULAR
7. SAVE SI RUN

Structura unui formular

I. Form Header- Antet de formular (titlu, nume


utilizator, adresa, data, logo,...)
II.Page Header- Antet de pagin ( informatii despre
pagina)
III. Detail - Seciunea de dataliu (sunt afisate numele
si valorile cmpurilor de date din tabelele sau
interogrile consultate)
IV. Page Footer - Subsol de pagin
(text ce apare la sfritul fiecrei pagini).

V. Form Footer - Subsol de formular


(text ce apare la sfritul fiecrui formular, cum ar fi
Semnatura sau alte informaii rezumative).

STRUCTURA FORMULARELOR

Adaugarea de noi elemente in macheta de formular/ sau


eliminarea unora:
- Clic dreapta mouse si afisare Meniu de context
- Selectare Page Header/Footer sau
Form Header/Footer

STRUCTURA FORMULARELOR

CONTROALE n formulare
Controalele sunt obiecte grafice (elemente vizuale)
ce sunt incluse n formulare sau rapoarte, n scopul
editrii/afirii datelor sau executrii unor aciuni
Exp.: etichete (Label), caset text (Text Box),
butoane(Button), caset combinat ( Combo Box),
caset list (List Box), Subform/Subreport,
Imagine, Linie, etc).
Adugarea controalelor se poate face numai n
etapele de creare sau modificare a formularelor

Crearea unui control


1. Se deschide formularul in Design View, din meniul
Design Controls se selecteaz controlul dorit;

2. Se descrie, cu ajutorul mouse-lui, o zon dreptunghiular


pe suprafaa formularului, definind astfel poziia i
dimensiunea controlului
3. Se executa operatiile specifice de creare a controlului
respectiv.

TIPURI DE CONTROALE

In cadrul unui formular pot fi inserate trei tipuri de


controale:
I. Nelegate :
etichet, buton de comand, imagine inserat pe
fundalul formularului.
II. Legate -afieaza sau editeaza informaii din baza
de date :
- Campuri din tabele/interogari
- Mostenesc proprietatile campului respectiv
- Se pot modifica proprietatile prin Property Sheet

Inserarea unui control legat pe un formular


presupune parcurgerea urmtorilor pai:
1) Afiarea cmpurilor sursei de date,
selectnd din meniul Design Add Existing
Fields.
2) Selectarea cmpului sau grupului de
cmpuri din aceasta list i glisarea acestora
pe formular.

III. Calculate
folosesc expresii de calcul pentru generarea
rezultatelor.
expresiile de calcul se introduc n proprietatea
Control Source a oricrui control.
Ex. Dac n formularul Factura se dorete
afiarea unui cmp Total factura.....
expresia va fi: Total factura = Sum([Valoare])
Aceast expresie poate fi introdus direct n
proprietatea Control Source sau poate fi
construit cu Expression Builder, selectnd
butonul Use Control Wizards ().

Proprietile controalelor Formularelor

Format, Data, Events, Other

Proprietile controalelor: Format(1)


Format - specific modelul (masca) de afiare a datelor (numai
pentru casetele text);
Decimal Places - indic numrul de zecimale cu care vor fi
afiate datele (numai pentru casete text);
Caption - conine textul afiat de control (numai pentru
controalele needitabile: etichete, butoane etc.);
Visible - determin afiarea sau nu a controlului n timpul
execuiei formularului;
Left - stabilete coordonata orizontal a colului stnga-sus al
controlului;
Top - indic poziia pe vertical a colului stnga-sus;
Width - stabilete limea controlului;
Height - stabilete nlimea controlului;
Back Style - determin modul de afiare: control normal sau
transparent;

Proprietile controalelor: Format(2)


Back Color - stabilete culoarea de fundal a controlului;
Special efect -specific efectele tridimensionale ale ctrl-ului;
Border Style - indic tipul liniei folosit la trasarea bordurii
controlului (transparent, continuu, punctat etc.);
Border Color - determin culoarea bordurii;
Border Width - grosimea bordurii;
Font Color - culoarea textului afiat de control;
Font Name - tipul fontului aferent textului din control;
Font Size - dimensiunea fontului;
Picture - specific numele i calea fiierului grafic ce va fi
afiat n interiorul controlului (numai pentru butoane i controale de
tip imagine);
Text Align stabilete modul de aliniere a textului n interiorul
controlului.

Proprietile controalelor: Data(1)


Control Source - conine sursa de date a controlului i poate fi:

Numele unui cmp (pentru controale legate);

O expresie de calcul precedat de semnul "=" (pentru


casete text nelegate).

Proprietile controalelor: Data(2)


Input Mask- indic formatul folosit la introducerea datelor
(numai pentru casete text)
Default value - specific valoarea implicit (valoarea prin
lips) a controlului.
Validation Rule - conine regula dup care se face validarea
datelor introduse n control. La execuia formularului, mai nti se
verific regula de validare a controlului i apoi cea a cmpului ataat;
Validation Text - specific mesajul ce va fi afiat, atunci cnd
regula de validare este nclcat;
Enabled - activeaz sau dezactiveaz controlul. Un control
dezactivat va fi inaccesibil la execuia formularului;
Locked - servete la protejarea datelor afiate de control
(controlul va deveni read-only).

Proprietile controalelor: Event


Proprieti din categoria Event - conin denumirile funciilor,
procedurilor eveniment sau macro-urilor, ce vor fi executate la
declanarea evenimentelor ataate
Descriere

BeforeUpdate

Proprietatea
GotFocus
eveniment
BeforeUpdate

Change

On Change

Se declaneaz n momentul n care datele din control (caset text


sau caset combinat) sunt modificate.

Enter

On Enter

Evenimentul este nregistrat n momentul accesrii controlului n


vederea editrii datelor (naintea activrii sale).

Exit

On Exit

Declanat, atunci cnd se prsete controlul curent n


vederea accesrii altui control din formular.

Got Focus

On Got Focus

Lost Focus

On Lost Focus

Apare n momentul focalizrii controlului. Difer de evenimentul On


Enter prin aceea c se declaneaz chiar i atunci cnd utilizatorul
comut ntre o alt fereastr i formularul curent.
Evenimentul este nregistrat la defocalizarea controlului (fie prin
trecerea la alt control din cadrul formularului, fie prin activarea altei
ferestre).

Enter
Eveniment

Exit

LostFocus

Apare naintea salvrii datelor din control n cmpul ataat acestuia


(validarea datelor introduse n control).

Proprietile controalelor: Other


Name - conine numele controlului. La creare, fiecare control
primete un nume unic, format din tipul su plus un numr de ordine
(ex.: TextBox5). Utilizatorul poate modifica acest nume, schimbndu-l cu
unul mai sugestiv. Controalele legate, generate automat de Wizards, au
numele identice cu denumirile cmpurilor ataate;
Status Bar Text - specific mesajul afiat n bara de stare, n
momentul selectrii controlului;
Tab Stop - dac este setat pe valoarea Yes, atunci controlul poate fi
accesat cu ajutorul tastei TAB;
Tab Index - specific numrul de ordine al controlului, n funcie de
care acesta va fi accesat cu ajutorul tastei TAB. Toate controalele
editabile vor primi un numr de ordine unic, la creare. Acest numr poate
fi modificat fie prin aceast proprietate, fie prin opiunea View-TabOrder

CREAREA UNEI CASETE CU LISTA de VALORI SAU A UNEI CASETE COMBINATE

PASI:
1. Afisarea formularului in Design View
2. Selectare List Box sau Combo Box din Design
Controls
3. In fereastra FORM se trage un dreptunghi in locaia
unde vrem s apar controlul
4. Specificarea sursei de date pentru control:
Tabel/Interogare
Date introduse de utilizator in caseta sau lista
si apoi NEXT

5. Dup caz, se selecteaz tabelul/ interogarea


ce contine valorile din list sau caset, si NEXT
6. Selectarea cmpului ce contine valorile pe
care le dorim afisate in control, si NEXT
7. Selectare sageat cu lista primei sortri
(ASCENDING/DESCENDING) si NEXT
8. Reglarea limii coloanei, dac este cazul,
debifare Hide key column, NEXT

9. Se precizeaz dac:
Se vor afia valorile coloanei
Sau se vor stoca ntr-un cmp al unui tabel
10. Dac s-a ales un cmp acesta va fi specificat,
si NEXT
11. Se atribuie un nume listei si FINISH

Liste derulante n Design View: ComboBox


Proprietile controlului ComboBox:
Column Widths - (valorile sunt separate de caracterul
;) specific dimensiunea fiecrei coloane din list
List Width - conine limea total a listei derulante.
Row Source Type- specific tipul sursei de date pentru
valorile din list (tabel/interogare, valori definite de utilizator,
realizrile unui cmp).
Row Source- conine denumirea tabelei, a interogrii
(sunt admise i fraze SQL Select) sau valorile predefinte de
utilizator (separate de caracterul ;).
Bound Column va conine numrul de ordine al
coloanei care va actualiza cmpul ataat controlului (coloana
respectiv poate fi ascuns).

Formulare si Subformulare
Rolul subformularelor este de a actualiza mai multe tabele prin
intermediul unei singure ferestre (formular). Subformularele sunt
create n general pentru anumite tabele dependente - tabele n care
cmpul comun este cheie primar n relatia de tip 1 i cheie extern n
cadrul relaiei de tip n.
Definirea unui subformular presupune nglobarea (includerea)
unui formular n cadrul altui formular, primul devenind
subformular, iar al doilea formular principal.
Avantaje:
Posibilitatea actualizrii mai multor tabele printr-un singur
formular.
Sincronizarea automat a subformularului cu formularul principal
Actualizarea automat a cmpului cheie extern din subformular,
cu valoarea deinut de cmpul cheie primar din formularul principal;
filtrarea automat a nregistrrilor din subformular, n funcie de
valoarea cheii primare din formularul principal.

Formulare si Subformulare

V1. Formulare si Subformulare


1) Se deschide n modul Design View, formularul ce se
dorete a fi formular principal;
2) Se selecteaz din CONTROLS - SUBFORM3) Se trage un dreptunghi n zona unde dorim amplasarea
subformularului (in sectinea Detail)
4) Apare fereastra SUBFORM WIZARD
5) Alegerea unei variante din:
Use existing Tables and Queries
Use an existing form
6) Selectarea formularului care dorim sa fie subformular
7) NEXT
8) DEFINE MY OWN si selectarea cmpurilor de legtur
9) FINISH
10) Se salveaz formularul principal

Orice modificare fcut ulterior asupra


subformularului, ca obiect de tip formular, se va
reflecta automat i n formularul principal.
Sincronizarea formular-subformular se realizeaz prin
intermediul cmpurilor de legtur: cheia primar
din sursa de date a formularului principal i cheia
extern din sursa de date aferent subformularului.
Denumirile acestor cmpuri sunt nscrise automat de
Access n proprietile Link Master Field i Link Child
Field ale controlului de tip Subform din formularul
principal.

V2. Formular cu subformular

1. Se deschide n modul Design View, formularul ce se


dorete a fi formular principal;
2. n seciunea DETAIL a acestuia se adaug suformularul. Adugarea
poate s fie fcut prin tehnica drag&drop (glisare cu mouse-ul) sau
cu ajutorul unui control de tip Subform/Subreport.
3. Se realizeaz legtura dintre formular i subformular n cadrul
proprietilor suformularului n categoria DATA, proprietatea Link
Master Fields i Link Child Fields (n general cu numele cmpului
cheie primar respectiv cheie extern).
4. Se salveaza operatiile executate
5. RUN

Formulare cu subformulare

CREAREA BUTOANELOR IN FORMULARE


1. DESCHIDERE FORMULAR IN Design VIEW
2. Selectare control - buton
3. Deplasare mouse in formular la locul dorit si
clic
4. Apare fereastra Command Button Wizard de
unde se alege categoria si actiunea si apoi
NEXT
5. Se alege TEXT sau PICTURE si NEXT
6. Se atribuie un nume
7. Se salveaza si FINISH

BUTOANE

TEMA: SGBD-ACCESS- RAPOARTE

Obiectele de tip raport (Reports)


se creaz n etapa de exploatare a bazelor
de date. Coninutul lor poate fi vizualizat
pe ecran, sau se poate lista la imprimant

Cu Microsoft Access se pot realiza obiecte


de tip raport utiliznd opiunea CREATE din
meniul principal i apoi alegerea uneia din
variantele afiate n fereastra REPORTS:

Tipuri de rapoarte

Vizualizarea obiectelor de tip raport

Moduri de vizualizare rapoarte :


1. Report View - elementele componente, fr
a fi afiate i marginile acestuia.
2. Print Preview cum apare la imprimant
3. Layout View - afieaz coninutul
raportului, marcndu-se cu ajutorul unor linii
punctarea marginilor lui, permite
redimensionarea controalelor, putndu-se
realiza ncadrarea lor n pagin.
4. Design View - permite editarea i
formatarea coninutului raportului

Crearea obiectelor de tip raport

Paii necesari:
1. Selectarea opiunii CREATE din
meniul principal.
2. Selectarea sursei de date
(tabel/interogare)
3. Alegerea uneia din variantele de
realizare: Report, Labels, Blank Report,
Report Wizard, Report Design.
4. Salvarea obiectului nou creat (cu
ajutorul opiunii SAVE).

SGBD Access : Crearea rapoartelor n modul


REPORT WIZARD

Paii de parcurs:

1. Se selecteaz opiunea CREATE din


meniul principal
2. Se actioneaza butonul REPORT
WIZARD, aprnd pe ecran fereastra
REPORT WIZARD

RAPOARTE

3. n caseta Tables/Queries:
a. Se selecteaz tabelul sau interogarea ce va
sta la baza proiectrii raportului.
b. n fereastra Available Fields apar afiate
cmpurile de date din structura tabelului de
date selectat, de unde cu ajutorul butoanelor
> sau >> se vor transfera n fereastra
Selected Fields cmpurile pe care dorim s
le afim n raport,.
c. Apoi se acioneaz butonul NEXT.

4. Dac este necesar se va specifica gruparea


nregistrrilor dup anumite cmpuri de date. n
exemplul dat gruparea clienilor dup denumire
client. Se pot specifica maxim 4 niveluri drept
criterii de grupare i apoi se acioneaz NEXT.
Gruparea datelor = cutarea tuturor
nregistrrilor (rndurilor) din sursa de date care
conin aceeai valoare pentru cmpul stabilit
drept criteriu de grupare i afiarea lor,
consecutiv, n raport.
5. Actionare buton Summary Options

6. Specificarea ordinii nregistrrilor n fiecare grup, sortnd

pn la maxim 4 cmpuri simultan, dup care se


precizeaz dac ordinea este cresctoare sau descresctore

7. Se precizeaz cmpurile din cadrul grupului, pentru


care se vor calcula totaluri, subtotaluri , AVG,MAX,MIN
in Summary Options, dac e cazul, OK i apoi NEXT

8.

Se stabilete tipul de machet a raportului (Layout) i


orientarea (Orientation) vertical / orizontal a structurii
raportului pe coala de imprimare i apoi NEXT

8. Se atribuie un nume raportului, se precizeaz


dac se previzualizeaz sau se modific n modul
design, dup care se acioneaz butonul FINISH.

Raportul obinut este prezentat n figura .....

Crearea rapoartelor n modul Report Design

Pai de parcurs:
1. Se selecteaz opiunea CREATE din meniul
principal
2. Actionarea butonului REPORT DESIGN i apoi
DESIGN
3. Apare pe ecran fereastra REPORT, unde este
generat un raport gol, n cadrul cruia utilizatorul i
poate defini propriile seciuni i controale.
4. Add Existing Fields permite vizualizarea
cmpurilor sursei de date care vor fi preluate n
interiorul raportului (de obicei n seciunea Detail).

5. Adaugare: antet/subsol de raport


(Report Header/Footer), sau antet/subsol
de pagin (Page Header / Footer)
- Se activeaz poziionnd mouse-ul pe
suprafaa raportului, apoi clic dreapta pe
butonul mouse-lui i selectarea opiunii
Report Header/Footer sau
Page Header / Footer din fereastra afiat

Acest mod de lucru mparte raportul n


seciuni prin intermediul crora se
controleaz ce elemente apar n raport i
modul n care sunt formatate.
6. Se gliseaz cmpurile din tabelul surs
/ interogarea surs n locul dorit.
7. Se salveaza raportul cu un nume.
8. Se lanseaz n executie.

Structura raportului-seciuni
I. Report Header- Antet de raport (titlu,
nume utilizator, adresa,...)
II. Page Header- Antet de pagin
(denumirea coloanelor, data, numar
pagina)
III. Group Header - Antet de grup
(un text ce apare naintea fiecrui grup de
nregistrri, de exp. Numele client: ,
Numar factur:, etc.)

Structura raportului

IV. Detail - Seciunea de dataliu (sunt


imprimate valorile cmpurilor de date din
tabelele sau interogrile consultate)
V. Group Footer - Subsol de grup
(text ce apare la sfritul fiecrui grup de
nregistrri, de exemplu : Subtotal pe
factur, Subtotal pe client , etc.)

Structura raportului

VI. Page Footer - Subsol de pagin


(text ce apare la sfritul fiecrei pagini).
VII. Report Footer - Subsol de raport
(text ce apare la sfritul fiecrui raport, cum
ar fi Total general pe clienti......... ,
sau alte informaii rezumative).

Fiecare seciune are o caset afiat n


partea stng a titlului pe care o putem
selecta executnd clic pe ea.
Seciunile de antet i subsol sunt pereche.
Dac este selectat o seciune, orice
modificri efectuate apar numai n cadrul ei.

Un raport creat n modul Report Wizard poate fi


modificat oricnd n modul de lucru Report Design
prin intermediul unor controale: asociate,
neasociate sau calculate.
Controlul asociat ( bound control) se refer la
cmpurile de date dintr-un tabel sau interogare.

Controlul neasociat (unbound control)se refer la


etichetele sau casetele text introduse de utilizator.
Controlul calculat (calculate control) cuprinde
toate calculele din raport cum sunt: subtotaluri,
totaluri generale, procente, medii aritmetice, etc.

EFECTURAEA UNOR CALCULE NTR-UN RAPORT:


1. Pe formularul deschis n modul Design View se adaug un
control de tip caseta text(Text Box) n locul dorit.
Controalele se gsesc n cadrul meniului DESIGN n
categoria CONTROLS.
2. Se deschide fereastra de proprieti (PROPERTY SHEET)
de pe bara de instrumente Report Design, n categoria
TOOLS, sau din meniul contextual aprut la execuia unui
clic dreapta pe controlul caset text (Text Box).
3. Se alege proprietatea CONTROL SOURCE din categoria
de proprieti DATA i se apas butonul Expression
Builder
4. Clic pe butonul cu semnul =
5. Se introduc valori i operatori n funcie de formula de
calcul necesar
6.OK , CLOSE si RUN

CREAREA UNUI GRUP SAU A UNEI SORTARI INTR-UN RAPORT

1. Afiarea raportului creat anterior in vederea Layout


2. DESIGN de sub Report Layout Tools
3. Group&Sort din Grouping&Totals
4. Add a group/Add a sort
5. Clic pe Select field de pe bara Group on
6. Selectarea cmpului dup care se face gruparea
sau sortarea
7. Pentru efectuarea unor grupri mai complexe
actionarea butonului More si apoi selectarea
optiunilor dorite pentru grupare in continuare
8. Close

EXEMPLU
1. Afiarea raportului creat anterior, n
vederea Layout.

2. Selectare DESIGN de sub


Report Layout Tools.

3. Group&Sort.

4. Add a group/Add a sort.

5. Select field de pe bara Group on.

6. Dup selectarea cmpului dup care se face


gruparea sau sortarea apare pe ecran macheta
raportului cu diverse optiuni, de unde se vor
selecta cele dorite.

7. Pentru efectuarea unor grupri mai complexe sau pentru


nsumri se acioneaz butonul More i apoi selectarea
opiunilor dorite in continuare.......

8. SAVE
9. Lansarea n execuie afieaz raportul din figura...

Subrapoarte
Subrapoartele se pot insera att n seciunea
de detaliu, ct i n celelalte seciuni (inclusiv
n cele de grup).
Ca i la subformulare, se utilizeaz butonul
SUBFORM / SUBREPORT

din caseta de instrumente (controale)


CONTROLS, cu sau fr activarea Wizard
De asemenea, se poate aduce subraportul pe
suprafaa de lucru, ntr-una dintre seciunile
raportului principal, din fereastra obiectelor
utiliznd tehnica drag-and-drop.

Daca operaiunea de creare a unui


raport cu subraport se desfoar
fr Wizard, utilizatorul trebuie s
verifice dac proprietile
subraportului:
Link Child Fields i Link Master
Fields
au primit numele aceluiai cmp de
legtur dintre raportul principal i
subraport.

PASI- CREARE RAPORT CU SUBRAPORT


1. AFISARE RAPORT PRINCIPAL IN Design View
2. SELECTARE DIN CONTROLS SUBREPORT/Subform
3. TRASAREA UNUI DREPTUNGHI IN ZONA PENTRU
SUBRAPORT
4. APARE SUBREPORT WIZARD
5. USE EXISTING REPORT OR FORM
6. SELECTAREA SUBRAPORTULUI SI NEXT
CHOOSE FROM A LIST sau
DEFINE MY OWN
7. NEXT
8. ATRIBUIRE NUME PENTRU REPORT CU
SUBREPORT si SAVE

EXEMPLU Furnizori cu subraport Chitanta

ADAUGAREA UNEI FUNCTII DE TOTAL PENTRU UN GRUP

PASI
1. AFISAREA RAPORTULUI IN LAYOUT
2. DESIGN
3. SELECTARE CMP PENTRU CALCULE
4. ACTIONARE BUTON TOTALS
5. SELECTAREA FUNCTIEI DE TOTAL DORITE

6. SAVE

INSERAREA UNUI TITLU, NUMAR PAGINA, DATA.....

1. AFISAREA RAPORTULUI IN DESIGN VIEW


2. DESIGN
3. Selectare TITLE, PAGE NUMBERS, DATE
AND TIME, LOGO, INSERT IMAGE
4. SAVE

PROPRIETATILE RAPOARTELOR

a) FORMAT
Caption este utilizat pentru stabilirea unui titlu
afiat pe bara de titlu a ferestrei;
modul Print Preview de vizualizare a raportului;
Page Header i Page Footer sunt utilizate pentru
specificarea paginilor pe care se vor afia antetul,
respectiv subsolul de pagin (variante: toate
paginile; toate, mai puin prima; toate, mai puin
ultima; toate, mai puin prima i ultima);
Picture permite specificarea fiierului afiat pe
fundalul raportului;
Picture Pages precizeaz paginile pe care se va
afia fundalul ales.

b) DATA

Record Source precizeaz o tabel, o interogare, ori o


fraz SQL care va fi sursa de date a raportului;
Filter se folosete pentru stabilirea unei condiii-filtru pe
care trebuie s-o ndeplineasc datele ce vor fi afiate n
raport;
Filter on permite selectarea a dou valori: Yes, ceea ce
presupune activarea criteriului specificat n Filter (se
aplic datelor) i No, care anuleaz aciunea filtrului;
Order By, care precizeaz criterii de sortare, n ordinea
gradului de generalitate, cu virgul ntre ele;
Order By On poate cuprinde valorile Yes sau No,
activnd sau dezactivnd proprietatea Order By.

c) EVENT - proprieti de tip eveniment.

On Open servete , n principal, la definirea de filtre;

On Close poate realiza tergerea fiierelor temporare


create n timpul execuiei raportului. n general,
acestora le sunt ataate funcii ori proceduri.
d) OTHER alte proprieti.

Record Looks asigur blocarea informaiilor dintr-un


raport n timpul afirii acestuia;

Date Grouping permite utilizarea tipului implicit de


dat sau a tipului setat de utilizator;

Fast Laser Printing, cu valoarea Yes, realizeaz o


tiprire rapid a unui raport, etc.

INSERARE NUMAR CURENT

Listele create nu au numar curent pentru


rndurile afiate
Utilizatorii solicita numerotare
Numerotarea rndurilor ncepnd cu
valoarea 1 i pn la final cu o valoare
care va crete cu o unitate.
Exemplul - pentru definirea i afiarea
numrului curent pentru fiecre rnd din
raport (obinut prin incrementare), s-a
creat o caset text cu proprietile de mai
jos.

1. Se deschide raportul in Design View.


2. n prima coloan a raportului n locul unde
vrem sa introducem numerotarea se creaz
o caset de tip text
3. Se activeaz caseta si se selecteaz
PROPERY SHEET din grupul TOOLS
4. n rndul Control Source se trece =1,
iar pentru ca numrtoarea s se
desfoare unitar pentru toate rndurile, se
alege Over All (peste tot) n caseta
Running Sum, iar Enabled ia valoarea
YES

SGBD Access 2013: LIMBAJUL SQL

SQL ( Structured
Query Language )

Limbajul SQL (Structured Query Language):


Este un limbaj declarativ (neprocedural) care permite o
comunicare complex i rapid a utilizatorului cu bazele de
date, n funcie de cerinele i restriciile informaionale ale
acestuia.
Prin acest limbaj utilizatorul descrie informaiile pe care
vrea s le obin n urma interogrii, fr a preciza
algoritmii necesari pentru obinerea rezultatelor dorite.
SQL - face parte din categoria limbajelor de aplicaii
(orientate pe mulimi) pentru baze de date relaionale.
Este un limbaj standard - ca urmare principalele sale
instruciuni sunt recunoscute de ctre mai multe SGBD-uri
(Oracle, Access, Dbase, INFORMIX, DB2, Visual FoxPro.)

Caracteristici
Faciliti orientate obiect ce propun definirea la
nivel de utilizator a tipurilor de date abstracte;
Structuri de control specifice: IF, FOR, WHILE
Comunicare n reea;
Prelucrare distribuit;
Faciliti multi-media, nglobate n modulul
Multi - Media SQL.
Pe lng manipularea i regsirea datelor, SQL
efectueaz i operaii complexe privind actualizarea
i administrarea bazei de date.

SGBD Access 2013: SQL


n funcie de rolul lor n manipularea datelor i tranzaciilor,
instruciunile SQL, pot fi grupate n:
1.

2.
3.

4.

5.
6.

instruciuni de definire a datelor care permit


descrierea structurii bazei de date;
instruciuni de manipulare a datelor n sensul
adugrii, modificrii i tergerii nregistrrilor;
instruciuni de selecie a datelor care permit
consultarea bazei de date;
instruciuni de procesare a tranzaciilor care privesc
unitile logice de prelucrare i constituie n fapt,
operaii multiple de manipulare a datelor;
instruciuni de control al cursorului;
instruciuni privind controlul accesului la date.

SGBD Access 2013: SQL


Cuvintele cheie ale vocabularului SQL (fraza SQL) sunt:
instruciunile, clauzele, funciile i operatorii.
Instruciunile: au cel mai important rol, deoarece determin
executarea unei aciuni (SELECT; CREATE; INSERT; DELETE;
UPDATE; TRANSFORM; ALTER; DROP).
Clauzele restricioneaz aria valoric a entitilor ce particip la
interogare (WHERE; ORDER BY; GROUP BY; HAVING).
Funciile mbuntesc capacitile SQL de a manipula datele
(Sum; Max; Min; Avg; Count; Iif).
Operatorii efectueaz o comparare a valorilor seleciei:

= ; > ; >= ; < ; <= ; <>; And; Or; Not; Between;


Like; In

SGBD Access 2013: SQL


Reguli de sintax ale unei fraze SQL:

Orice fraz SQL se va termina cu semnul ;


Se utilizeaz punctul (.) ca separator ntre numele tabelului
i numele cmpului, atunci cnd o interogare are ca surse de
date mai multe tabele (SELECT Carti.Nume_autor);
Se utilizeaz parantezele drepte ([ ]) pentru a ncadra nume
de cmpuri interspaiate sau purttoare de caractere neaceptate
de SQL (SELECT Materiale.[Denumire Material])
Se utilizeaz virgula (,) pentru a delimita elementele
(parametrii) unei liste (SELECT Cod_Mat, Den_Mat, etc.)
Elementele de tip ir de caractere se vor marca ntre ghilimele
(text), iar valorile de tip dat/timp se vor marca ntre #.
Caracterele de nlocuire generice sunt ? sau *

CREAREA UNEI INTEROGARI SQL

1.
2.
3.
4.

CREATE
QUERY DESIGN
CLOSE (SHOW TABLE)
UNION / PASS TROUGTH / DATA
DEFINITION
5. INTRODUCERE INSTRUCTIUNI SQL
Ex. SELECT ALL a1 FROM A;
6. RUN
7. SAVE ( SAVE AS..)

SGBD Access 2013: SQL SELECT


LMD: I.a. Interogri (simple) de selecie

SELECT [domeniu]
<list selecie cmpuri>
FROM <nume tabel(e)>
[WHERE <criteriu de selecie>]
[ORDER BY <list cmpuri criterii de
ordonare> {ASC/DESC}];
[ ]- optional
< > - cuvinte utilizator
{ } la alegere

Domeniul - determin modalitile de manipulare


a nregistrrilor din BD asupra creia opereaz
selecia.
Domeniul poate fi:
ALL (implicit) include toate nregistrrile care
ndeplinesc condiiile impuse;
DISTINCT elimin nregistrrile care au valori
duplicate n cmpurile selectate (se va afia doar o
apariie a datei multiple)
TOP n primele n

SGBD Access 2013: SQL SELECT


SELECT [domeniu: ALL / DISTINCT / TOP n] <list selecie
cmpuri>
FROM <nume tabel(e)>
[WHERE <criteriu de selecie>]
[ORDER BY <list cmpuri criterii de ordonare> {ASC/DESC}];
<List selecie cmpuri> - reprezint proiecia BD, cuprinznd
toate cmpurile care vor aprea n tabelul cu rezultatele interogrii
Clauza FROM <nume tabel > precizeaz tabelul sau tabelele (sau
interogri deja create) din care fac parte cmpurile ce se utilizeaz
pentru proiecia BD
Clauza WHERE precizeaz criteriul de selecie sub forma unei
expresii. Clauza este opional i nu opereaz cu funcii totalizatoare
Clauza ORDER BY - criteriul de ordonare a nregistrrilor selectate.
Fiecare cmp precizat n Clauza ORDER BY constituie o cheie de
sortare (sensul sortrii se precizeaz prin ASC (implicit) sau DESC)

SGBD Access 2013: SQL SELECT : Exemple


Tabelul A
a1

a2

a3

a4

a5

a6

Selectarea cmpurilor a1 i a2 din A

SELECT ALL a1,a2


FROM A;

Selectarea (fr dubluri) a lui a1 i a5


pentru care a5> 1000

SELECT DISTINCT a1,a5


FROM A
WHERE a5>1000;

Selectarea (fr dubluri )a lui a5 > 1000 i a3=text

SELECT DISTINCT a5
FROM A
WHERE a5>1000 AND a3=text;
Selectarea lui a5 pt care a3 are o rdcin precizat

SELECT DISTINCT a5
FROM A
WHERE a3 LIKE *ESCU;

SGBD Access 2013: SQL SELECT : Exemple


Tabelul A
Selectarea (fr dubluri) a lui a5 <> (100,1000)

SELECT DISTINCT a5
FROM A
WHERE a5
(NOT) BETWEEN 100 AND 1000

Selectarea cmpurilor a2, a4 i a5 din A pt.


care a2 s ia valorile 1500, 13000 i 14000,
cu ordonare cresctoare a lui a2 i
descresctoare a lui a5

SELECT a2,a4,a5
FROM A
WHERE a2 IN(1500, 13000, 14000)
ORDER BY a2 ASC, a5 DESC;

a1

a2

a3

a4

a5

a6

Selectarea lui a1 i a rezultatului a2*a5


produs dintre nregistrrile tabelei A

SELECT a1, a2*a5 AS Valoare


FROM A

Access 2013: SQL I.b. INTEROGARI SIMPLE CU FUNCII AGREGAT

SELECT funcie_agregat1, funcie_agregat2... AS


[Alias 1], [Alias 2], ...n,...
FROM <nume tabel(e)>
WHERE <criteriu de selecie>
Funcii agregat:
Count (<>Null);
Sum(nume atribut) ;
Min(nume atribut) ;
Max (nume atribut)
Avg (nume atribut);
Iif(([Valoare]<5000000,0,[Valoare]*0.15) AS
Reducere

Access 2013: SQL

I.b. INTEROGARI SIMPLE CU FUNCII AGREGAT

Obs. n lipsa opiunii GRUP BY, la utilizarea


funciilor agregat, rezultatul va conine o singur linie

Tabela A
a1

a2

a3

a4

a5

a6

SELECT funcie_agregat1 AS [Alias1], ...2,...


FROM <nume tabel(e)>
WHERE <criteriu de selecie>
Selectarea celei mai mari / mai mici / i
medii valori a lui a5 din tabela A
Numrarea nregistrrilor din tabela A
Selectarea rezultatului evalurii
unei condiii, pentru care a2 este
diferit de zero

Count (<>Null);
Sum ;
Min ; Avg;
Max Iif

SELECT DISTINCT Max(a5) AS


[a5_Maxim], Min(a5) AS
[a5_Minim], Avg(a5) AS [a5_Medie]
FROM A;

SELECT COUNT(*) AS [Numr de tupluri]


FROM A;

SELECT a1, a5, a6, IIF(a5>=a6;a5-a6;a6-a5) AS [Rezultat evaluare]


FROM A
WHERE a2 IS NOT NULL;

Exemple:

Se d structura tabelelor de date:


Facturi(NrFact, Datafact, Datascad, Codfiscal)
Continut Factura(Codisbn, NrFact, Cantitate, PretF)
1. Sa se afiseze numarul si data facturilor emise pentru toti
clientii:
SELECT FACTURI.NrFact, FACTURI.datafact
FROM FACTURI;
2. Sa se afiseze cantitatea maxima si minima facturata clientilor:
SELECT MAX(CANTITATE) AS CANTITATE_MAXIMA,
MIN(CANTITATE) AS CANTITATE_MINIMA FROM
[CONTINUT FACTURA];

SGBD Access 2013: SQL SELECT


LMD: II Interogri (complexe) de selecie i grupare

Funciile de grup (agregat) permit construirea unor interogri SQL


prin care utilizatorul poate s efectueze diverse calcule pentru
grupuri de nregistrri care au cmpuri de aceeai valoare.
SELECT [domeniu] [ list selecie funcii agregate(nume cmp) AS Alias]
FROM <nume tabel(e)>
WHERE <criteriu de selecie>

[GROUP BY <cmp(uri) de grupare>]


[HAVING <criteriul cmpului de grupare>]
[ORDER BY <list cmpuri criterii de ordonare> {ASC/DESC}];

List selecie se refer la una sau mai multe funcii agregate care au
ca argumente nume de cmpuri ale tabelei(lor) bazei de date. Aceste
cmpuri trebuie s fie n mod obligatoriu numerice.

AS ALIAS asociaz un pseudonim aferent rezultatului unui calcul


simplu sau unei funcii agregat.

LMD: II. Interogri (complexe) de selecie i grupare


SELECT [domeniu] [list

selecie funcie agregat (nume cmp) AS


alias] [, list selecie] FROM <nume tabel(e)> WHERE <criteriu de selecie>
[GROUP BY <cmp(uri) de grupare>]
[HAVING <criteriul cmpului de grupare>]
[ORDER BY list cmpuri criterii de ordonare {ASC/DESC}];

Clauza GROUP BY precizeaz cmpul sau cmpurile pe baza crora se


va efectua gruparea nregistrrilor. Se pot executa funciile agregate
descrise n lista de selecie pentru fiecare dintre grupurile de inregistrri
Clauza GROUP BY formeaz grupuri de tupluri ale unei relaii, pe
baza valorilor comune luate de un atribut.
Rezultatul unei fraze SELECT ce conine clauza GROUP BY se
obine prin regruparea tuturor liniilor din tabelele enumerate n
FROM, extrgndu-se cte o singur apariie pentru fiecare valoare
distinct a coloanei sau a grupului de coloane

[HAVING <criteriul cmpului de grupare>]


HAVING se refer la restricia aplicat criteriului de
selectie pe grupuri de atribute.
- Clauza HAVING activeaz restricia dup gruparea
nregistrrilor, n timp ce clauza WHERE acioneaz
nainte de gruparea nregistrrilor.

Deci, prin asocierea clauzei HAVING la GROUP BY este


posibil selectarea anumitor grupuri de tupluri ce
ndeplinesc un criteriu numai la nivel de grup.
[ORDER BY < list cmpuri criterii de ordonare>
{ASC/DESC}]- ordoneaza selectia dupa valorile
cmpurilor menionate.

SGBD Access 2013: SQL SELECT


LMD: Interogri (complexe) de selecie i grupare
Tabela A (Coninut Factur)
a1

a2

a3

a4

100

305

25

12500

100

208

10

20000

85

30

10000

101

208

20000

101

74

10

30000

103

90

5000

100

SELECT a1, SUM(a3*a4) AS a5


FROM A
GROUP BY a1;
1.Se ordoneaz liniile tabelei A dup a1;
2. Se constituie un grup pentru fiecare
valoare distinct aferent atributului a1;
3. Se aplic funcia agregat SUM asupra
grupurilor;
4. Se obine rezultatul, al crui numr de
linii coincide cu valorile distincte ale lui a1
Tabela R
a1

103

74

25

30000

a5=SUM(a3*a4)

100

812500

101

460000

103

775000

Exp. Interogri (complexe) de selecie i grupare


SELECT NRFACT, SUM(CANTITATE*PRETF) AS
VALOARE
FROM [CONTINUT FACTURA]
GROUP BY NRFACT;

Exp: Interogri (complexe) de selecie i grupare


SELECT NRFACT, SUM(CANTITATE*PRETF) AS VALOARE
GROUP BY NRFACT
HAVING SUM(CANTITATE*PRETF)>490;

Exp. Interogri (complexe) de selecie i grupare

SELECT NRFACT, SUM(CANTITATE*PRETF) AS


VALOARE
FROM [CONTINUT FACTURA]
WHERE CANTITATE>7
GROUP BY NRFACT
HAVING SUM(CANTITATE*PRETF)>1400;

SGBD Access 2013: SQL SELECT

Tabelul A
a1

a2

a3

a4

100

305

25

12500

SELECT a1, SUM(a3*a4) AS a5


FROM A
GROUP BY a1
HAVING SUM(a3*a4) >500000;
Tabela R
a1

100
100

a5=SUM(a3*a4)

208

10

20000

100

812500

85

30

10000

103

775000

Tabela R1
101

208

200000

101

74

10

300000

103

90

5000

103

74

25

30000

460000

a1
100

a5=SUM(a3*a4)
812500

SELECT a1, SUM(a3*a4) AS a5


FROM A
WHERE a3>5
GROUP BY a1
HAVING SUM(a3*a4) >750000;

SGBD Access 2013: SQL SELECT


Tabela B
b1

b2

b3

b4

b5

a1

SELECT b1, b2, b4, b5, b3*b4 AS [produs b3 i b4]


FROM B
WHERE b2=criteriu text
GROUP BY b4
HAVING Sum(b3*b4)>300000;

SELECT b1, b2, Avg(b3) AS [medie b3], Count(*) AS [Total]


FROM B
GROUP BY b3,
HAVING Avg(b3) > 250000 AND Count (*)>5;

LMD: III Interogri de asociere (jonciune / compunere) intern


a) SGBD Access 2013: SQL SELECT: COMPUNERE cu WHERE

Compunerile echivalente (EchiCompunerile) - utilizeaz clauza


WHERE (pt selecia nregistrrilor) asociat cu o egalitate a valorilor
n cmpurile de legtur.

SELECT [domeniu] <list selecie T1.a1,


cmpuri din tabele diferite>
T2.a1,
FROM <nume tabele> T1, T2,.....
.........
[WHERE <criteriu de compunere>
[i de selecie]]
[ORDER BY <list cmpuri criterii de
ordonare> {ASC/DESC}];

T1.a2

a) SGBD Access 2013: SQL SELECT: WHERE


LMD: III Interogri de asociere (jonciune / compunere) intern
Tabela A
a1

a2

Tabela B
a3

a4

a5

a6

b1

b2

Tabela C
b3

b4

b5

a1

c1

c2

c3

c4

C5

a1

Clauza WHERE (pt selecia nregistrrilor) este asociat cu o egalitate a valorilor


n cmpurile de legtur.
A compus cu B

SELECT A.a1, A.a2, B.b1, B.b4, B.b5


FROM A, B
WHERE A.a1=B.a1;
A compus cu B i A compus cu cu C

SELECT A.a1, A.a2, B.b1, C.c1,C.c3


FROM A, B, C
WHERE A.a1=B.a1 AND A.a1=C.a1
ORDER BY C.c3;

SELECT A.a1, B.b2*


B.b3 AS Total
FROM A, B
WHERE A.a1=B.a1 AND
A.a5>=10000;

Exemplu:
Compunerea a 2 tabele (WHERE)

SELECT Facturi.[Numar Factura], Facturi.[Data Facturii],


Facturi.[Cod Fiscal],[Continut Factura].[Cod ISBN], [Continut
Factura].Cantitate, [Continut Factura].[Pret f], [Cantitate]*[Pret f] AS
Valoare
FROM Facturi,[Continut Factura]
WHERE Facturi.[Numar Factura] = [Continut Factura].[Numar
Factura];

Exemplu:
Compunerea a 3 tabele (WHERE)

SELECT
Facturi.[Numar Factura], Facturi.[Data Facturii],
[Continut Factura].Cantitate, [Continut Factura].[Pret f],
[Cantitate]*[Pret f] AS Valoare,
Clienti.[Cod Fiscal], Clienti.[Denumire Client],
FROM Facturi, [Continut Factura],Clienti
WHERE
Facturi.[Numar Factura]=[Continut Factura].[Numar Factura]
AND
Clienti.[Cod Fiscal] = Facturi.[Cod Fiscal];

b) SGBD

Access 2013: SQL SELECT : COMPUNERE


CU JOIN

SELECT [domeniu] <list selecie cmpuri din


tabele diferite>
FROM <nume tabel_1>
{ INNER / LEFT OUTER / RIGHT OUTER }
JOIN <nume tabel_2>
ON <criteriu asociere>
[WHERE <criteriu de selecie>
[ORDER BY <list cmpuri criterii de
ordonare> {ASC/DESC}];

b) SGBD Access 2013: SQL SELECT : JOIN

Tabela A
a
1

a2

a3

a4

a5

a
6

Tabela B
b1

b2

Tabela C
b3

b4

b5

a1

c1

c2

c3

c4

c5

b1

SELECT [domeniu] <list selecie cmpuri din tabele diferite>


FROM <nume tabel_1>
{INNER/LEFT OUTER/RIGHT OUTER } JOIN <nume
tabel_2>
ON <criteriu asociere>
[WHERE <criteriu de selecie>
[ORDER BY <list cmpuri criterii de ordonare> {ASC/DESC}];

SELECT A.a5, B.b3, (A.a5*B.b3) AS [Produs]


FROM A
INNER JOIN B ON A.a1=B.a1;

SELECT A.a1, A.a2, A.a5, B.b1, C.c1


FROM A
INNER JOIN B
(INNER JOIN C ON B.b1=C.b1)
ON (A.a1=B. a1 );

A compus cu
rezultatul compunerii
dintre B i C

b) SGBD Access 2013: SQL SELECT: JOIN


O compunere intern (INNER) sau echivalent
(echicompunere) este aceea n care liniile unui tabel
sunt combinate cu liniile altui tabel pentru care
exist egalitate ntre cmpurile de legtur (cazul 1
din Join Properties).
LEFT OUTER JOIN (1n) include toate nregistrrile din tabelul A
(cardinalitate 1) i numai acele nregistrri din tabelul B
(cardinalitate n) pentru care valorile atributelor cheie (a1) sunt egale
(cazul 2 din Join Properties).

RIGHT OUTER JOIN (1n) include toate nregistrrile din


tabelul B (cardinalitate n) i numai acele nregistrri din tabelul
A (cardinalitate 1) pentru care valorile atributelor cheie (a1) sunt
egale (cazul 3 din Join Properties).
Tabela A
a1

a2

Tabela B
a3

a4

a5

a6

b1

b2

b3

b4

b5

a1

Exemplu:
Compunerea a 2 tabele (INNER)

SELECT Facturi.[Numar Factura], Facturi.[Data Facturii],


Facturi.[Cod Fiscal], [Continut Factura].[Cod ISBN], [Continut
Factura].Cantitate, [Continut Factura].[Pret f], [Cantitate]*[Pret f] AS
Valoare
FROM Facturi INNER JOIN [Continut Factura]
ON Facturi.[Numar Factura] = [Continut Factura].[Numar Factura];

Exemplu:
Compunerea a 3 tabele (INNER)

SELECT Facturi.[Numar Factura], Facturi.[Data Facturii],


[Continut Factura].Cantitate, [Continut Factura].[Pret f],
[Cantitate]*[Pret f] AS Valoare,
Clienti.[Cod Fiscal], Clienti.[Denumire Client]
FROM Clienti INNER JOIN Facturi
(INNER JOIN [Continut Factura]
ON
Facturi.[Numar Factura] = [Continut Factura].[Numar Factura])

ON Clienti.[Cod Fiscal] = Facturi.[Cod Fiscal];

Exemplu:
DISCOUNT LA VALOARE FACTUR
SELECT Facturi.[Numar Factura],
[Continut Factura].Cantitate, [Continut Factura].
[Pret f], [Cantitate]*[Pret f] AS Valoare,

IIf([Valoare]<5000000,0,[Valoare]*0.15) AS Reducere
FROM Facturi
INNER JOIN [Continut Factura]
ON
Facturi.[Numar Factura] = [Continut Factura].[Numar Factura];

FACTURILE PE LUNA MARTIE 2012


SELECT facturi.nrfact, facturi.datafact, facturi.codfiscal,
[continut factura].codisbn,[continut factura].cantitate,
[continut factura].pretf,
[continut factura].cantitate*[continut factura].pretf AS Valoare,
Month([facturi.Datafact]) AS Luna,
Year([facturi.Datafact]) AS Anul
FROM facturi INNER JOIN [continut factura] ON
facturi.nrfact=[continut factura].nrfact
WHERE Month([Datafact])=3 AND Year([Datafact])=2012;

SQL IV SubInterogri SELECT n SELECT n .....


Tabela A
a1

a2

a3

a4

a5

a6

O subinterogare sau o interogare imbricat presupune ca setul de


rezultate obinut de la o interogare s constituie argument pentru o
alta (interogare n interogare).
a) Subinterogri construite pe o singur tabel
SELECT [domeniu] <list selecie cmpuri >
FROM <nume tabel>
[WHERE <nume_cmp> operatori [> , < , >=, <=, <> , = , IN ]
(SELECT <nume_cmp>
FROM <nume tabel>
[WHERE <criteriu de selecie>]);

SELECT DISTINCT a1,a3,a5


FROM A
WHERE a5 > (SELECT a5 FROM A WHERE a3=text);

Afiarea numrului de contract, codului furnizorilor si


datei pentru cei care au data contractului 17 aprilie 2012

SELECT DISTINCT [Nrcontract], codfz, DATA


FROM CONTRACTE
WHERE CODFZ IN
(SELECT CODFZ FROM CONTRACTE WHERE
([DATA]= #4/17/2012#));

Informatii referitoare numai despre contractul 111.


SELECT [Nrcontract], codfz, DATA
FROM CONTRACTE
WHERE CODFZ IN
(SELECT CODFZ FROM CONTRACTE WHERE
(NRCONTRACT=111));
Informatii despre toate contractele, n afar de contractul
111.
SELECT [Nrcontract], codfz, DATA
FROM CONTRACTE
WHERE CODFZ NOT IN
(SELECT CODFZ FROM CONTRACTE WHERE
(NRCONTRACT=111));

Care sunt elementele a1 (facturile)


emise n aceeai zi cu elementul a1
(factura) 1120?
SELECT a1
FROM A
WHERE a2 IN (SELECT a2 FROM A WHERE a1=1120);
Execuia interogrii se va derula n doi timpi:
executarea subcererii (SELECT a2 FROM A WHERE a1=1120) se
materializeaz ntr-o singur tabel intermediar cu o singur linie.
a1

executarea
cererii principale,
adic selecia lui
a1din tabela A,
pentru care exist
condiia

1119
1120
1121

a2
06.11.2007

Tabela A
a1

a2

a3

a4

a5

A6

1118

05.11.2007

aaa

bbb

30

50

1119

06.11.2007

ddd

eee

45

74

1120

06.11.2007

rrr

ttt

36

58

1121

06.11.2007

NUMRUL DE CONTRACTELOR INCHEIATE CU FURNIZORII


DUP 01/05/2009

SELECT [CODFZ], Count(*) AS NUMAR


FROM (SELECT * FROM CONTRACTE
WHERE [DATA]>#1/1/2009#)
GROUP BY [codFZ];

SQL IV.

SubInterogri

Tabela A
a1

a2

SELECT

SELECT

n .....

Tabela B
a3

a4

a5

a6

b1

b2

b3

b4

b5

a1

B) Subinterogri construite pe mai multe tabele

Legtura dintre
tabele se realizeaz
prin subinterogare
(fr o compunere
explicit)

Legtura dintre
tabele se realizeaz
printr-o compunere
explicit (JOIN)

SELECT [domeniu] <list selecie cmpuri>


FROM <nume tabel_1>
[WHERE <tabel_1.cmp legtur>=
(SELECT <cmp legtur>
FROM <nume tabel_2>
[WHERE <criteriu de selecie pentru subinterogare>])
Selectarea unor valori din A, pentru o valoare
SELECT a1,a2,a5
restricionat din B
FROM A
WHERE A.a1=(SELECT a1 FROM B WHERE b4>25000);

Cum se numeste localitatea unde clientul cu codul=3 are


facturi ?

SELECT CLIENTI.[COD-CL], LOCALITATE


FROM CLIENTI
WHERE CLIENTI.[COD-CL] IN
(SELECT FACTURI.[COD-CL]
FROM FACTURI
WHERE FACTURI.[COD-CL]=3);

COMPUNERE CU WHERE

2 tabele.

SELECT Facturi.nrfact, Facturi.datafact,


Facturi.codfiscal,
[Continut Factura].codisbn,
[Continut Factura].cantitate,
[Continut Factura].pretf, [Continut
Factura].cantitate*[Continut Factura].pretf
AS Valoare
FROM Facturi, [Continut Factura]
WHERE Facturi.nrfact=[Continut
Factura].nrfact;

WHERE 3 tabele
SELECT Facturi.nrfact, Facturi.datafact,
Facturi.codfiscal, [Continut factura].codisbn,
[Continut factura].cantitate, [Continut
factura].pretf, [Continut
factura].cantitate*[Continut factura].pretf AS
valoare, Clienti.codfiscal, Clienti.denumirecl
FROM Facturi, [Continut factura], Clienti
WHERE Facturi.nrfact=[Continut
factura].nrfact And
Clienti.codfiscal=Facturi.codfiscal;

COMPUNERE CU INNER JOIN


SELECT FACTURI.nrfact, FACTURI.datafact,
FACTURI.codfiscal, [CONTINUT
FACTURA].codisbn, [CONTINUT
FACTURA].cantitate, [CONTINUT
FACTURA].pretf, [CONTINUT
FACTURA].cantitate
*[CONTINUT FACTURA].pretf
AS valoare
FROM FACTURI INNER JOIN [CONTINUT
FACTURA] ON FACTURI.nrfact=[CONTINUT
FACTURA].nrfact;

COMPUNERE CU LEFT JOIN

SELECT Facturi.nrfact, Facturi.datafact,


Facturi.codfiscal, [Continut factura]
.codisbn, [Continut factura].cantitate,
[Continut factura].pretf, [Continut
factura].cantitate*[Continut factura].pretf
AS valoare
FROM Facturi LEFT JOIN [Continut
factura] ON Facturi.nrfact=[Continut
factura].nrfact;

RIGHT JOIN

SELECT Facturi.nrfact,
Facturi.datafact, Facturi.codfiscal,
[Continut factura].codisbn, [Continut
factura].cantitate, [Continut factura].
pretf, [Continut factura].cantitate *
[Continut factura].pretf AS valoare
FROM Facturi RIGHT JOIN [Continut
factura] ON Facturi.nrfact=[Continut
factura].nrfact;

REDUCERE VALOARE CU 20% PENRU FACTURILE CU SUMA


<=250 LEI

SELECT FACTURI.NRFAC, SUM([CONTINUT


FACTURA].[CANTITATE]*[CONTINUT
FACTURA].[PRETF]) AS VALOARE,
IIF([VALOARE]<=250,[VALOARE]*0.2,0) AS
REDUCERE
FROM FACTURI RIGHT JOIN [CONTINUT
FACTURA] ON FACTURI.NRFACT =
[CONTINUT FACTURA].NRFACT
GROUP BY FACTURI.NRFACT;

REDUCERE PARAMETRU

SELECT FACTURI.NRFACT,
SUM([CONTINUT
FACTURA].[CANTITATE]*[CONTINUT
FACTURA].[PRETF]) AS VALOARE,
IIF([VALOARE]<=250,[VALOARE]*[TASTATI
PROCENT DE REDUCERE],0) AS
REDUCERE
FROM FACTURI RIGHT JOIN [CONTINUT
FACTURA] ON FACTURI.NRFACT =
[CONTINUT FACTURA].NRFACT
GROUP BY FACTURI.NRFACT;

SQL
Structured Query Language

Interogri de selecie

PASI IN CONSTRUIREA UNEI INTEROGARI DE SELECTIE SIMPLA

1.
2.
3.
4.
5.

SELECT [domeniu]
<list selecie cmpuri>
FROM <nume tabel(e)>
[WHERE <criteriu de selecie>]
[ORDER BY <list cmpuri criterii de ordonare> ASC/DESC}];

1.
2.
3.
4.
5.

SELECT ALL
NUME, PRENUME, AN_STUDII, GRUPA, NOTA_TEST
FROM STUDENTI
WHERE NOTA>=5
ORDER BY NUME ASC;

SQL IV SubInterogri SELECT n SELECT n .....


Tabela A
a1

a2

a3

a4

a5

a6

O subinterogare sau o interogare imbricat presupune ca setul de


rezultate obinut de la o interogare s constituie argument pentru o
alta (interogare n interogare).
a) Subinterogri construite pe o singur tabel
SELECT [domeniu] <list selecie cmpuri >
FROM <nume tabel>
[WHERE <nume_cmp> operatori [> , < , >=, <=, <> , = , IN ]
(SELECT <nume_cmp>
FROM <nume tabel>
[WHERE <criteriu de selecie>]);

SELECT DISTINCT a1,a3,a5


FROM A
WHERE a5 > (SELECT a5 FROM A WHERE a3=nota 10);

Afiarea numrului de contract, codului furnizorilor si datei,


pentru furnizorii care au data contractului 17 aprilie 2012

SELECT DISTINCT [Nrcontract], codfz, DATA


FROM CONTRACTE
WHERE CODFZ IN
(SELECT CODFZ FROM CONTRACTE WHERE
([DATA]= #4/17/2012#));

NUMRUL CONTRACTELOR INCHEIATE CU FURNIZORII DUP 01/05/2009

SELECT [CODFZ], Count(*) AS NUMAR


FROM (SELECT * FROM CONTRACTE
WHERE [DATA]>#1/05/2009#)
GROUP BY [codFZ];

SQL IV. SubInterogri SELECT n SELECT n


Legtura dintre
tabele se realizeaz
prin subinterogare
(fr o compunere
explicit)

Tabela A
a1

a2

a3

a4

b2

b3

b4

a5

a6

Tabela B
b1

b5

a1

B) Subinterogri construite pe mai multe


tabele

SELECT [domeniu] <list selecie cmpuri>


FROM <nume tabel_1>
[WHERE <tabel_1.cmp legtur>=
(SELECT <cmp legtur>
FROM <nume tabel_2>
[WHERE <criteriu de selecie pentru subinterogare>])
Selectarea unor valori din A, pentru o
SELECT a1,a2,a5
valoare restricionat din B
FROM A
WHERE A.a1=(SELECT a1 FROM B WHERE b4>25000);

Cum se numeste localitatea unde clientul cu codul=3 are


facturi ?

SELECT CLIENTI.[COD-CL], LOCALITATE


FROM CLIENTI
WHERE CLIENTI.[COD-CL] IN
(SELECT FACTURI.[COD-CL]
FROM FACTURI
WHERE FACTURI.[COD-CL]=3);

V. SGBD Access : SQL: UNION


Dac se dorete vizualizarea rezultatelor mai multor interogri
SELECT n acelai timp, prin combinarea ieirilor lor, se
utilizeaz facilitatea UNION a limbajului de interogare SQL.

SELECT lista_campuri FROM tabel_1


[GROUP BY camp_de_grupare]
[HAVING criteriul_de_agregare]
UNION
SELECT list_campuri FROM tabel_2
[GROUP BY camp_de_grupare]
[HAVING criteriul_de_agregare]
[UNION SELECT list_campuri FROM tabel_3
[GROUP BY camp_de_grupare ]
[HAVING criteriul_de_grupare]]
[UNION...]
[ORDER BY camp_criteriu_de_sortare];
Tabelele reunite trebuie s aib aceeai structur.

SGBD Access : SQL: UNION


SELECT [Cod Fiscal],[Denumire Client],Localitate,Telefon
FROM Clienti
UNION
SELECT [Cod Fiscal],[Denumire Client],Localitate,Telefon
FROM [Clienti Arad]
ORDER BY Localitate,[Denumire Client];

VI. SGBD Access : SQL: TRANSFORM (CROSSTAB)

Transform permite ca pe lng selectarea datelor i efectuarea


calculelor n linie sau prin funcii agregat, s grupeze nregistrrile pe
linie (antete de rnduri) i pe coloan (titluri de coloan)

TRANSFORM funcie agregat AS alias


Instruciune de selecie cu grupare pe linie
PIVOT cmp antet coloan ;
Funcia agregat opereaz asupra nregistrrilor, prin definirea calculului
aplicat elementelor de grup;
Instruciunea de selecie servete pentru a specifica antetele de rnd ale
rezultatelor interogrii;
Cmpul antet coloan constituie cmpul sau expresia ce se utilizeaz
n definirea antetelor de coloane, pentru setul de rezultate al interogrii.

Exemplul 1: TRANSFORM Cantitatea receptionata din fiecare


material si din fiecare receptie

TRANSFORM Sum(ContinutReceptie.Cantitate)
AS SumaCantitate
SELECT ContinutReceptie.CodM
FROM ContinutReceptie
GROUP BY ContinutReceptie.CodM
PIVOT ContinutReceptie.NrReceptie;

Ex.2 Sa se proiecteze un tabel in care pe linie sa fie afisat numarul de


factura, pe coloana data facturii, iar la intersectie linie-coloana prima
valoare a codului fiscal

TRANSFORM FIRST(FACTURI.CODFISCAL) AS FIRSTOFCODFISCAL


SELECT FACTURI.NRFACT
FROM FACTURI
GROUP BY FACTURI.NRFACT
PIVOT FACTURI.DATAFACT;

Exemplul 3
TRANSFORM Sum([Cantitate]*[Pretf]) AS Valoare
SELECT Carti.TITLU
FROM Facturi INNER JOIN
(Carti INNER JOIN [Continut Factura] ON Carti.[CodISBN] = [Continut
Factura].[CodISBN]) ON Facturi.[NRFACT] = [Continut
Factura].[NRFACT]
WHERE ((([Continut Factura].Cantitate)>5))
GROUP BY Carti.[TITLU]
PIVOT Month([DataFACT]);
S se calculeze
suma valoric a
vnzrilor de carte
pe luni

SQL: CROSSTAB
TRANSFORM funcie agregat AS alias
Instruciune de selecie cu grupare pe linie
PIVOT cmp antet coloan ;

TRANSFORM Sum([Cantitate]*[Pret f]) AS Valoare


SELECT Carti.[Denumire Carte]
FROM Facturi
INNER JOIN (Carti INNER JOIN [Continut Factura]
ON Carti.[Cod ISBN] = [Continut Factura].[Cod ISBN])
ON Facturi.[Numar Factura] = [Continut Factura].[Numar Factura]
WHERE ((([Continut Factura].Cantitate)>50))
GROUP BY Carti.[Denumire Carte] PIVOT Month([Data
Facturii]);
S se calculeze
suma valoric a
vnzrilor de
carte pe luni

VII. SGBD Access : SQL: PARAMETERS


SELECT facturi.nrfact, facturi.datafact, facturi.codfiscal, [continut
factura].codisbn, [continut factura].cantitate, [continut
factura].pretf,
[continut factura].cantitate*[continut factura].pretf AS Valoare,
[Tastati Procent]*[Valoare]/100 AS Reducere
FROM facturi INNER JOIN [continut factura] ON
facturi.nrfact=[continut factura].nrfact
WHERE [continut factura].NRFACT=[TASTATI Nr_Fact];

VII. SGBD Access : SQL: PARAMETERS


SELECT Facturi.[Numar Factura], Carti.[Cod ISBN], [Continut
Factura].Cantitate, [Continut Factura].[Pret f], [Cantitate]*[Pretf]
AS Valoare, [Tastati Procent]*[Valoare]/100 AS Reducere
FROM Facturi
INNER JOIN (Carti INNER JOIN [Continut Factura] ON
Carti.[Cod ISBN] = [Continut Factura].[Cod ISBN]) ON
Facturi.[Numar Factura] = [Continut Factura].[Numar Factura]
WHERE ((Facturi.[Numar Factura]=[Tastati Nr_Fact])
AND (Carti.[Cod ISBN])=[Tastati Cod_ISBN]));
Parameters
Nume_parametru1 tip de date (dimensiune),
Nume_parametru2 tip de date (dimensiune),.......;
Parameters
Reducere Percent,
Numar_factura LongInteger

VIII . SGBD Access : SQL: Manipularea datelor:


1. Interogri cu aciune de CREARE de tabele - (Maketable)

SELECT [domeniu] (cmp1, cmp2,....)


INTO nume tabel nou
FROM nume tabel surs
[WHERE criteriu de adugare a nregistrrilor n tabel nou];

SELECT [Cod Fiscal], [Denumire Client], Adresa,


Localitate
INTO [Clienti din Bucuresti]
FROM Clienti
WHERE (Localitate="Bucuresti");

EXEMPLUL 2

SELECT FACTURI.[NR-FACTURA],
FACTURI.[COD-CL], FACTURI.[CODMARFA], FACTURI.CANTITATE,
FACTURI.PRET, FACTURI.DATA INTO
[FACTURI-NOI]
FROM FACTURI;

SGBD Access : SQL: Manipularea datelor


2. Interogri cu aciune de ADUGARE de tupluri
INSERT INTO nume_tabel (cmp1, cmp2,....)
VALUES (valoare_1, valoare_2,.....);

INSERT INTO [Clienti Arad] ( [Cod Fiscal], [Denumire Client],


Strada, Localitate )
VALUES ("r732469","SoftInfo SA","Str. Narciselor nr.5","Arad");

SGBD Access : SQL: APPEND


Interogri cu aciune de ADUGARE de tupluri
INSERT INTO nume_tabel_destinaie (cmp1, cmp2,....)
SELECT [domeniu] cmp1, cmp2,....
FROM nume tabel surs
[WHERE criteriu de adugare a nregistrrilor n tabela destinaie];
INSERT INTO [Clienti din Bucuresti] ( [Cod Fiscal], [Denumire
Client], Adresa, Localitate )
SELECT [Cod Fiscal],[Denumire Client], Adresa,Localitate
FROM [Clienti Arad]
WHERE [Clienti Arad].[Denumire Client] Like ("*SRL");

EXEMPLU 2

APPEND
INSERT INTO FACTURI ( [NR-FACTURA], [COD-CL],
[COD-MARFA], CANTITATE, PRET, DATA )
SELECT [FACTURI-NOI].[NR-FACTURA], [FACTURINOI].[COD-CL], [FACTURI-NOI].[COD-MARFA],
[FACTURI-NOI].CANTITATE, [FACTURI-NOI].PRET,
[FACTURI-NOI].DATA
FROM [FACTURI-NOI]
WHERE ([facturi-noi].[COD-MARFA]=2) AND
([FACTURI-NOI].DATA>#3/3/2012#);

EXEMPLUL 3

INSERT INTO Personal ( marca, nume,


functia, salariu, [data-ang], codlm )
SELECT Personal1.marca1,
Personal1.nume1, Personal1.functia1,
Personal1.salariu1, Personal1.[dataang1], Personal1.codlm1
FROM Personal1;

SGBD Access : SQL: Manipularea datelor:


3. Interogri cu aciune de TERGERE de tupluri
DELETE *
FROM nume_tabel
[WHERE criteriu de tergere a nregistrrilor];
DELETE *
FROM [Clienti Arad]
WHERE Telefon IS NULL;

DELETE
DELETE FACTURI.[NR-FACTURA]
FROM FACTURI
WHERE (FACTURI.[NR-FACTURA]=212);

SGBD Access : SQL: Manipularea datelor:


4. Interogri cu aciune de MODIFICARE a valorilor
UPDATE nume_tabel
SET nume_cmp1=valoare_1[,nume_cmp2=valoare_2].....
[WHERE criteriu de actualizare a valorilor tuplurilor];

UPDATE Carti
SET [Pret baza] = [Pret baza]*1.15
WHERE (([Denumire Carte])="Baze de date")
AND ((Year([Data Aparitiei]))=2009);
UPDATE [facturi-noi]
SET PRET = pret*0.25,CANTITATE=CANTITATE/2
WHERE ([cod-cl]>1);

STERGERERE TABELE SI BAZE DE DATE

tergerea tabelelor dintr-o baz de date


DROP TABLE nume_tabel;
Exemplu: tergerea tabelei Student:
DROP TABLE Student ;
tergerea unei baze de date
DROP DATABASE <nume baza de date>;
DROP DATABASE BAZACLIENTI;

SQL: IX. LDD-LIMBAJUL DE DEFINIRE A DATELOR

CREATE TABLE nume_tabel


( nume-atribut1 tip_dat(mrime) [NOT
NULL]
[,nume-atribut2 tip_dat(mrime) [NOT
NULL]..]
[CONSTRAINT nume-atribut CHECK
(nume-atribut <condiie>)]
[CONSTRAINT nume_index] {PRIMARY
KEY | UNIQUE | NOT NULL }]);

Exemplul 1.
CREATE TABLE Carti
([Cod ISBN] Text(15) CONSTRAINT [Cod ISBN]
Primary Key,
[Denumire Carte] Text(50),
[Data Apariiei] Date NOT NULL,
[Stocul tiparit] Number, [Pret baza] Currency
NOT NULL);

Exemplul 2: Se va crea tabela Student cu


urmtoarea structur a nregistrrii: Numr
matricol (tip Numeric), Nume student (tipCaracter), Data naterii (tip- Dat
calendaristic), Facultate (tip- Caracter).
Exemplul 2.
CREATE TABLE STUDENT (NRMATRICOL
NUMBER CONSTRAINT NRMATRICOL
PRIMARY KEY,
NUME TEXT (20), DATA_N DATE,
FACULTATE TEXT (10) NOT NULL );

Modificarea structurii unui tabel de date

ALTER TABLE nume_tabel


{ADD {COLUMN < nume-atribut >
tip_data [(mrime)] [ [NOT NULL]
[CONSTRAINT < nume-atribut> CHECK
(<nume-atribut> <condiie>)]} | DROP
{COLUMN < nume-atribut> |
[CONSTRAINT <nume-atribut> CHECK
(<nume-atribut> <condiie>)]}}

Exemplul 1.
ALTER TABLE Carti
ADD COLUMN [Nume coordonator lucrare] Text(25)
NOT NULL;
Exemplul 2:
- Adugarea atributului An_studii (tip Numeric) n
tabelul Student:
ALTER TABLE Student ADD COLUMN An_studii
Number NOT NULL;
- tergerea atributului Facultate din tabelul
Student:
ALTER TABLE Student DROP COLUMN Facultate;

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