Subinterogările SQL sunt funcții valoroase care ne permit să încorporam o interogare într-o altă interogare, adăugând mai multă importanță regăsirii și manipulării datelor într-un mod complicat. Este folosit pentru configurarea tabelelor temporale sau rezultatele intermediare care să fie utilizate ulterior de interogarea exterioară.
Subinterogare în clauza FROM
Clauza FROM poate fi folosită pentru a specifica o expresie de subinterogare în SQL. Relația produsă de subinterogare este apoi utilizată ca o nouă relație pe care interogarea exterioară este aplicată pentru operațiuni ulterioare. Subinterogări înFROMclauza este folosită atunci când trebuie să creăm un set de date temporar care nu există în niciun tabel fizic. Acest lucru poate fi extrem de util atunci când lucrați cu seturi de date complexe.
atașare șir de caractere java
Variabilele de corelare din tabelele la care se face referire în clauza FROM a interogării externe nu pot fi utilizate direct în subinterogările din clauza FROM. Mai jos sunt prezentate două sintaxe de utilizare a Subquery în clauza FROM utilizată în diferite scenarii.
1. Subinterogare simplă înFROMClauză:
SELECTAȚI coloana1 coloana2
FROM (SELECT column_x AS C1 column_y FROM condiția tabel WHERE) AS subquery_table
js settimeoutWHERE stare_exterioară;
2. Subinterogare înFROMClauza cuJOIN:
SELECTAȚI coloana1 coloana2
FROM (SELECT column_x AS C1 column_y FROM tabel WHERE PREDICATE_X) AS table2
JOIN table1 ON table2.some_column = table1.some_column
Java compara șiruriUNDE PREDICAT;
Parametri:
- Subinterogare : Interogarea interioară cuprinsă între paranteze. Acesta preia date care vor acționa ca un tabel temporar.
- Alias : Subinterogării trebuie să primească un alias (
subquery_table) pentru a fi referite în interogarea exterioară. - Interogare exterioară : Interogarea exterioară poate funcționa apoi cu acest tabel temporar creat de subinterogare aplicând filtre sau efectuând operațiuni ulterioare.
Cum funcționează subinterogările din clauza FROM
- Evaluare subinterogare : Sub-interogarea din clauza from este evaluată mai întâi și apoi rezultatele evaluării sunt stocate într-o nouă relație temporară.
- Interogare exterioară : După ce subinterogarea execută și returnează un set de date, interogarea exterioară este evaluată selectând numai acele tupluri din relația temporară care satisface predicatul din clauza where a interogării externe.
Exemplu de utilizare a subinterogării în clauza FROM
Să discutăm câteva exemple din lumea reală pentru a înțelege cum funcționează în practică subinterogările din clauza FROM. Aici avem două tabele Instructor tabel care conține informații despre instructori, inclusiv salariul și departamentul acestora. Altul este Departament tabel care conține informații despre diferite departamente, inclusiv bugetul departamentului.
Instructor Masă
| ID instructor | Nume | Departament | Salariu |
|---|---|---|---|
| 44547 | Smith | Informatică | 95000 |
| 44541 | Proiect de lege | Electric | 55000 |
| 47778 | Singur | Științe umaniste | 44000 |
| 48147 | Erik | Mecanic | 80000 |
| 411547 | Balsam | Tehnologia de informație | 65000 |
| 48898 | Jena | Civil | 50000 |
Departament Masă
| Numele departamentului | Buget |
|---|---|
| Informatică | 100000 |
| Electric | 80000 |
| Științe umaniste | 50000 |
| Mecanic | 40000 |
| Tehnologia de informație | 90000 |
| Civil | 60000 |
Exemplul 1: Găsiți toți profesorii al căror salariu este mai mare decât bugetul mediu al tuturor departamentelor.
În acest exemplu vom folosi o subinterogare în clauza FROM pentru a calcula bugetul mediu al tuturor departamentelor și apoi vom face comparația cu salariile instructorilor.
Interogare:
SELECT I.InstructorID I.Name I.Department I.Salary
FROM (SELECT AVG(Budget) AS averageBudget FROM Department) AS BUDGET
Instructor AS I
WHERE I.Salary > BUDGET.averageBudget;
Ieșire
| ID instructor | Nume | Departament | Salariu |
|---|---|---|---|
| 44547 | Smith | Informatică | 95000 |
| 48147 | Erik | Mecanic | 80000 |
Explicaţie:
an luna
- Bugetul mediu al tuturor departamentelor din relația de departament este de 70000.
- Erik și Smith sunt singurii instructori din relația de instructor al căror salariu este mai mare de 70000 și, prin urmare, sunt prezenți în relația de ieșire.
De ce să folosiți subinterogări în clauza FROM?
Există diverse avantaje ale utilizării subinterogărilor în clauza FROM, după cum este prezentat mai jos:
- Simplificare : pot simplifica interogările complexe, împărțindu-le în părți mai mici, mai ușor de gestionat. Nu trebuie să creați tabele temporare în mod explicit în baza de date.
- Lizibilitate îmbunătățită : Folosirea subinterogărilor în clauza FROM face interogarea mai lizibilă din moment ce împarte > Flexibilitate : subinterogările vă permit să efectuați operațiuni care, altfel, ar fi incomode, cum ar fi agregarea sau filtrarea cu privire la alte seturi de date, fără a fi necesar să creați tabele intermediare.
Concluzie
Subinterogările din clauza FROM ne permit să definim seturi temporare de rezultate care poate fi utilizate de interogări externe. Ele fac operațiunile SQL complexe mai ușoare, îmbunătățesc lizibilitatea interogărilor și oferă flexibilitate în filtrarea și agregarea datelor. A ști cum utiliza subinterogări în clauza FROM este o abilitate de de bază pentru fiecare practician SQL , în special când se tratează cu baze de date complexe sau când trebuie să efectueze o analiză complexă de date.
Creați un test