Sunteți pe pagina 1din 43

Curs 4

Conf. dr. Gladiola ANDRUSEAC


CUPRINS
I. INTEROGĂRI
• Tipuri de interogări
• A. Interogările de selecţie
• B. Interogările parametrice
• C. Interogările de tip tabel încrucișat
• D. Interogările de acțiune

• Interogări SQL

2
Interogări (Queries)
Interogarea constă în extragerea datelor dintr-o tabelă
(tabele), dintr-o interogare anterioară sau din ambele,
prelucrarea acestora într-o formă mai mult sau mai puţin
complexă şi furnizarea informaţiilor către utilizatori.

Rezultatele interogărilor pot fi folosite ca atare sau pot


constitui sursă de înregistrări pentru crearea formularelor şi
rapoartelor.

3
Operaţii realizate cu interogări
• extragerea din tabele numai a câmpurilor relevante pentru
utilizatori;
• extragerea înregistrărilor (datelor) din una sau mai multe tabele
prin specificarea unor criterii de selecţie;
• regăsirea şi ordonarea datelor după anumite criterii;
• crearea de câmpuri calculate;
• realizarea unor informaţii sintetice pe baza informatiilor extrase;
• crearea de noi tabele
• adăugarea/ ştergerea/ actualizarea înregistrărilor din tabele;
• combinarea şi compararea ieşirilor prin realizarea mai multor
interogări în acelaşi timp;
• interogarea altor baze de date (FoxPro, SQL Server, Oracle);
• pregătirea datelor în vederea afişării lor în formulare sau rapoarte.

4
Tipuri de interogări
În Microsoft Access se pot crea următoarele tipuri de
interogări:
A. interogări de selecţie;

B. interogări parametrice;

C. interogări încrucişate;

D. interogări de acţiune.

5
A. Interogările de selecţie
Interogările de selecţie extrag informaţii din unul sau mai multe
tabele şi le afişează sub formă de listă.
 Sunt cel mai uşor de creat şi au avantajul că pot afişa un număr redus
de date dintr-un tabel de mare capacitate (datele care îndeplinesc
condiţiile specificate).
 Permit şi modificarea rezultatului afişat, modificare ce va fi văzută
şi în tabelul sursă.
 Permit şi folosirea de parametri, cum este reuniunea de câmpuri din
tabele între care nu există nici o legătură precum şi efectuarea de
calcule.

6
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.

7
B. Interogările parametrice
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.
 o funcţie parametru putând fi folosită pentru toate celelalte interogări
prezentate anterior;
 ele folosesc în mod repetat o interogare, efectuând modificări în
criteriile de selecţie.

Puteţi proiecta interogarea pentru a solicita mai mult de o singură


componentă a informaţiei.
Exemplu, puteţi proiecta interogarea pentru a solicita două valori
(minim și maxim). Interogarea va regăsi toate datele care se
încadrează în domeniul specificat.

8
C. Interogările tip tabel încrucişat
• Centralizează în formatul unei foi de calcul tabelar datele
din unul sau mai multe tabele.

• Datele rezultate după execuţia unei astfel de interogări sunt


prezentate într-un format potrivit pentru analiza datelor şi
crearea de grafice.

9
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.

10
D. Interogările de acţiune
Interogările de acţiune creează un nou tabel în baza de date sau
realizează modificări majore ale unui tabel existent.

Există patru tipuri de interogări de acţiune:


1. – interogări de generare a unui nou tabel din datele conţinute în setul
de rezultate al interogării;
2. – interogări de adăugare/ ştergere/ modificare a înregistrărilor
într-un tabel (conform cu o condiţie ce trebuie îndeplinită);
Acţiunile acestora sunt ireversibile asupra datelor din tabelele sursă, iar în
cazul ultimelor trei dintre ele, trebuie urmărită păstrarea integrităţii
referenţiale atunci când prin intermediul lor se acţionează asupra mai
multor tabele legate.

11
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.

12
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.

13
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.

14
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ă.

15
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.

16
Realizarea interogării datelor
Interogarea datelor din tabele se realizează în două moduri:
• în mod grafic prin interfaţa Query By Example (QBE);
• prin limbajul SQL sub formă de blocuri de cerere.

Access oferă trei posibilităţi pentru definirea interogării şi afişarea


rezultatelor acesteia.
– Design View – fereastră sub forma unei grile de interogare, în care se
defineşte interogarea;
– Datasheet View – fereastră în care se afişează rezultatele interogării;
– SQL View – fereastră în care Access generează automat codul SQL al
interogării QBE; aceeaşi fereastră este folosită şi pentru scrierea directă
a unei interogări cu ajutorul instrucţiunilor SQL.

17
Limbajul standard SQL
SQL - Structured Query Language a fost
conceput ca un limbaj standard de descriere a datelor şi
acces la informaţiile din bazele de date, ulterior
dezvoltându-se ca o adevărată tehnologie dedicată
arhitecturilor client-server.
 7 versiuni
 IBM – DB2
 Institutului Naţional American de Standarde (ANSI)
 Microsoft, Borland;
 consorţiile industriale
 SAG (The SQL Access Group)
 X/Open.

18
Comenzi SQL
Comenzile principale în cazul limbajului SQL se referă la
cele cinci operaţii de bază care se pot efectua într-un limbaj
relaţional:
1. Crearea/ştergerea unei tabele;
2. Inserarea de noi linii intr-o tabelă;
3. Ştergerea unor linii dintr-o tabelă;
4. Modificarea unor linii dintr-o tabelă;
5. Listarea selectivă a datelor din una sau mai multe
tabele.

19
Interogări (queries) SQL
 O interogare (query) este un obiect Access care se
construieşte în jurul unei instrucţiuni SQL, SQL
(Structured Query Language) fiind un limbaj pentru
accesarea bazelor de date relaţionale.

 Interogările scrise în acest limbaj sunt folosite pentru


extragerea/ inserarea/ editarea/ stergerea de
informaţii din baza de date.

20
Interogări SQL
În Access există două moduri pentru crearea interogărilor:
1. modul de scriere efectivă a cererilor în partea de
Queries
2. un mod grafic - Design View.

21
Interogări (queries) SQL
Interogările SQL sunt în principal de patru tipuri:
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 unui


tabel

IV.Ştergerea înregistrărilor dintr-un tabel.

Interogarile (queries) pot fi facute pentru una sau mai


multe tabele existente în baza de date. 22
Interogări (queries) SQL
I. Extragere de informaţii din baza de date:

SELECT nume_camp1, nume_camp2, … FROM


nume_tabel WHERE condiţie ORDER BY
numecamp [ASC|DESC]

23
Interogări (queries) SQL
II. Adăugare de noi înregistrări într-un tabel :

INSERT INTO tabel (câmp1, câmp1, ...)


VALUES (valoare1, valoare2, ...)

24
Interogări (queries) SQL
III. Modificarea conţinutului înregistrărilor
unui tabel

UPDATE nume_tabel SET


nume_câmp1=valoare1,
nume_câmp2=valoare2,... WHERE condiţie

25
Interogări (queries) SQL
IV. Ştergerea înregistrărilor dintr-un tabel:

DELETE FROM nume_tabel


WHERE condiţie

26
I. Extragerea de informaţii: SELECT
Sintaxa generală şi simplificată a comenzii SELECT este:

SELECT <listă de câmpuri> FROM <nume tabel>


WHERE <condiţie>
ORDER BY <lista de câmpuri> [ASC /DESC], unde:
 <listă de câmpuri>: se foloseşte pentru a specifica unul sau mai multe câmpuri /
coloane din tabel care vor fi selectate şi afişate prin comanda de interogare;

 FROM <nume tabel>: reprezintă numele tabelului din care se aleg informaţiile care vor
fi extrase şi afişate;

 WHERE <condiţie>: se foloseşte pentru a indica un criteriu de filtrare a înregistrărilor /


liniilor tabelului, astfel încât vor fi selectate doar înregistrările care îndeplinesc acel
criteriu;

 ORDER BY <lista de câmpuri> [ASC /DESC]: se foloseşte pentru a defini un criteriu de


ordonare a înregistrărilor selectate din tabel, după valorile specificate în lista de câmpuri;
ordinea implicită în care sunt aşezate înregistrările este cea crescătoare, [ASC], iar dacă
dorim ca înregistrările să fie aşezate în ordine descrescătoare trebuie să folosim
parametrul [DESC].

27
Exemple pentru comanda SELECT
SELECT <listă de câmpuri> FROM <nume tabel>
unde:
Câmpurile se precizează indicând exact numele lor,
separate prin virgulă.
Ex. 1: Pentru a afişa, din tabelul Pacienti, vârsta, sexul şi
anamneza pacienţilor, interogarea va avea sintaxa:
SELECT Varsta, Sex, Anamneza FROM Pacienti

Ex. 2: Pentru a afişa, din tabelul Pacienti toate


campurile, interogarea va avea sintaxa
SELECT * FROM Pacienti
28
Reguli pentru numele campurilor
 Dacă se lucrează cu câmpuri având numele format dintr-un
singur cuvânt (nume simple), este suficient să precizăm în
comanda SELECT doar numele acestora:
SELECT NumePrenume, DataNasterii FROM Pacienti

 Dacă se lucrează cu câmpuri având numele format din mai


multe cuvinte şi eventual alte semne de punctuaţie (nume
compuse), în mod obligatoriu acestea vor trebui incluse între
paranteze pătrate:
SELECT [Nume Prenume], [Data Nasterii] FROM Pacienti
29
Regula sintactică completă pentru a specifica numele
unui câmp al unui tabel presupune, în general, şi
indicarea numelui tabelului din care provine acesta,
într-o construcţie de forma: nume tabel.[nume câmp]
Comenzile SELECT complete ar fi fost:

SELECT Pacienti.[Varsta], Pacienti.[Sex],


Pacienti.[Anamneza] FROM Pacienti
Sau

SELECT Pacienti.[Nume], Pacienti.[Data nasterii],


Pacienti.[Varsta] FROM Pacienti

30
CRITERII DE INTEROGARE
Selectarea înregistrărilor care îndeplinesc o anumită
condiţie dintr-un tabel al unei baze de date:
SELECT <listă de câmpuri> FROM <nume tabel>
WHERE <condiţie>
unde
condiţia este o expresie în Access, scrisă folosind
regulile de editare ale acesteia, care depind în principal
de tipul de dată al câmpurilor utilizate.

31
Forma generală a unei condiţii în Access este:
[nume câmp] operator <expresie>
sau, în cazul în care se doreşte combinarea mai multor condiţii:

1. când se doreşte ca aceste condiţii să fie îndeplinite simultan


<condiţie 1> AND <condiţie 2> AND … AND <condiţie n>

2. când se doreşte ca măcar una dintre aceste condiţii să fie


îndeplinită, fiecare dintre condiţiile specificate
<condiţie 1> OR <condiţie 2> OR … OR <condiţie n>

unde
<condiţie 1>, <condiţie 2>, … <condiţie n> fiind de forma
indicată mai sus: [nume câmp] operator <expresie>.

32
Reguli pt expresii
I. Reguli pentru construirea de expresii folosind
câmpuri de tip Text sau Memo:
 Valoarea căutată în câmpul respectiv se va specifica
întotdeauna între ghilimele, „ ”
 Pentru a se căuta potrivirile exacte se foloseşte
operatorul „=”

Ex. Sa se afiseze toti pacientii cu numele “Geogescu”


SELECT * FROM Pacienti
WHERE [NUME] = „GEORGESCU”

33
Pentru a se căuta potrivirile parţiale se foloseşte:
 operatorul LIKE
 simbolurile de tip „wildcard”:
 * care înlocuieşte orice şir de caractere, de lungime
neprecizată,
 ? care înlocuieşte un singur caracter:

Ex.: Pentru a afişa, din tabelul Pacienti, pacienţii al căror


nume începe cu litera G, interogarea va avea sintaxa:
SELECT * FROM Pacienti
WHERE [NUME] LIKE „G*”

34
Pentru a afişa, din tabelul PACIENTI, pacienţii al căror
nume NU începe cu litera G, interogarea va avea
sintaxa:
SELECT * FROM Pacienti
WHERE [NUME] NOT LIKE „G*”

Pentru a afişa, din tabelul Pacienti, pacienţii al căror


nume se termină cu literele „escu”, interogarea va avea
sintaxa:
SELECT * FROM Pacienti
WHERE [NUME] LIKE „*ESCU”

35
Pentru a afişa, din tabelul Pacienti, pacienţii al căror
nume începe cu literele D, E, F sau G, interogarea va
avea sintaxa:

SELECT * FROM Pacienti


WHERE [NUME] LIKE „[D-G]*”

Când dorim să indicăm un caracter care aparţine unui şir


de caractere, este suficient să precizăm şirul respectiv
între paranteze pătrate [], iar dacă şirul conţine caractere
consecutive, se vor indica doar primul şi ultimul
caracter, iar între ele se pune semnul -).

36
Pentru a se căuta potrivirile multiple, se poate folosi
operatorul IN, urmat o listă de şiruri de caractere, ceea ce
înseamnă că vor fi selectate toate înregistrările care conţin în
câmpul specificat unul dintre şirurile de caractere indicate în
listă:

Ex: Pentru a afişa, din tabelul PACIENTI, pacienţii care au în


anamneză „febra” sau „cefalee”, interogarea va avea sintaxa:
SELECT * FROM Pacienti
WHERE Anamneza IN ( „FEBRA”, „CEFALEE”)
sau
SELECT * FROM Pacienti
WHERE Anamneza= „FEBRA” OR Anamneza = „CEFALEE”

37
II. Reguli pentru construirea de expresii folosind câmpuri de
tip Number sau AutoNumber:
Valoarea căutată în câmpul respectiv se va specifica direct,
fără ghilimele;
Operatorii disponibili sunt: =, <>, <, <=, >, >=, BETWEEN:
Ex:
Pentru a afişa, din tabelul Pacienti, pacienţii cu vârsta de 30
de ani, interogarea va avea sintaxa:
SELECT * FROM Pacienti
WHERE Varsta=30

Pentru a afişa, din tabelul Pacienti, pacienţii cu vârsta peste


30 de ani, interogarea va avea sintaxa:
SELECT * FROM Pacienti
WHERE Varsta >=30
38
Pentru a afişa, din tabelul Pacienti, pacienţii cu vârsta
între 30 şi 35 de ani, interogarea va avea sintaxa:

SELECT * FROM Pacienti


WHERE Varsta BETWEEN 30 AND 35
sau

SELECT * FROM Pacienti


WHERE Varsta >= 30 AND Varsta <= 35

39
III. Reguli pentru construirea de expresii folosind
câmpuri de tip Date/Time:

Valoarea căutată în câmpul respectiv se va specifica între


semnele # #;
Operatorii disponibili sunt: semnul EGAL şi
BETWEEN, la care se pot adăuga funcţiile care utilizează
date calendaristice, respectiv:
YEAR(dată calendaristică) – returnează anul din data
calendaristică introdusă;
MONTH(dată calendaristică) – returnează luna din data
calendaristică introdusă;
DAY(dată calendaristică) – returnează ziua din data
calendaristică introdusă;
DATE() – returnează data curentă a sistemului;
NOW() – returnează data şi ora curentă a sistemului.

40
Exemple:
Pentru a afişa, din tabelul PERSOANE, pacienţii care s-au născut pe 20 iunie 2000, interogarea va avea
sintaxa:
SELECT * FROM PERSOANE
WHERE [DATA NASTERII] = #6/20/2000#

Pentru a afişa, din tabelul PERSOANE, pacienţii care s-au născut în luna iunie 2000, interogarea va avea
sintaxa:
SELECT * FROM PERSOANE
WHERE [DATA NASTERII] BETWEEN #6/1/2000# AND #6/30/2000#

Pentru a afişa, din tabelul PERSOANE, pacienţii care s-au născut în anul 2000, interogarea va avea sintaxa:
SELECT * FROM PERSOANE
WHERE YEAR([DATA NASTERII]) = 2000

Pentru a afişa, din tabelul PERSOANE, pacienţii care s-au născut în luna iunie, indiferent de an,
interogarea va avea sintaxa:
SELECT * FROM PERSOANE
WHERE MONTH([DATA NASTERII]) = 6

Pentru a afişa, din tabelul PERSOANE, pacienţii care s-au născut într-o zi de 23, indiferent de lună şi an,
interogarea va avea sintaxa:
SELECT * FROM PERSOANE
WHERE DAY([DATA NASTERII]) = 23

Pentru a afişa, din tabelul PERSOANE, pacienţii care s-au născut în anul curent, interogarea va avea
sintaxa:
SELECT * FROM PERSOANE
WHERE YEAR([DATA NASTERII]) = YEAR(DATE()) 41
III. Reguli pentru construirea de expresii folosind câmpuri de tip
Yes/No:
Valoarea căutată în câmpul respectiv se va specifica direct;
indiferent de formatul indicat pentru câmp, valorile YES, TRUE şi
ON sunt echivalente, la fel ca şi valorile NO, FALSE şi OFF;
Operatorii disponibili sunt = şi <>.

Ex:
Pentru a afişa, din tabelul PERSOANE, pacienţii care au asigurare
de sănătate, interogarea va avea sintaxa:
SELECT * FROM PERSOANE
WHERE CAS = YES NU SE FOLOSESC GHILIMELE !!!

Pentru a afişa, din tabelul PERSOANE, pacienţii care nu au


asigurare de sănătate, interogarea va avea sintaxa:
SELECT * FROM PERSOANE
WHERE CAS = NO NU SE FOLOSESC GHILIMELE !!!

42
Condiţiile de filtrare a înregistrărilor dintr-un tabel pot fi
combinate fără nici un fel de restricţii, şi se pot referi la mai multe
câmpuri ale tabelului; de asemenea, ele pot fi combinate şi cu
selectarea anumitor câmpuri din tabel, nefiind obligatorie afişarea
tuturor câmpurilor atunci când selectăm înregistrări dintr-un
tabel.

Exemplu:
Pentru a afişa, din tabelul PERSOANE, pacienţii de sex feminin şi
cu vârsta peste 30 de ani, interogarea va avea sintaxa:
SELECT * FROM PERSOANE
WHERE SEX=”F” AND VARSTA>30

Pentru a afişa, din tabelul PERSOANE, numele pacienţilor de sex


feminin şi cu vârsta peste 30 de ani, interogarea va avea sintaxa:
SELECT [NUME] FROM PERSOANE
WHERE SEX=”F” AND VARSTA>30

43

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