Documente Academic
Documente Profesional
Documente Cultură
• 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.
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.
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.
8
C. Interogările tip tabel încrucişat
• Centralizează în formatul unei foi de calcul tabelar datele
din unul sau mai multe tabele.
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.
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
12
D1. Interogare de ştergere
Permite ştergerea unui grup de articole din una sau mai
multe tabele.
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.
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.
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
23
Interogări (queries) SQL
II. Adăugare de noi înregistrări într-un tabel :
24
Interogări (queries) SQL
III. Modificarea conţinutului înregistrărilor
unui tabel
25
Interogări (queries) SQL
IV. Ştergerea înregistrărilor dintr-un tabel:
26
I. Extragerea de informaţii: SELECT
Sintaxa generală şi simplificată a comenzii SELECT este:
FROM <nume tabel>: reprezintă numele tabelului din care se aleg informaţiile care vor
fi extrase şi afişate;
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
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:
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 „=”
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:
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*”
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:
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ă:
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
39
III. Reguli pentru construirea de expresii folosind
câmpuri de tip Date/Time:
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 !!!
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
43