Documente Academic
Documente Profesional
Documente Cultură
Lucrare laborator 6
Obiective
Subinterogări
1. Subinterogări
În exemplul prezentat, SELECT * FROM t1 ... este interogarea exterioară, iar (SELECT
column1 FROM t2) este subinterogare. O subinterogare poate conț ine la rândul ei alte
subinterogări. Ele trebuie să fie delimitate tot timpul de paranteze.
Avantajele principale ale subinterogărilor:
Permit structurarea interogărilor, deoarece este posibilă izolarea secț iunilor unei
instrucț iuni.
Reprezintă o alternativă a interogărilor care implică operaț ii complexe de joncț iune
ș i uniune.
Se consideră că sunt mai uș or de urmărit decât joncț iunile complexe. Introducerea
subinterogărilor în limbajul SQL a determinat denumirea acestuia ca „Limbaj de
interogare structurat” ( Structured Query Language).
Principalul dezavantaj în utilizarea interogărilor este că în multe cazuri sunt depăș ite ca
performanț ă în execuț ie de interogările echivalente care utilizează joncț iuni.
O subinterogare poate returna o valoare unică, o linie de tabel, o coloană a unui tabel, sau un
tabel (una sau mai multe linii ș i coloane). În funcț ie de valoarea returnată, ele sunt numite
subinterogări scalare, subinterogări coloană, subinterogări linie sau subinterogări tabel.
Subinterogarea poate fi plasata în una din următoarele clauze: WHERE, HAVING,
FROM, SELECT.
Subinterogarea se execută prima dată, iar rezultatul este folosit pentru obţinerea
rezultatului de către interogarea principală (outer query).
Subinterogările sunt utilizate cel mai frecvent în clauza WHERE. Ele poartă denumirea
ș i de subinterogări imbricate (nested subqueries).
Baze de Date
SELECT lista_de_coloane1
FROM lista_tabele1
WHERE expresie operator
(SELECT lista_coloane2
FROM lista_tabele2
WHERE conditii);
Unde operator poate fi unul din operatorii [NOT] IN, EXIST, ANY, ALL, SOME,<, >...
Exemple:
1.Să se afiș eze angajaț ii care lucrează în acelaș i departament cu angajatul cu id-ul 110.
2.Aflaț i numele angajaț ilor care au salariul mai mare decât angajatul cu numele Luis Popp.
3.Să se afiș eze angajaț ii care au un salariu mai mic decât salariul mediu.
4.Afiș aț i angajaț ii al căror job este acelaș i cu cel al angajatului cu numărul 157 ș i al
căror salariu este mai mare decât cel al angajatului cu numărul 110.
Subinterogările multiple-row sunt acele subinterogări care dau ca rezultat mai multe
valori. Folosesc operatorii multiple row: IN, ANY, ALL. Operatorul NOT poate fi folosit în
combinaţie cu oricare dintre aceştia.
Exemple:
1.Să se afiș eze angajaț ii care lucrează în acelaș i departament cu angajatul cu numele King.
2.Aflaț i numele angajaț ilor care au salariul mai mare decât toț i angajaț ii din
departamentul 50.
3.Aflaț i numele angajaț ilor care au salariul mai mare decât vreun angajat din departamentul
50.
3. Subinterogări corelate
Exemple:
1.Să se găsească toț i angajaț ii care câș tigă mai mult decât media salariilor din
departamentele în care lucrează.
Baze de Date
2.Să se afiș eze detalii despre acei angajaț i care ș i-au schimbat funcț iile (job-ul) de cel
puț in două ori.
4. Exerciții
1. Afiș aț i angajaț ii care au acelaș i job cu Luis Popp.
2. Afiș aț i angajaț ii care s-au angajat la aceeaș i dată cu Luis Popp sau după acesta.
3. Afiș aț i angajaț ii care câș tigă mai mult decât oricare funcț ionar (CLERK).
4. Afiș aț i numele departamentelor din Seattle.
5. Afiș aț i numele departamentelor aflate în aceeaș i locaț ie cu departamentul
Finance.
6. Afiș aț i angajaț ii care lucrează într-un departament cu măcar un angajat al cărui
nume începe cu litera A.
7. Afiș aț i angajaț ii care au subordonaț i (sunt manageri).
8. Afiș aț i angajaț ii care nu au subordonaț i (nu sunt manageri).
9. Afiș aț i locaț iile în care nu există niciun departament.
10. Afiș aț i numele, data angajarii (hire_date) si salariul pentru toti angajatii care au
acelasi salariu si comision precum Kochhar.
11. Găsiţi numele pentru toţi angajaţii ale căror salarii sunt aceleaşi cu salariul minim din
oricare departament.
12. Afiș aț i toț i salariaț ii care s-au angajat după toț i angajaț ii din departamentul
numărul 30.
13. Afiș aț i angajaț ii care lucrează în acelaș i departament cu angajatul cu numele
Taylor ș i au acelaș i salariu cu anagajatul cu numărul 199.
14. Afiș aț i angajaț ii care câș tigă salariul maxim din departamentul în care lucrează.
15. Afiș aț i angajatii care au salariul mai mare decât jumătate din salariul maxim setat
pentru tipul lor de job.
Baze de Date
16. Găsiț i numele ș i salariul fiecărui angajat care este subordonat managerului cu
numele King.