Sunteți pe pagina 1din 58

Curs 6

Conf. dr. Gladiola ANDRUSEAC


Cuprins
I. Interogări – Recapitulare
II. Interogări din mai multe tabele
III. Constrângeri de integritate

IV. Reguli de validare a informației


V. Câmpuri calculate
VI. Formatarea unui câmp:
 Pentru câmpuri de tip Text /Memo
 Pentru câmpuri de tip Numeric
 Pentru câmpuri de tip Date/Time
VII. Măști de intrare

2
Interogări - RECAPITULARE
Interogările SQL sunt în principal destinate operatiilor:
I. Extragere de informaţii din baza de date
II. Adăugare de noi înregistrări într-un tabel
III.Modificarea conţinutului înregistrărilor
IV.Ştergerea înregistrărilor dintr-un tabel.

Interogarile (queries) pot fi facute pentru una sau mai


multe tabele existente în baza de date.

3
A. Interogare de selecţie

 Este cel mai utilizat tip de interogare.

 Interogarea de selecţie centralizează datele din una


sau mai multe tabele şi afişează rezultatele într-o
foaie de date.

 Se poate folosi o interogare de selecţie pentru a grupa


articolele şi a efectua însumări, contorizări, medii
aritmetice şi alte tipuri de totalizări.

4
B. Interogare cu parametru
Este o interogare care, la execuţie, afişează o casetă cu
dialog prin care se solicită introducerea unor informaţii
suplimentare. Acesta este criteriul pentru regăsirea
articolelor sau valoarea pe care vreţi s-o inseraţi într-un
câmp.
Interogările cu parametru sunt utile atunci când le
folosiţi ca bază pentru formulare şi rapoarte.
Spre exemplu, puteţi crea un raport al internărilor lunare
în secția de ortopedie bazat pe o interogare cu
parametru. Atunci când tipăriţi raportul, Microsoft
Access va afişa, mai întâi, o casetă de dialog prin care va
solicita luna pentru care doriți să tipăriți raportul.
5
C. Interogare de tip analiză încrucișată
(crosstab)
 Interogarea de tip crosstab afişează valori rezumative
(totaluri, contorizări şi medii aritmetice) din unul
din câmpurile tabelei şi le grupează după un set de
factori listaţi în jos pe latura din stânga foii de calcul şi
după un alt set de factori listaţi de-a lungul părţii
superioare a foii de date.

6
D. Interogare de acțiune
 Este o interogare care permite modificarea mai multor
articole într-o singură operaţie.
1. Interogare de ştergere
2. Interogare de actualizare
3. Interogare de adăugare

Acţiunile interogărilor de acțiune sunt ireversibile asupra


datelor din tabelele sursă și trebuie urmărită păstrarea
integrităţii referenţiale atunci când prin intermediul lor se
acţionează asupra mai multor tabele legate.

7
D1. Interogare de ştergere
 Permite ştergerea unui grup de articole din una sau mai
multe tabele.

 Spre exemplu, puteţi folosi o astfel de interogare pentru a


elimina toate medicamentele epuizate.

 Utilizând acest tip de interogări, eliminaţi întotdeauna


articolele întregi, nu doar câmpurile selectate din articole.

8
D2. Interogare de actualizare
Asigură modificarea globală a unui grup de articole din una
sau mai multe tabele.

Exemple:
 puteţi mări preturile cu 10% pentru toate medicamantele
din gama antibioticelor
sau
 puteţi creşte salariile cu 15% pentru persoanele dintr-o
anumită categorie.

9
D3. Interogare de adăugare
Adaugă înregistrări din diferite tabele la sfârşitul altor
tabele.
Aceste interogări sunt utile pentru:
 Adăugarea câmpurilor pe baza unui criteriu.
 Exemplu: este posibil ca la medicamentele comandate
și neprimite să adăugaţi numai un câmp cu telefonul
furnizorilor.
 Adăugarea articolelor atunci când unele câmpuri
dintr-o tabelă nu există într-o altă tabelă.

10
E. Interogare generatoare de tabele
 Creează un nou tabel din toate datele sau numai
dintr-o parte a datelor, din una sau mai multe tabele.
 Se pot utiliza pentru:
 Tabelele create pe baza unei interogări se pot exporta în
alte baze de date.
 Crearea de rapoarte care să afişeze datele începând cu o
dată specificată.
 Crearea unei tabele “istoric” care să conţină toate
articolele.
 Creşterea performanţei formularelor şi rapoartelor
bazate pe interogări salvate sub formă de tabel.

11
A. Interogare de selecţie
Extragerea informaţiilor din două tabele
Folosirea comenzii SELECT pentru extragerea de
informaţii din două tabele ale aceleiaşi baze de date,
care sunt legate printr-o relaţie:

Pentru această operaţie este necesar să folosim comanda


SELECT adăugând clauza JOIN, după cum urmează:

SELECT <listă de câmpuri>


FROM <nume tabel 1> INNER JOIN <nume tabel 2>
ON <regula de corespondenţă>
WHERE <condiţie>
ORDER BY <lista de campuri> [ASC /DESC]

12
Există trei variante de combinare a înregistrărilor din două
tabele care sunt legate printr-o relaţie:

INNER JOIN: combină înregistrările din cele două tabele ori


de câte ori acestea au aceeaşi valoare în câmpul comun al
celor două tabele;

LEFT JOIN: foloseşte acelaşi principiu, doar că include toate


înregistrările din primul tabel, chiar dacă pentru unele
dintre ele nu există valori cu care să se potrivească în câmpul
comun din al doilea tabel;

RIGHT JOIN: foloseşte acelaşi principiu, doar că include


toate înregistrările din al doilea tabel, chiar dacă pentru
unele dintre ele nu există valori cu care să se potrivească în
câmpul comun din primul tabel.
13
Prin urmare,

INNER JOIN este varianta adecvată de combinare a


înregistrărilor dacă cele două tabele sunt legate printr-o
relaţie de tip one-to-one, în timp ce LEFT JOIN şi RIGHT
JOIN sunt variantele adecvate de combinare a înregistrărilor
dacă cele două tabele sunt legate printr-o relaţie de tip one-
to-many;

De obicei este de preferat combinarea înregistrărilor prin


LEFT JOIN celei prin RIGHT JOIN, pentru a nu se pierde
înregistrările din tabelul primar pentru care nu există
corespondenţe în tabelul legat.

14
<Regula de corespondenţă> indică numele
câmpului comun al celor două tabele, în care se vor
căuta valorile identice după care să se facă potrivirea
înregistrărilor.

Deoarece în această situaţie comanda SELECT


foloseşte câmpuri din două tabele diferite ale
unei baze de date, pentru a nu avea erori este
esenţial să utilizăm numele complete ale câmpurilor
cu care se lucrează, precizând şi tabelul din care
provin acestea.

15
Exemplu

SELECT Pacienti.Nume, Ex_Fizic.Temperatura,


FROM Pacienti INNER JOIN Ex_fizic
ON Pacienti.ID=Ex_fizic.ID
Where Pacienti.judet="is“
Order by Examen_fizic.greutate DESC

16
INTEROGĂRI AVANSATE
Interogare reuniune
- union query-
Acest tip de interogare combină câmpurile (coloanele)
din una sau mai multe tabele sau interogări într-un
singur câmp sau coloană din rezultatele interogării.

Exemplu, dacă aveţi şase farmacii care transmit listele


de inventariere pe luni, puteţi combina aceste câmpuri
într-un singur set folosind o interogare reuniune şi apoi
să creaţi o interogare de creare tabelă bazată pe
interogarea reuniune pentru a obţine o nouă tabelă.

18
Interogare intersecţie
pass-through query

Acest tip de interogări transmite comenzile direct la bazele


de date ODBC, cum ar fi Microsoft SQL Server, folosind
comenzile care sunt acceptate de către server.

Exemplu: puteţi folosi o interogare intersecţie pentru a


regăsi articole şi a modifica datele.

19
Interogare de definire date
-data-definition query-

Acest tip de interogare creează sau alterează obiectele bazei


de date, cum ar fi tabelele Microsoft Access sau Microsoft
SQL Server.

20
Subinterogare - subquery
Acest tip de interogare constă dintr-o instrucţiune SQL SELECT în
interiorul unei interogări de selecţie sau de acţiune.

Puteţi introduce aceste instrucţiuni în linia Field a interogării pentru a


defini un nou câmp sau în linia Criteria pentru a defini criteriul pentru un
câmp.

Subinterogările se folosesc pentru:


a. A testa existența unui anumit rezultat din subinterogare (folosind
cuvintele rezervate EXISTS sau NOT EXISTS).

b. A găsi toate valorile care sunt egale cu, mai mari ca sau mai mici
decât valorile returnate de către subinterogare (folosind cuvintele
rezervate ANY, ÎN sau ALL).

c. A crea subinterogări din subinterogări (subinterogări imbricate).

21
III. CONSTRÂNGERI DE INTEGRITATE
 Pentru evitarea erorilor și asigurarea integrității
datelor, Acces verifică ce date pot fi introduse într-o
bază de date.

 Access furnizează mai multe modalități de a restrânge


intrările, structurate pe mai multe nivele:
1. Tipurile de date
2. Proprietățile câmpului
3. Validarea înregistrării

22
1.Tipurile de date
 Tipurile de date - reprezintă nivelul cel mai de jos a
procesului de verificare a intrărilor într-un câmp.

 Exemple:
 un câmp Number acceptă doar numere,
 un câmp Date/Time acceptă doar date calendaristice în
formatul specificat,
 un câmp Currency acceptă doar date monetare date,etc

23
2. Proprietățile câmpului
Proprietățile câmpului reprezintă
nivelul doi de verificare prin
restricționarea introducerii datelor la
nivel de câmp, prin:
 proprietatea Size a unui câmp
restricționează intrarea datelor
prin limitarea cantității de date.
 proprietatea Validation Rule
solicită valori specifice și utilizează
proprietatea Validation Text
pentru a furniza utilizatorilor un
mesaj de avertizare atunci când
Validation Rule este încălcată.
 măștile de intrare se aplică tot la
nivel de câmp și forţează
utilizatorii să introducă valori într-
un mod specific.
24
Măștile de intrare
Se aplică tot la nivel de câmp și forţează utilizatorii să
introducă valori într-un mod specific.
Măștile de intrare împiedică utilizatorii să introducă date
nevalide (un nr de telefon într-un câmp de tip dată).
Exemplu: o mască de intrare pentru numere de telefon:
 expresia 0000/000000 va determina afișarea în tabel a măștii
_ _ _ _/ _ _ _ _ _ _ . Cifra 0 forțează utilizatorul să introducă
o cifră între 0 și 9 . Fiecare zero indică o cifră obligatorie.
 expresia „0”000/000000 va va determina afișarea în tabel a
măștii 0_ _ _/ _ _ _ _ _ _ . În acest caz, cifra “0” reprezintă un
element predefinit și va fi afișat ca și o cifră. Celelalte zerouri
forțează utilizatorul să introducă o cifră între 0 și 9.
25
3. Validarea înregistrării
 Validarea înregistrării reprezintă nivelul trei de verificare
prin restricționarea introducerii datelor la nivelul întregii
înregistrări.

 Atunci când utilizatorii doresc să treacă la altă


înregistrare, Access verifică dacă sunt respectate
corelațiile impuse între câmpurile prezentei înregistrări.

26
IV. Reguli de validare
O regulă de validare reprezintă o modalitate de a
restricționa intrările într-un câmp al tabelului și pot fi
folosite și ca instrumente de control dintr-un formular.
Textul de validare vă permite să furnizați un mesaj de
atenționare atunci când utilizatorii introduc date ce nu
sunt valide.
Când sunt introduse date, Access verifică dacă intrarea
încalcă o regulă de validare și dacă așa este, intrarea nu
este acceptată fiind afișat un mesaj de eroare.

27
Reguli de validare existente în Access
 Regulă de validare câmp. Puteți utiliza o regulă de validare pentru a specifica un
criteriu pe care trebuie să-l îndeplinească toate valorile din câmp.
 Exemplu: un câmp de tip numeric ar putea avea o regulă de validare care nu permite
introducerea de valori mai mari decât valoarea specificată. Câmpurile de tip
AutoNumber, Oject OLE, Attachment nu acceptă reguli de validare.

 Validarea unui formular. Puteți utiliza proprietatea “Regulă de validare a unui


control“ dintr-un formular pentru a specifica un criteriu pe care trebuie să-l
îndeplinească toate valorile de intrare la acel control. Aplicată formularelor, regula
de validare funcționează ca și o regulă de validare pentru câmp.

 Regulă de validare înregistrare. Puteți utiliza o regulă de validare pentru a


specifica o condiție care trebuie să fie îndeplinită de toate înregistrările.
 Exemplu: o înregistrare cu două câmpuri tip dată calendaristică poate necesita că
valorile câmpului unui câmp să fie în corelație cu valorile introduse în alt câmp.

28
Regulă de validare înregistrare
Exemplu:
Presupunem că trebuie să gestionați stocul și medicația
prescrisă în cadrul unui spital și trebuie să aveți în vedere
data expirării produselor.
Aveți posibilitatea să definiți o regulă de validare pentru
înregistrarea care gestionează tratamentele prescrise astfel
încât să nu folosiți produse medicamentoase care sunt
expirate.
Astfel, expresia [UsingDate]<= [ExpirationDate] vă
asigură că un medic nu prescrie un medicament expirat

29
DE REȚINUT! : Puteți adăuga o regulă de validare a
câmpurilor și/sau o regulă de validare a înregistrărilor.

 O regulă de validare a câmpurilor verifică ce se


introduce într-un câmp și se aplică atunci când
focalizarea iese din câmp.

 O regulă de validare a înregistrărilor verifică ce se


introduce într-un câmp sau în mai multe și se aplică
atunci când focalizarea iese din înregistrare. De obicei,
o regulă de validare a înregistrărilor compară valorile a
două sau mai multe câmpuri.

30
Reguli de validare câmp
1. Metoda de a impune introducerea unei valori
2. Valori implicite (Default Value)
3. Indexarea
4. Definirea regulilor pentru validare
5. Crearea unei liste de valori (lookup wizard )

31
1. Metodă de impunerea unei valori
În cadrul proprietăților unui câmp există opțiunea Required
ce impune introducerea unei valori. Este de tip logic
(Yes/No). Prin activare nu se acceptă valori nule.

32
2. Valorile implicite (default)
Valorile implicite sunt introduse din start în câmpurile
destinație în momentul adăugării unei noi înregistrări. Sunt
utile în situația în care multe din înregistrări au informații
comune (de ex. județul de domiciliu, sau data înscrierii).

33
3. Indexarea
 Indexarea unei tabele reprezinta operatia prin care se

ordoneaza logic înregistrarile acesteia, dupa un


anumit atribut (sau un grup de atribute), numit
index, în scopul optimizarii cautarii si localizarii
ulterioare a anumitor date.

 Indexul se defineste la definirea structurii tabelului.

34
Indexare
 ajută la mărirea vitezei de căutare
a datelor
 permite ordonarea datelor
 poate fi folosită în verificarea
datelor ce se repetă.
Proprietatea Index are trei valori:
NO , Yes(Duplicates Ok) respectiv
Yes(No Duplicates).
Ordonarea se observă doar dacă nu
există cheie primară.
Exemplu – proprietate activată
pentru câmpul CNP – să nu avem
valori repetate.
35
 Cheia primara este considerata automat index.
 Index pentru un câmp: Field Properties > setăm
proprietatea Indexed acelui câmp pe valoarea Yes(No
Duplicates).

36
Index cu mai multe câmpuri

37
Vizualizarea câmpurilor indexate

38
4. Definirea regulilor pentru validare
Este necesar să verificăm corectitudinea valorii introduse.
Aceasta se poate realiza prin folosirea regulilor de validare.
Astfel putem impune condiții asupra datelor introduse funcție
de câmpul destinație.

39
Generatorul de expresii
Pentru crearea regulilor de validare se poate folosi
generatorul de expresii.

40
Operatori pentru crearea de expresii
utilizate în validarea datelor

41
Validation rule Validation text
<>0 Introduceți o valoare diferită de zero.
>=0 Valoarea trebuie să fie mai mare sau egal cu zero.

0 sau >100 Valoarea trebuie să fie 0 sau mai mare decât 100.
BETWEEN 0 AND 1 Valoarea trebuie să fie între 0 și 1.
<#01/01/2016# Introduceți o dată anterioară anului 2016.

>=#01/01/2015# AND <#01/01/2016# Data trebuie să fie în 2015.

<Date() Data trebuie să fie anterioară datei curente.

StrComp(UCase([NumeDeFamilie]),
Datele dintr-un câmp NumeDeFamilie trebuie scrise cu majuscule.
[NumeDeFamilie],0) = 0

>=Int(Now()) Now() returneaza Data trebuie să fie data de astăzi (preluată de la data calculatorului)
4/9/2017 1:30:42 PM
M or F Caracterele introduse pot fi M pentru masculin sau F pentru feminin.

Datele introduse trebuie să fie sub forma unei adrese de e-mail a carei
Like "[a-z]*@[a-z]*.[a-z][a-z]"
LIKE "[A-Z]*@[A-Z].[A-Z]”
extensie e formata din maxim 2 caractere care TREBUIE sa fie
LIKE "[A-Z]*@[A-Z].ro" OR
Datele introduse trebuie să fie sub forma unei adrese de e-mail cu una
"[A-Z]*@[A-Z].com" OR
din extensiile: .ro, .com sau .eu.
"[A-Z]*@[A-Z].eu"

((LIKE "*?@?*.?*") AND (NOT LIKE "*[ ,;]*")) Datele introduse trebuie să fie sub forma unei adrese de e-mail

Introduceți o dată necesară care are loc la nu mai mult de 30 de zile


[DatăExpediere]<=[DatăComandă]+30
după data comenzii.

Valoarea din câmpul EndDate trebuie să fie ulterioară celei introduse


[EndDate]>=[StartDate]
în StartDate. 42
III. Câmpuri calculate

Definirea unui camp calculat – Exemplul 1

43
Definirea unui camp calculat – Exemplul 2

44
Definirea unui camp calculat – Exemplul 3

45
III. Formatarea unui câmp
Proprietatea Format permite definirea caracteristicilor ce țin
de afişarea datelor.
Este doar pentru afişare și nu schimbă în realitate forma
datelor introduse.

46
Proprietatea FORMAT
Permite selectarea, dintr-o
listă derulantă, a unui
format standard,
predefinit, aplicabil
tipului de date ales
(exceptând tipul Text).

Opțiunea aleasă va
determina modul în care
vor fi afişate în valorile
câmpului.

47
Pentru tipul Text sau Memo
Simbol Descriere Exemplu

@ Este necesară introducerea unui caracter @@-@@@


(text-poate conţine şi numere). va afişa: 12-324

& Nu este necesară introducerea unui caracter


text
< Forţează afişarea folosind litere mici “Iași “ se va afişa: “iași”

> Forţează afişarea folosind litere mari “Iași “ se va afişa: “IAȘI”

48
EXEMPLUL 1 - Pentru tipul Text sau Memo

Sunt permise numai 2 caractere


Simbolul “-” NU se ia in calcul la
lungimea campului

Va afisa a-b sau 1-2

49
EXEMPLUL 2 - Pentru tipul Text sau Memo
Formatarea conţine două secţiuni, despărţite de semnul “;”.
Exemplu: dacă dorim ca în lipsa existenţei informaţiei text (practic şir
de lungime 0) să avem scris “necompletat” atunci vom folosi formatul:
@;”necompletat”. Dacă nu vom introduce caractere sau vom avea o
valoare nulă atunci se va scrie “necompletat”.

Va afisa un nr de telefon
sub forma 0744/507526
sau “necompletat”

50
EXEMPLUL 3 - Pentru tipul Text sau Memo

51
Formatarea câmpurilor numerice

52
Formatarea câmpurilor numerice
Există 4 secţiuni de definire a formatului: 1 ; 2 ; 3 ; 4
1-formatul pt. numere pozitive;
2-formatul pt. numere negative;
3-formatul pentru valori 0;
4-formatul pentru valori
NULL.

Ex: $#,##0.00[Green];($#,##0.00)[Red];"Zero";"Nul" Vom


avea semnul $ ca monedă, două zecimale chiar dacă sunt de
valoare 0, cerneală verde pentru valori pozitive respectiv roşie
pentru negative, valorile negative vor fi încadrate între paranteze
rotunde, se va scrie “Zero” pt 0 tespectiv “Nul” pentru valori nule.
53
Formatarea câmpurilor numerice- Exemple

54
Formatarea câmpurilor numerice - Exemplu

55
V. Măști de intrare
Măștile de intrare sunt constituite din trei părți: o parte obligatorie și două
părți opționale. Fiecare parte este separată prin punct și virgulă. Scopurile
acestor părți sunt următoarele:
 Prima parte este obligatorie. Aceasta include caracterele măștii, împreună
cu substituenți și date literale, precum paranteze, puncte și cratime.
 A doua parte este opțională și se referă la caracterele măștii încorporate
și la modul în care sunt stocate acestea în câmp.
 Dacă a doua parte este setată la 0, caracterele sunt stocate împreună cu datele.
 Dacă a doua parte este setată la 1, caracterele sunt doar afișate, nu stocate.
 Când este setată la 1 acestă opțiune, se economisește spațiul de stocare al bazei
de date.
 A treia parte din masca de intrare este, opțională și indică un singur
caracter sau spațiu utilizat ca substituent.
 În mod implicit, Access utilizează caracterul de subliniere (_) pentru a delimita
datele de intrare. Pentru a utiliza alt caracter, introduceți-l în a treia parte a măștii

Caracterele ; 0 sau ; Substituent


măștii 1 56
Caractere pentru realizarea măștilor de intrare
Caracter Explicație
0 Utilizatorul trebuie să introducă o cifră (între 0 și 9).
9 Utilizatorul poate să introducă o cifră (între 0 și 9).
# Utilizatorul poate introduce o cifră, un spațiu, semnul plus sau minus. Dacă omite, Access
introduce un spațiu necompletat.
L Utilizatorul trebuie să introducă o literă.
? Utilizatorul poate să introducă o literă.
A Utilizatorul trebuie să introducă o literă sau o cifră.
a Utilizatorul poate să introducă o literă sau o cifră.
& Utilizatorul trebuie să introducă un caracter sau un spațiu.
C Utilizatorul poate să introducă spații sau caractere.
.,:;-/ Substituenții de zecimale de mii, separatori de dată și de oră.
> Scrie cu majuscule toate caracterele ce urmează.
< Scrie cu litere mici toate caracterele ce urmează.
! Masca de intrare se completează de la stânga la dreapta, nu de la dreapta la stânga.

\ Caracterele imediat următoare vor fi afișate literal.


"" Caracterele încadrate între ghilimele duble vor fi afișate literal.
57
Mască de intrare Valoare afișată Explicații
Forțează utilizatorul să introducă simbolul unui judet (format obligatoriu
LL BC sau BV sau IL din două caractere).

Ghilimelele forțează afișarea caracaterelor dintre ele exact așa cum sunt.
"LAC#" LAC#
Trebuie să introduceți un prefix, deoarece prima secțiune a măștii (000,
(000) 000-0000 (206) 555-0199 închisă între paranteze) utilizează cifra 0.

În acest caz, secțiunea de prefix utilizează cifra 9, prin urmare, prefixele


(206) 555-0199 sunt opționale. De asemenea, semnul de exclamație (!) determină ca
(999) 000-0000! masca să pornească de la stânga la dreapta.
( ) 555-0199

(100) 120/100 Afișarea valorii tensiunii arteriale sistolice și diastolice precedată de vârsta
!(999) 000/000 (_45) 140/070 pacientului (opțională).
() 180/90
Vă permite să substituiți ultimele patru cifre ale unui nr. telefon de tip
(000) AAA-AAAA (206) 555-TELE S.U.A cu litere. Utilizarea cifrei 0 în secțiunea de prefix, determină ca
prefixul să fie obligatoriu.

-20 Orice număr pozitiv sau negativ, cu maxim patru caractere și fără
#999 separator de mii sau zecimale.
2000
O combinație de litere obligatorii (L) și opționale (?) și numere obligatorii
(0). Semnul > obligă toți utilizatorii să introducă literele cu majusculă.
GREWNGR339M3 Pentru a utiliza o mască de intrare de acest tip, trebuie să setați tipul de
>L????L?000L0
MAS R 452B7 date din câmpul de tabele la Text sau Memo.

98115- Un cod poștal obligatoriu și o secțiune opțională de patru cifre.


00000-9999
98115-3007
Prima literă scrisă automat cu majusculă.
>L<?????????????? Cristina
Un șir de caractere predefinite la început (ISBN), o cifră obligatorie la
ISBN 0-&&&&&&&&&-0 ISBN 1-55615-507-7 început & sfârșit și orice combinație de litere și caractere dintre aceste
cifre. 58

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