SQL underspørringer er verdifulle funksjoner som gjør oss i stand til å bygge inn ett søk i et annet som legger til mer vikt til henting og manipulering data på en komplisert måte. Den brukes til å konfigurere midlertidige tabeller eller mellomresultater som etter brukes av det ytre søket.
Underspørring i FROM-klausulen
FROM-ledd kan brukes til å spesifisere et underspørringsuttrykk i SQL. Relasjonen produsert av underspørringen brukes deretter som en ny relasjon som den ytre spørringen brukes på for videre operasjoner. Underspørringer iFROMklausul brukes når vi trenger å lage et midlertidig datasett som ikke finnes i noen fysisk tabell. Dette kan være svært nyttig når du arbeider med komplekse datasett.
java date nå
Korrelasjonsvariablene fra tabellene referert til i den ytre spørringens FROM-ledd kan ikke brukes direkte i underspørringene i FROM-leddet. Nedenfor er gitt to syntakser for bruk av Subquery i FROM-klausulen som brukes i forskjellige scenarier.
1. Enkel underspørring iFROMKlausul:
VELG kolonne 1 kolonne 2
FROM (SELECT column_x AS C1 column_y FROM-tabell WHERE-betingelse) AS subquery_table
WHERE ytre_tilstand;
2. Underspørring iFROMKlausul medJOIN:
VELG kolonne 1 kolonne 2
FRA (VELG kolonne_x AS C1 kolonne_y FRA tabell WHERE PREDIKAT_X) SOM tabell2
java få gjeldende tidJOIN tabell1 PÅ tabell2.noen_kolonne = tabell1.noen_kolonne
HVOR PREDIKAT;
Parametere:
- Undersøk : Den indre spørringen i parentes. Den henter data som vil fungere som en midlertidig tabell.
- Alias : Underspørringen må gis et alias (
subquery_table) som skal refereres til i den ytre spørringen. - Ytre spørring : Den ytre spørringen kan deretter fungere med denne midlertidige tabellen opprettet ved at underspørringen bruker filtre eller utfører ytterligere operasjoner.
Hvordan underspørringer i FROM-klausulen fungerer
- Undersøkevaluering : Underspørringen i fra-klausulen evalueres først og deretter lagres resultatene av evalueringen i en ny midlertidig relasjon.
- Ytre spørring : Etter at underspørringen kjører og returnerer et datasett, blir den ytre spørringen evaluert ved å velge bare de tuplene fra den midlertidige relasjonen som tilfredsstiller predikatet i where-leddet til den ytre spørringen.
Eksempel på bruk av underspørring i FROM-klausulen
La oss diskutere noen eksempler fra den virkelige verden for å forstå hvordan underspørringer i FROM-klausulen fungerer i praksis. Her har vi to bord Instruktør tabell som inneholder informasjon om instruktører inkludert deres lønn og avdeling. Den andre er Avdeling tabell som inneholder informasjon om ulike avdelinger inkludert avdelingens budsjett.
Instruktør Bord
| Instruktør-ID | Navn | Avdeling | Lønn |
|---|---|---|---|
| 44547 | Smith | Datavitenskap | 95 000 |
| 44541 | Regning | Elektrisk | 55 000 |
| 47778 | Alene | Humaniora | 44000 |
| 48147 | Erik | Mekanisk | 80 000 |
| 411547 | Balsam | Informasjonsteknologi | 65 000 |
| 48898 | Jena | Sivil | 50 000 |
Avdeling Bord
| Avdelingsnavn | Budsjett |
|---|---|
| Datavitenskap | 100 000 |
| Elektrisk | 80 000 |
| Humaniora | 50 000 |
| Mekanisk | 40 000 |
| Informasjonsteknologi | 90 000 |
| Sivil | 60 000 |
Eksempel 1: Finn alle professorer hvis lønn er høyere enn gjennomsnittsbudsjettet for alle avdelingene.
I dette eksemplet vil vi bruke en underspørring i FROM-klausulen for å beregne gjennomsnittlig budsjett for alle avdelinger og deretter gjøre sammenligningen med lønnen til instruktører.
kassen i git
Spørsmål:
binært tre 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;
Produksjon
| Instruktør-ID | Navn | Avdeling | Lønn |
|---|---|---|---|
| 44547 | Smith | Datavitenskap | 95 000 |
| 48147 | Erik | Mekanisk | 80 000 |
Forklaring:
- Gjennomsnittlig budsjett for alle avdelinger fra avdelingsrelasjonen er 70 000.
- Erik og Smith er de eneste instruktørene i instruktørrelasjonen som har en lønn på over 70 000 og derfor er tilstede i outputrelasjonen.
Hvorfor bruke underspørringer i FROM-klausulen?
Det er forskjellige fordeler ved å bruke underspørringer i FROM-klausulen som gitt nedenfor:
- Forenkling : De kan forenkle komplekse spørringer ved å dele dem opp i mindre mer håndterbare deler. Du trenger ikke å opprette midlertidige tabeller eksplisitt i databasen din.
- Forbedret lesbarhet : Ved å bruke undersøk i FROM-klausulen gjør søket mer lesbart siden det deler > Fleksibilitet : Med underspørringer kan du utføre operasjoner som ellers ville være ubeleilig som aggregeringer eller filtrering med hensyn til andre datasett uten behovet å lage mellomtabeller.
Konklusjon
Undersøk i FROM-klausulen gjør det mulig for oss å definere midlertidige resultatsett som kan brukes av ytre søk. De gjør komplekse SQL-operasjoner enklere forbedrer søklesbarheten og gir fleksibilitet i datafiltrering og aggregering. Å vite hvordan du bruker underspørringer i FROM-klausulen er en grunnleggende ferdighet for hver SQL-utøver spesielt når du har å gjøre med komplekse databaser eller når du må utføre komplekse dataanalyser.
Lag quiz