Baze de date. Limbajul SQL. Teams: FI-AIA-2-Baze de date-2021/2022. Adrian Runceanu

Documente similare
Aggregating Data

Laborator5_SQL_an2

Managementul Resurselor Umane

Laborator 8: PROIECTAREA BAZELOR DE DATE SUBPROGRAME in PL/SQL (partea II - functii) Un subprogram este un bloc PL/SQL cu nume (spre deosebire de bloc

Baze de date

ADRIAN TRIF BAZE DE DATE APLICAŢII ACCESS UTPRESS Cluj-Napoca, 2019 ISBN

Microsoft Word - Curs_07.doc

Laborator 7: PROIECTAREA BAZELOR DE DATE SUBPROGRAME in PL/SQL (partea I - proceduri) Un subprogram este un bloc PL/SQL cu nume (spre deosebire de blo

PowerPoint Presentation

PHP (II)

Baze de date-Anul 2 (semestrul 2)

Prezentarea calculatorului

proiectarea bazelor de date

Mai multe despre optimizare

Laborator02

Anexa nr. 2 FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior UNIVERSITATEA DE VEST TIMISOARA 1.2 Facultatea FIZICA 1.3 De

PowerPoint Presentation

PowerPoint Presentation

Microsoft Word - Curs 11 - PHP.doc

RZOLVARE EXERCITIU ZODII declare cursor distributie_zodie is select nume_zodie, count(*) distributie from zodiac z join utilizatori u on to_date(to_ch

PowerPoint Presentation

tehnologii web

Top

Proceduri stocate Syntax: CREATE PROCEDURE <Name> type1,...] AS -- secventa de comenzi SQL GO O procedura stocata se ruleaza cu EXEC: EXEC <N

Utilizare Internet

Database Management Systems Cap 2. Structured Query Language (1)

PowerPoint Presentation

Addendum Syllabus 6 Microsoft Access 2016 REF Syllabus 6.0 Cunoașterea domeniilor în care se utilizează bazele de date Datorită potenţialului ma

Platforma 5. 1 Introducere in MSSQL Introducere Pe parcursul ultimilor ani, se poate observa o cuplare a limbajelor de programare majore cu tipuri de

Baze de date - Anul 2 Laborator 8 Limbajul de definire a datelor (LDD) (partea I) În general, instrucţiunile LDD sunt utilizate pentru definirea struc

Baze de date - Anul 2 Laborator 9 Limbajul de definire a datelor (LDD) - II : Definirea vizualizărilor, secvenţelor, indecşilor, sinonimelor, tabelelo

PPSD

Microsoft Word - Fisa disciplinei BD_I_IE doc

Microsoft Word _POO_Lab_1_Modificari_v01.htm

PowerPoint Presentation

Baze de date-Anul 2

Matrici și vectori în VBA În VBA, o matrice este un grup de variabile de același tip. De ce ar trebui să utilizați o matrice? Presupunem că ați vrut s

Paradigme de programare

Programarea şi utilizarea calculatoarelor

Elemente de Web design

Prezentarea calculatorului

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O

Logică și structuri discrete Limbaje regulate și automate Marius Minea marius/curs/lsd/ 24 noiembrie 2014

Utilizarea îmbinării corespondenței pentru crearea şi imprimarea scrisorilor şi a altor documente Dacă utilizați îmbinarea corespondenței când doriți

Microsoft Word - Curs_08.doc

Microsoft Word - O problema cu bits.doc

MergedFile

PowerPoint Presentation

Paradigme de Programare

Diapositive 1

EXCEL FĂRĂ SECRETE Grafice şi diagrame

PowerPoint Presentation

PROIECT DIDACTIC Clasa a VII-a Informatică și TIC

1

1. Găsiți k numerele cele mai apropiate într-un şir nesortat Dându-se un şir nesortat și două numere x și k, găsiți k cele mai apropiate valori de x.

Microsoft Word - Curs_09.doc

Limbaje de Programare Curs 6 – Functii de intrare-iesire

Microsoft Word - lab-fr_3

Microsoft Word - CarteC.doc

DREPT (R)

Utilizare Internet

PowerPoint Presentation

Baze de date Anul 2 Teorie Examen 1. Diagrama entitate/relatie si diagrama conceptuala (curs 2-5) 2. Arbore algebric si expresie algebrica (curs 6-10)

Laborator 2 Incompatibilităţi/Diferenţe între C şi C++ Completări C++ Supraîncărcarea (redefinirea) numelui de funcţii În C nu este permisă existenţa

Gestionarea I/E

MENȚIUNI LEGALE Acest site stabilește instrucţiunile pentru utilizatorii de internet care vor vizita acest website. Fiecare utilizator îşi asumă răspu

MODUL RETAIL

Microsoft Word - Fisa disciplinei_BD2_DM_ doc

Matematici aplicate științelor biologie Lab05 MV

Microsoft Word - Excel_3.DOC

Utilizarea Internetului in Afaceri FSEGA, UBB Lect.univ.dr. Daniel Mican LABORATOR 4. Dezvoltarea site-urilor si blog-uri

Analiză statică Analiza fluxului de date 23 octombrie 2014

Microsoft Word - CarteC.doc

Lucrarea nr


Proiectarea Sistemelor Software Complexe

rules_ro

PowerPoint Presentation

PowerPoint Presentation

Packet Tracer - Configurarea ACL-urilor extinse - Scenariul 1 Topologie Tabela de Adresare R1 Echipament Interfață Adresă IP Masca de subreţea Default

Crearea ghidului de studiu Syllabus

Microsoft Word - Politică de cookie-uri OK_v1.docx

E_d_Informatica_sp_SN_2014_bar_10_LRO

Instructiuni licenta - 2

Microsoft Word - Apostol & Balaceanu 6p.doc

Microsoft PowerPoint - BarometrulInd-V11(oct15)RO.ppt

E_d_Informatica_sp_MI_2015_bar_02_LRO

ACORD DE PARTENERIAT

SECURITATE ȘI CRIPTOGRAFIE

Universitatea Ştefan cel Mare Suceava Cod: PO DAG-01 Ediţia: 1 Revizia: 2 PROCEDURĂ privind colectarea de informaţii referitoare la statutul socio-pro

Microsoft Word - lab1_2007.doc

Microsoft Word - lab_access.doc

Laborator 3 - Simulare. Metode de tip Monte Carlo. I. Estimarea ariilor şi a volumelor RStudio. Nu uitaţi să va setaţi directorul de lucru: Session Se

Subiectul 1

B

CD180 Romanian quick start guide

Transcriere:

Baze de date Limbajul SQL Teams: FI-AIA-2-Baze de date-2021/2022 Adrian Runceanu

Curs 5 Limbajul SQL Curs 5 - BAZE DE DATE 2

Limbajul SQL 5. Subinterogări (Subqueries) 5.1. SINGLE ROW SUBQUERIES 5.2. MULTIPLE ROW SUBQUERIES Curs 5 - BAZE DE DATE 3

5. SUBQUERIES (Subinterogari) În SQL, subinterogările ne permit să aflăm o informaţie care ne este necesară pentru a obţine informaţia pe care o vrem. O subinterogare (subquery) este o instrucţiune SELECT care este inclusă în clauza unei alte instrucţiuni SELECT. Curs 5 - BAZE DE DATE 4

5. SUBQUERIES (Subinterogari) Subinterogarea poate fi plasata în una din următoarele clauze: WHERE HAVING FROM Subinterogarea se execută prima dată, iar rezultatul este folosit pentru obţinerea rezultatului de către interogarea principală (outer query). Curs 5 - BAZE DE DATE 5

5. SUBQUERIES (Subinterogari) Sintaxa generală: SELECT select_list FROM table WHERE expression operator (SELECT select_list FROM table); Curs 5 - BAZE DE DATE 6

5. SUBQUERIES (Subinterogari) Reguli de folosire a subinterogarilor O subinterogare se pune între paranteze rotunde O subinterogare este plasată în partea dreaptă a unei condiţii de comparare Interogarea exterioară şi subinterogarea-ul pot prelua date din tabele diferite Curs 5 - BAZE DE DATE 7

5. SUBQUERIES (Subinterogari) Într-o instrucţiune SELECT se poate folosi o singură clauză ORDER BY şi, dacă se foloseşte, trebuie să fie ultima clauza a interogării principale. Un subquery nu poate avea propria clauză ORDER BY. Singura limită a numărului de interogări este dimensiunea buffer-ului folosit de interogare. Dacă subinterogarea returnează null sau nu returneaza nici o linie, atunci interogarea exterioară nu va returna nimic. Curs 5 - BAZE DE DATE 8

5. SUBQUERIES (Subinterogari) Sunt două tipuri de subinterogări(subqueries): 1) single-row subqueries care folosesc operatorii singlerow: >, =, >=, <, <= şi dau ca rezultat o singură linie. 2) multiple-row subqueries care folosesc operatorii multiple-row: IN, ANY, ALL şi dau ca rezultat mai multe linii. Curs 5 - BAZE DE DATE 9

Limbajul SQL 5. SUBQUERIES (Subinterogări) 5.1. SINGLE ROW SUBQUERIES 5.2. MULTIPLE ROW SUBQUERIES Curs 5 - BAZE DE DATE 10

5.1. SINGLE ROW SUBQUERIES Single row-subquery Aflati numele angajatilor care au salariul mai mare decat angajatul care se numeste SMITH. SELECT ename WHERE sal > ( SELECT sal WHERE ename = 'SMITH' ); Curs 5 - BAZE DE DATE 11

5.1. SINGLE ROW SUBQUERIES Single row-subquery Curs 5 - BAZE DE DATE 12

5.1. SINGLE ROW SUBQUERIES Subcereri din mai multe tabele Subcererile (subinterogările) nu sunt limitate la o singură interogare (cerere). Aşa cum se poate observa în exemplul următor, pot fi mai mult de o singură interogare. De asemenea se pot face interogări din tabele diferite. Curs 5 - BAZE DE DATE 13

Exemplul urmator afiseaza angajatii a caror functie este acelasi cu cel al angajatului cu numarul 7369 si a caror salariu este mai mare decat cel al angajatului 7875. Executarea unei subinterogari single-row SELECT ename, job WHERE job = (SELECT job WHERE empno = 7369) AND sal > ( SELECT sal WHERE empno = 7876 ); ENAME JOB ---------- --------- MILLER CLERK Curs 5 - BAZE DE DATE 14

5.1. SINGLE ROW SUBQUERIES Exemplul este format din 3 blocuri de cereri: o cerere exterioara doua cereri interne Blocurile de cereri interne sunt primele executate, producand rezultatele cererii: FUNCTIONAR (CLERK), respectiv 1300. Blocul exterior de cereri este apoi procesat si foloseste valorile returnate de catre cererile interne pentru a finaliza propriile conditii de cautare. Ambele cereri interne returneaza valori singulare (FUNCTIONAR si 1300), astfel ca aceasta instructiune SQL este denumita o subinterogare single-row. Curs 5 - BAZE DE DATE 15

5.1. SINGLE ROW SUBQUERIES Curs 5 - BAZE DE DATE 16

5.1. SINGLE ROW SUBQUERIES SELECT ename, job, sal, deptno WHERE job = (SELECT job WHERE empno = 7934 ) AND deptno = (SELECT deptno FROM DEPT WHERE dname = 'ACCOUNTING'); Curs 5 - BAZE DE DATE 17

5.1. SINGLE ROW SUBQUERIES Curs 5 - BAZE DE DATE 18

5.1. SINGLE ROW SUBQUERIES Se pot folosi funcţiile de grup în subinterogări. O funcţie de grup utilizată în subquery fără clauza GROUP BY, returnează o singură linie. SELECT nume, prenume, salariu FROM angajati WHERE salariu < (SELECT MAX(salariu) FROM angajati); Curs 5 - BAZE DE DATE 19

5.1. SINGLE ROW SUBQUERIES Se pot folosi funcţiile de grup în subinterogări. O funcţie de grup utilizată în subquery fără clauza GROUP BY, returnează o singură linie. Curs 5 - BAZE DE DATE 20

5.1. SINGLE ROW SUBQUERIES Subinterogările pot fi plasate şi în clauza HAVING. Deoarece clauza HAVING are întotdeauna o condiţie de grup, şi subinterogarea va avea aproape întotdeauna o condiţie de grup. SELECT deptno, MIN(sal) GROUP BY deptno HAVING MIN(sal) > ( SELECT MIN(sal) WHERE deptno = 20 ); Curs 5 - BAZE DE DATE 21

5.1. SINGLE ROW SUBQUERIES Subinterogările pot fi plasate şi în clauza HAVING. Deoarece clauza HAVING are întotdeauna o condiţie de grup, şi subinterogarea va avea aproape întotdeauna o condiţie de grup. Curs 5 - BAZE DE DATE 22

5.1. SINGLE ROW SUBQUERIES Aplicatii rezolvate 1) Care este numele membrilor din personalul de la firma COSTICA S.R.L., al căror salariu este mai mare decât angajatul cu ID-ul 7698? 2) Care dintre angajatii Oracle au acelasi id al departamentului ca si cel corespunzator cu departamentul RESEARCH? Curs 5 - BAZE DE DATE 23

5.1. SINGLE ROW SUBQUERIES 1) Care este numele membrilor din personalul de la firma COSTICA S.R.L., al căror salariu este mai mare decât angajatul cu ID-ul 7698? SELECT ename WHERE sal > ( SELECT sal WHERE empno = 7698 ); Curs 5 - BAZE DE DATE 24

5.1. SINGLE ROW SUBQUERIES Curs 5 - BAZE DE DATE 25

5.1. SINGLE ROW SUBQUERIES 2) Care dintre angajatii Oracle au acelasi id al departamentului ca si cel corespunzator cu departamentul RESEARCH? SELECT ename, sal WHERE deptno = ( SELECT deptno FROM DEPT WHERE dname = 'RESEARCH' ); Curs 5 - BAZE DE DATE 26

5.1. SINGLE ROW SUBQUERIES Curs 5 - BAZE DE DATE 27

Limbajul SQL 5. SUBQUERIES (Subinterogări) 5.1. SINGLE ROW SUBQUERIES 5.2. MULTIPLE ROW SUBQUERIES Curs 5 - BAZE DE DATE 28

5.2. MULTIPLE ROW SUBQUERIES Sunt acele subinterogări care dau ca rezultat mai multe valori. Folosesc operatorii multiple row: 1. IN 2. ANY 3. ALL Operatorul NOT poate fi folosit în combinaţie cu oricare dintre aceştia. Curs 5 - BAZE DE DATE 29

5.2. MULTIPLE ROW SUBQUERIES 1. Operatorul IN Operatorul IN este folosit dacă în interogarea exterioară clauza WHERE este folosită pentru a selecta acele valori care sunt egale cu una dintre valorile din lista returnată de subinterogare (inner query). SELECT ename, sal, deptno WHERE sal IN ( SELECT MIN(sal) GROUP BY deptno ); Curs 5 - BAZE DE DATE 30

5.2. MULTIPLE ROW SUBQUERIES 1. Operatorul IN - Operatorul IN este folosit dacă în interogarea exterioară clauza WHERE este folosită pentru a selecta acele valori care sunt egale cu una dintre valorile din lista returnată de subinterogare (inner query). Curs 5 - BAZE DE DATE 31

5.2. MULTIPLE ROW SUBQUERIES 2. Operatorul ANY Acest operator este folosit atunci când dorim ca interogarea exterioară să selecteze valori egale, mai mici sau mai mari decât cel puţin o valoare dintre cele extrase de subquery. SELECT ename, sal, hiredate WHERE hiredate < ANY ( SELECT hiredate GROUP BY hiredate ); Curs 5 - BAZE DE DATE 32

5.2. MULTIPLE ROW SUBQUERIES 2. Operatorul ANY - Acest operator este folosit atunci când dorim ca interogarea exterioară să selecteze valori egale, mai mici sau mai mari decât cel puţin o valoare dintre cele extrase de subquery. Curs 5 - BAZE DE DATE 33

5.2. MULTIPLE ROW SUBQUERIES 3. Operatorul ALL Acest operator este folosit atunci când dorim ca interogarea exterioară să selecteze valori egale, mai mici sau mai mari decât toate valorile extrase de subquery. SELECT ename, sal, hiredate WHERE hiredate > ALL ( SELECT hiredate GROUP BY hiredate ); Curs 5 - BAZE DE DATE 34

5.2. MULTIPLE ROW SUBQUERIES VALORI NULL Dacă una dintre valorile returnate de subinterogarea multiple row este null, dar celelalte valori nu sunt null, atunci: Dacă sunt folosiţi operatorii IN sau ANY, interogarea exterioară va returna liniile care se potrivesc cu valorile non-null. Dacă este folosit operatorul ALL, interogarea exterioară nu va returna nimic. Curs 5 - BAZE DE DATE 35

5.2. MULTIPLE ROW SUBQUERIES Clauzele GROUP BY şi HAVING - Pot fi folosite cu subinterogările de tip multiple row. SELECT deptno, MIN(sal) GROUP BY deptno HAVING MIN(sal) < ANY ( SELECT sal WHERE deptno IN (10,20) ); Curs 5 - BAZE DE DATE 36

5.2. MULTIPLE ROW SUBQUERIES Clauzele GROUP BY şi HAVING - Pot fi folosite cu subinterogările de tip multiple row. Curs 5 - BAZE DE DATE 37

5.2. MULTIPLE ROW SUBQUERIES Clauzele GROUP BY si HAVING De asemenea, se poate folosi clauza GROUP BY intro subinterogare SELECT deptno, MIN(sal) GROUP BY deptno HAVING MIN(sal) > ALL (SELECT MIN(sal) WHERE deptno < 40 GROUP BY deptno); Curs 5 - BAZE DE DATE 38

5.2. MULTIPLE ROW SUBQUERIES Clauzele GROUP BY si HAVING De asemenea, se poate folosi clauza GROUP BY intr-o subinterogare Curs 5 - BAZE DE DATE 39

5.2. MULTIPLE ROW SUBQUERIES Aplicatii rezolvate: 1) Găsiţi numele pentru toţi angajaţii ale căror salarii sunt aceleaşi cu salariul minim din oricare (any) departament. SELECT ename WHERE sal = ANY (SELECT MIN(sal) GROUP BY deptno); Curs 5 - BAZE DE DATE 40

5.2. MULTIPLE ROW SUBQUERIES Aplicatii rezolvate: 1) Găsiţi numele pentru toţi angajaţii ale căror salarii sunt aceleaşi cu (any) departament. salariul minim din oricare Curs 5 - BAZE DE DATE 41

5.2. MULTIPLE ROW SUBQUERIES 2) Scopul interogării următoare este de a afişa salariul minim pentru fiecare departament al cărui salariu minim este mai mic decât cel mai mic salariu al angajaţilor din departamentul 30. Oricum, subinterogarea nu se execută deoarece are 5 erori. Găsiţi erorile şi corectaţi-le. SELECT deptno WHERE MIN(sal) HAVING MIN(sal) > 1 2 GROUP BY deptno SELECT MIN(sal) WHERE deptno < 30; Curs 5 - BAZE DE DATE 42 3 4 5

5.2. MULTIPLE ROW SUBQUERIES Soluţia corectă este următoarea: SELECT deptno, MIN(sal) GROUP BY deptno HAVING MIN(sal) < ( SELECT MIN(sal) WHERE deptno = 30); Curs 5 - BAZE DE DATE 43

Subcereri multilinie Subcererile multilinie returneaza mai mult decat o linie. Cu astfel de subinterogari trebuie folositi operatori multilinie care pot prelucra una sau mai multe valori. Operatorii utilizati sunt: 1. IN - egal cu oricare dintre membrii unei liste 2. ANY/SOME - compara o valoare cu fiecare (vreo) valoare returnata de subinterogare 3. ALL - compara o valoare cu oricare (toate) din valorile returnate de subinterogare Curs 5 - BAZE DE DATE 44

Exemplu IN Aflati angajatii care au salariul egal cu salariul cel mai mare din fiecare departament SELECT ename, deptno, sal WHERE sal IN ( SELECT MAX(sal) GROUP BY deptno ) subinterogarea ofera salariile maxime din fiecare departament si prin interogarea principala se afla angajatii cu aceste salarii. Curs 5 - BAZE DE DATE 45

Exemplu IN - Aflati angajatii care au salariul egal cu salariul cel mai mare din fiecare departament Curs 5 - BAZE DE DATE 46

Exemplu ANY Aflati angajatii care au salariul mai mare decat vreun angajat al departamentului 20 si nu fac parte din acest departament. SELECT ename, deptno, sal WHERE sal > ANY ( SELECT sal WHERE deptno = 20 ) AND deptno <> 20; Curs 5 - BAZE DE DATE 47

Exemplu ANY - Aflati angajatii care au salariul mai mare decat vreun angajat al departamentului 20 si nu fac parte din acest departament. Curs 5 - BAZE DE DATE 48

Operatorul ANY (sinonim operatorului SOME) compara o valoare cu fiecare valoare din cele returnate de subinterogare. Astfel, < ANY inseamna mai mic decat maximul ANY inseamna mai mare decat minimul = ANY este echivalent cu IN Curs 5 - BAZE DE DATE 49

Exemplu ALL Gasiti angajatii care au salariul mai mic decat oricare (toti) angajatii de la departamentul 30. SELECT ename, deptno, sal WHERE sal < ALL ( SELECT sal WHERE deptno = 30 ) AND deptno <> 30; Curs 5 - BAZE DE DATE 50

Exemplu ALL - Gasiti angajatii care au salariul mai mic decat oricare (toti) angajatii de la departamentul 30. Curs 5 - BAZE DE DATE 51

Operatorul ALL din interogarea principala compara o valoare cu oricare valoare returnata de subinterogare. Astfel: > ALL inseamna mai mare decat maximul < ALL inseamna mai mic decat minimul Curs 5 - BAZE DE DATE 52

Imbricarea subcererilor Subcererile pot fi folosite si in interiorul altor subinterogari. Exemplu Gasiti numele, functia, data angajarii si salariul angajatilor al caror salariu este superior celui mai mare salariu al vreunei persoane angajate dupa data de 12/09/1982. Curs 5 - BAZE DE DATE 53

SELECT ename, job, hiredate, sal WHERE sal > ( SELECT MAX(sal) WHERE hiredate IN ( SELECT hiredate WHERE hiredate > '12/09/1982' ) ); Numarul maxim de imbricari pentru o subinterogare este de 255. Curs 5 - BAZE DE DATE 54

Numarul maxim de imbricari pentru o subinterogare este de 255. Curs 5 - BAZE DE DATE 55

Subcereri corelate O subinterogare corelata este o subinterogare care se executa o data pentru fiecare linie considerata de interogarea principala si care la executie foloseste o valoare dintr-o coloana din interogarea exterioara. Ea se poate identifica prin folosirea unei coloane a interogarii exterioare in clauza operatorului interogarii interioare. Curs 5 - BAZE DE DATE 56

Exemplu Gasiti angajatii care au un salariu superior salariului mediu al departamentului lor. SELECT ename, sal, deptno E WHERE sal > ( SELECT AVG(sal) WHERE ( deptno = E.deptno ) ) ORDER BY deptno; Curs 5 - BAZE DE DATE 57

Exemplu - Gasiti angajatii care au un salariu superior salariului mediu al departamentului lor. Curs 5 - BAZE DE DATE 58

Valori de NULL intr-o subinterogare In cazul in care subinterogarea returneaza vreuna din valori NULL si interogarea principala are operator NOT IN, atunci interogarea principala nu va returna niciun rand. Motivul este ca o comparatie cu NULL conduce la un rezultat NULL. Curs 5 - BAZE DE DATE 59

Exemplu Gasiti angajatii care nu au subordonati. SELECT ename WHERE empno NOT IN ( SELECT mgr ); Curs 5 - BAZE DE DATE 60

Exemplu Gasiti angajatii care nu au subordonati. Curs 5 - BAZE DE DATE 61

Astfel ori de cate ori valoarea NULL face parte din raspunsurile subcererii nu trebuie folosit operatorul NOT IN. De fapt operatorul NOT IN este echivalent cu <> ALL. Returnarea de valori NULL de catre subinterogare nu prezinta nici o problema in cazul operatorului IN in interogarea principala (in echivalent cu = ALL). Curs 5 - BAZE DE DATE 62

Exemplu Gasiti angajatii care au subordonati. SELECT ename WHERE empno IN ( SELECT mgr ); Curs 5 - BAZE DE DATE 63

Exemplu Gasiti angajatii care au subordonati. Curs 5 - BAZE DE DATE 64

In cazul utilizarii operatorului NOT IN in interogarea principala trebuie avut grija sa se excluda valorile NULL din raspunsurile subcererii. Exemplu Gasiti angajatii care nu au subordonati. Curs 5 - BAZE DE DATE 65

SELECT ename WHERE empno NOT IN ( SELECT mgr WHERE mgr IS NOT NULL ); Curs 5 - BAZE DE DATE 66

Sfaturi în utilizarea subinterogarilor 1. Includerea subinterogarilor în paranteze 2. Plasarea subinterogarilor în partea dreapta a operatorului de comparare 3. A nu se adauga clauza ORDER BY într-o subinterogare 4. Folosirea operatorilor single-row în subinterogari single-row 5. Folosirea operatorilor multiple-row în subinterogari multiple-row Curs 5 - BAZE DE DATE 67

Concluzii 1. O subinterogare este o instructiune SELECT inclusa într-o clauza a altei instructiuni SQL. 2. Subinterogarile sunt folositoare atunci cînd interogarea se bazeaza pe criterii necunoscute. 3. Subinterogarile au urmatoarele caracteristici: a) Pot transmite un rand de date instructiunii principale care contine un operator single-row, precum: =, <>, >, >=, < sau <=; b) Pot transmite rînduri multiple de date instructiunii principale care contine un operator multiple-row, precum: IN, ANY sau ALL; c) Sunt primele procesate de catre server-ul Oracle, iar clauzele WHERE si HAVING folosesc rezultatele; d) Pot contine functii de grup. Curs 5 - BAZE DE DATE 68

Întrebări? Curs 5 - BAZE DE DATE 69