SQL-subquery's zijn waardevolle functies waarmee we de ene query in een andere kunnen insluiten, wat meer belang toevoegt aan het op ingewikkelde wijze ophalen en manipuleren van gegevens. Het wordt gebruikt om tijdelijke tabellen of tussenresultaten op te zetten die vervolgens door de buitenste query kunnen worden gebruikt.
Subquery in de FROM-clausule
De FROM-clausule kan worden gebruikt om een subquery-expressie in SQL op te geven. De door de subquery geproduceerde relatie wordt vervolgens gebruikt als een nieuwe relatie waarop de buitenste query wordt toegepast voor verdere bewerkingen. Subquery's in deFROMDe clausule wordt gebruikt wanneer we een tijdelijke gegevensset moeten maken die in geen enkele fysieke tabel bestaat. Dit kan uiterst nuttig zijn bij het werken met complexe datasets.
string ti int
De correlatievariabelen uit de tabellen waarnaar wordt verwezen in de FROM-clausule van de buitenste query kunnen niet rechtstreeks worden gebruikt binnen de subquery's in de FROM-clausule. Hieronder vindt u twee syntaxis voor het gebruik van Subquery in de FROM-clausule die in verschillende scenario's wordt gebruikt.
1. Eenvoudige subquery in deFROMClausule:
SELECTEER kolom1 kolom2
FROM (SELECT column_x AS C1 column_y FROM tabel WHERE voorwaarde) AS subquery_table
WHERE buitenste_voorwaarde;
2. Subquery in deFROMClausule metJOIN:
SELECTEER kolom1 kolom2
FROM (SELECTEER kolom_x AS C1 kolom_y FROM tabel WHERE PREDICATE_X) AS tabel2
Java-tekenreeks naar jsonJOIN tabel1 OP tabel2.some_column = tabel1.some_column
WAAR PREDICAAT;
Parameters:
- Subquery : De binnenste query tussen haakjes. Het haalt gegevens op die als tijdelijke tabel zullen fungeren.
- Alias : De subquery moet een alias krijgen (
subquery_table) waarnaar wordt verwezen in de buitenste query. - Buitenste zoekopdracht : De buitenste query kan dan werken met deze tijdelijke tabel die is gemaakt door de subquery door filters toe te passen of verdere bewerkingen uit te voeren.
Hoe subquery's in de FROM-clausule werken
- Evaluatie van subquery's : De subquery in de from-clausule wordt eerst geëvalueerd en vervolgens worden de evaluatieresultaten opgeslagen in een nieuwe tijdelijke relatie.
- Buitenste zoekopdracht : Nadat de subquery een gegevensset heeft uitgevoerd en geretourneerd, wordt de buitenste query geëvalueerd door alleen die tupels uit de tijdelijke relatie te selecteren die voldoen aan het predikaat in de WHERE-clausule van de buitenste query.
Voorbeeld van het gebruik van subquery in de FROM-clausule
Laten we enkele voorbeelden uit de praktijk bespreken om te begrijpen hoe subquery's in de FROM-clausule in de praktijk werken. Hier hebben we twee tabellen Instructeur tabel met informatie over instructeurs, inclusief hun salaris en afdeling. Een andere wel Afdeling tabel met informatie over verschillende afdelingen, inclusief het budget van de afdeling.
Instructeur Tafel
| InstructeurID | Naam | Afdeling | Salaris |
|---|---|---|---|
| 44547 | Smit | Computerwetenschappen | 95000 |
| 44541 | Rekening | Elektrisch | 55000 |
| 47778 | Alleen | Geesteswetenschappen | 44000 |
| 48147 | Erik | Mechanisch | 80000 |
| 411547 | Balsem | Informatietechnologie | 65000 |
| 48898 | Jena | Civiel | 50000 |
Afdeling Tafel
| Afdelingsnaam | Begroting |
|---|---|
| Computerwetenschappen | 100000 |
| Elektrisch | 80000 |
| Geesteswetenschappen | 50000 |
| Mechanisch | 40000 |
| Informatietechnologie | 90000 |
| Civiel | 60000 |
Voorbeeld 1: Vind alle professoren wier salaris hoger is dan het gemiddelde budget van alle afdelingen.
In dit voorbeeld gebruiken we een subquery in de FROM-clausule om het gemiddelde budget van alle afdelingen te berekenen en vervolgens de vergelijking te maken met de salarissen van instructeurs.
hritik roshan-leeftijd
Vraag:
latex lettergroottes
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;
Uitvoer
| InstructeurID | Naam | Afdeling | Salaris |
|---|---|---|---|
| 44547 | Smit | Computerwetenschappen | 95000 |
| 48147 | Erik | Mechanisch | 80000 |
Uitleg:
- Het gemiddelde budget van alle afdelingen uit de afdelingsrelatie bedraagt 70.000.
- Erik en Smith zijn de enige instructeurs in de instructeursrelatie waarvan het salaris meer dan 70.000 bedraagt en zijn daarom aanwezig in de outputrelatie.
Waarom subquery's gebruiken in de FROM-clausule?
Er zijn verschillende voordelen verbonden aan het gebruik van subquery's in de FROM-clausule, zoals hieronder weergegeven:
- Vereenvoudiging : Ze kunnen complexe zoekopdrachten vereenvoudigen door ze op te splitsen in kleinere, beter beheersbare delen. U hoeft niet expliciet tijdelijke tabellen in uw database te maken.
- Verbeterde leesbaarheid : Het gebruik van subquery's in de FROM-clausule maakt de query beter leesbaar omdat deze > Flexibiliteit : Met subquery's kunt u bewerkingen uitvoeren die anders lastig zouden zijn, zoals aggregaties of filteren met betrekking tot andere datasets, zonder dat u tussenliggende tabellen hoeft te maken.
Conclusie
Met subquery's in de FROM-clausule kunnen we definiëren tijdelijke resultaatsets die kunnen worden gebruikt door externe zoekopdrachten. Ze maken complexe SQL-bewerkingen eenvoudiger, verbeteren de leesbaarheid van zoekopdrachten en bieden flexibiliteit bij het filteren en aggregeren van gegevens. Weten hoe u subquery's binnen de FROM-clausule moet gebruiken, is een basisvaardigheid voor elke SQL-professional, vooral als u met complexe databases te maken heeft of wanneer u complexe gegevensanalyses moet uitvoeren.
Quiz maken