SQL underforespørgsler er værdifulde funktioner der giver os at integrere én forespørgsel i en anden og tilføjer mere betydning til at hente og manipulere data på en kompliceret måde. Det bruges til at opsætte midlertidige tabeller eller mellemresultater som efterfølgende bruges af den ydre forespørgsel.
Underforespørgsel i FROM-klausulen
FROM-sætning kan bruges til at angive et underforespørgselsudtryk i SQL. Relationen produceret af underforespørgslen bruges derefter som en ny relation, hvorpå den ydre forespørgsel anvendes til yderligere operationer. Underforespørgsler iFROMklausul bruges, når vi skal oprette et midlertidigt datasæt, der ikke findes i nogen fysisk tabel. Dette kan være yderst nyttigt, når du arbejder med komplekse datasæt.
pseudokode java
Korrelationsvariablerne fra tabellerne, der henvises til i den ydre forespørgsel's FROM-klausul, kan ikke bruges direkte i underforespørgslerne i FROM-klausulen. Nedenfor er angivet to syntakser for brug af Subquery i FROM-sætningen, der bruges i forskellige scenarier.
1. Simpel underforespørgsel iFROMKlausul:
VÆLG kolonne 1 kolonne 2
FROM (SELECT column_x AS C1 column_y FROM table WHERE condition) AS subquery_table
WHERE ydre_tilstand;
2. Underforespørgsel iFROMKlausul medJOIN:
VÆLG kolonne 1 kolonne 2
FRA (SELECT column_x AS C1 column_y FROM table WHERE PREDICATE_X) AS table2
sortering tuples pythonJOIN tabel1 PÅ table2.some_column = table1.some_column
HVOR prædikat;
Parametre:
- Underforespørgsel : Den indre forespørgsel omgivet af parentes. Den henter data, der fungerer som en midlertidig tabel.
- Alias : Underforespørgslen skal have et alias (
subquery_table) der skal refereres til i den ydre forespørgsel. - Ydre forespørgsel : Den ydre forespørgsel kan derefter arbejde med denne midlertidige tabel, der er oprettet ved, at underforespørgslen anvender filtre eller udfører yderligere handlinger.
Sådan fungerer underforespørgsler i FROM-klausulen
- Underforespørgselsvurdering : Underforespørgslen i fra-klausulen evalueres først, og derefter gemmes resultaterne af evalueringen i en ny midlertidig relation.
- Ydre forespørgsel : Efter at underforespørgslen eksekverer og returnerer et datasæt, evalueres den ydre forespørgsel ved kun at vælge de tuples fra den midlertidige relation, der opfylder prædikatet i where-sætningen af den ydre forespørgsel.
Eksempel på brug af underforespørgsel i FROM-klausulen
Lad os diskutere nogle eksempler fra den virkelige verden for at forstå, hvordan underforespørgsler i FROM-klausulen fungerer i praksis. Her har vi to borde Instruktør tabel, der indeholder oplysninger om instruktører inklusive deres løn og afdeling. En anden er Afdeling tabel, der indeholder oplysninger om forskellige afdelinger inklusive afdelingens budget.
Instruktør Tabel
| Instruktør-ID | Navn | Afdeling | Løn |
|---|---|---|---|
| 44547 | Smith | Datalogi | 95.000 |
| 44541 | Regning | Elektrisk | 55.000 |
| 47778 | Alene | Humaniora | 44000 |
| 48147 | Erik | Mekanisk | 80.000 |
| 411547 | Balsam | Informationsteknologi | 65.000 |
| 48898 | Jena | Civil | 50.000 |
Afdeling Tabel
| Afdelingens navn | Budget |
|---|---|
| Datalogi | 100.000 |
| Elektrisk | 80.000 |
| Humaniora | 50.000 |
| Mekanisk | 40.000 |
| Informationsteknologi | 90.000 |
| Civil | 60.000 |
Eksempel 1: Find alle professorer, hvis løn er større end det gennemsnitlige budget for alle institutter.
I dette eksempel vil vi bruge en underforespørgsel i FROM-klausulen til at beregne det gennemsnitlige budget for alle afdelinger og derefter foretage sammenligningen med instruktørernes lønninger.
kassen i git
Forespørgsel:
binært træ java
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;
Produktion
| Instruktør-ID | Navn | Afdeling | Løn |
|---|---|---|---|
| 44547 | Smith | Datalogi | 95.000 |
| 48147 | Erik | Mekanisk | 80.000 |
Forklaring:
- Det gennemsnitlige budget for alle afdelinger fra afdelingsrelationen er 70.000.
- Erik og Smith er de eneste instruktører i instruktørrelationen, hvis løn er mere end 70.000 og derfor er til stede i outputrelationen.
Hvorfor bruge underforespørgsler i FROM-klausulen?
Der er forskellige fordele ved at bruge underforespørgsler i FROM-klausulen som angivet nedenfor:
- Forenkling : De kan forenkle komplekse forespørgsler ved at opdele dem i mindre, mere håndterbare dele. Du behøver ikke at oprette midlertidige tabeller eksplicit i din database.
- Forbedret læsbarhed : Brug af underforespørgsler i FROM-sætningen gør forespørgslen mere læsbar da den opdeles > Fleksibilitet : Underforespørgsler gør dig at udføre handlinger, der ellers ville være besvær såsom aggregeringer eller filtrering med hensyn til andre datasæt uden det nødvendigt at oprette mellemtabeller.
Konklusion
Underforespørgsler i FROM-klausulen giver os mulighed for at definere midlertidige resultatsæt der kan bruges af ydre forespørgsler. De gør komplekse SQL-handlinger lettere forbedrer forespørgselslæsbarheden og giver fleksibilitet i datafiltrering og aggregering. At vide hvordan man bruger underforespørgsler inden for FROM-klausulen er en grundlæggende færdighed for hver SQL-praktiker især når de beskæftiger sig med komplekse databaser eller når du skal udføre komplekse dataanalyser.
Opret quiz