SQL-Unterabfragen sind wertvolle Funktionen, die es uns ermöglichen, eine Abfrage in eine andere einzubetten, wodurch das Abrufen und Bearbeiten von Daten auf komplizierte Weise noch wichtiger wird. Es wird verwendet, um temporäre Tabellen oder Zwischenergebnisse einzurichten, die anschließend von der äußeren Abfrage verwendet werden.
Unterabfrage in der FROM-Klausel
Mit der FROM-Klausel kann ein Unterabfrageausdruck in SQL angegeben werden. Die von der Unterabfrage erzeugte Beziehung wird dann als neue Beziehung verwendet, auf die die äußere Abfrage für weitere Vorgänge angewendet wird. Unterabfragen in derFROMDie Klausel wird verwendet, wenn wir einen temporären Datensatz erstellen müssen, der in keiner physischen Tabelle vorhanden ist. Dies kann bei der Arbeit mit komplexen Datensätzen äußerst hilfreich sein.
Ausrichten eines Bildes in CSS
Die Korrelationsvariablen aus den Tabellen, auf die in der FROM-Klausel der äußeren Abfrage verwiesen wird, können nicht direkt in den Unterabfragen in der FROM-Klausel verwendet werden. Nachfolgend finden Sie zwei Syntaxen für die Verwendung von Unterabfragen in der FROM-Klausel, die in verschiedenen Szenarien verwendet werden.
1. Einfache Unterabfrage imFROMKlausel:
SELECT Spalte1 Spalte2
FROM (SELECT Column_x AS C1 Column_y FROM Table WHERE Bedingung) AS Subquery_table
WHERE äußere_Bedingung;
2. Unterabfrage imFROMKlausel mitJOIN:
SELECT Spalte1 Spalte2
Linux-HostFROM (SELECT Column_x AS C1 Column_y FROM Table WHERE PREDICATE_X) AS Table2
JOIN table1 ON table2.some_column = table1.some_column
WO PRÄDIKAT;
Parameter:
- Unterabfrage : Die innere Abfrage in Klammern. Es ruft Daten ab, die als temporäre Tabelle fungieren.
- Alias : Der Unterabfrage muss ein Alias zugewiesen werden (
subquery_table), auf die in der äußeren Abfrage verwiesen werden soll. - Äußere Abfrage : Die äußere Abfrage kann dann mit dieser temporären Tabelle arbeiten, die von der Unterabfrage erstellt wurde, indem sie Filter anwendet oder weitere Vorgänge ausführt.
Funktionsweise von Unterabfragen in der FROM-Klausel
- Auswertung der Unterabfrage : Die Unterabfrage in der from-Klausel wird zuerst ausgewertet und dann werden die Ergebnisse der Auswertung in einer neuen temporären Beziehung gespeichert.
- Äußere Abfrage : Nachdem die Unterabfrage ausgeführt wurde und einen Datensatz zurückgibt, wird die äußere Abfrage ausgewertet, wobei nur die Tupel aus der temporären Beziehung ausgewählt werden, die das Prädikat in der where-Klausel der äußeren Abfrage erfüllen.
Beispiel für die Verwendung einer Unterabfrage in der FROM-Klausel
Lassen Sie uns einige Beispiele aus der Praxis besprechen, um zu verstehen, wie Unterabfragen in der FROM-Klausel in der Praxis funktionieren. Hier haben wir zwei Tische Lehrer Tabelle mit Informationen zu Dozenten, einschließlich Gehalt und Abteilung. Anderes ist Abteilung Tabelle, die Informationen zu verschiedenen Abteilungen einschließlich des Budgets der Abteilung enthält.
verknüpfte Liste Java
Lehrer Tisch
| Dozenten-ID | Name | Abteilung | Gehalt |
|---|---|---|---|
| 44547 | Schmied | Informatik | 95000 |
| 44541 | Rechnung | Elektrisch | 55000 |
| 47778 | Allein | Geisteswissenschaften | 44000 |
| 48147 | Erik | Mechanisch | 80000 |
| 411547 | Balsam | Informationstechnologie | 65000 |
| 48898 | Jena | Bürgerlich | 50000 |
Abteilung Tisch
| Abteilungsname | Budget |
|---|---|
| Informatik | 100000 |
| Elektrisch | 80000 |
| Geisteswissenschaften | 50000 |
| Mechanisch | 40000 |
| Informationstechnologie | 90000 |
| Bürgerlich | 60000 |
Beispiel 1: Finden Sie alle Professoren, deren Gehalt über dem durchschnittlichen Budget aller Fachbereiche liegt.
In diesem Beispiel verwenden wir eine Unterabfrage in der FROM-Klausel, um das durchschnittliche Budget aller Abteilungen zu berechnen und dann den Vergleich mit den Gehältern der Ausbilder durchzuführen.
Abfrage:
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;
Ausgabe
| Dozenten-ID | Name | Abteilung | Gehalt |
|---|---|---|---|
| 44547 | Schmied | Informatik | 95000 |
| 48147 | Erik | Mechanisch | 80000 |
Erläuterung:
Array in Java-Methoden
- Das durchschnittliche Budget aller Abteilungen aus der Abteilungsbeziehung beträgt 70000.
- Erik und Smith sind die einzigen Ausbilder in der Ausbilderbeziehung, deren Gehalt mehr als 70000 beträgt und daher in der Ausgabebeziehung vorhanden sind.
Warum Unterabfragen in der FROM-Klausel verwenden?
Die Verwendung von Unterabfragen in der FROM-Klausel bietet verschiedene Vorteile, wie unten aufgeführt:
- Vereinfachung : Sie können komplexe Abfragen vereinfachen, indem sie sie in kleinere, besser verwaltbare Teile zerlegen. Sie müssen temporäre Tabellen nicht explizit in Ihrer Datenbank erstellen.
- Verbesserte Lesbarkeit : Durch die Verwendung von Unterabfragen in der FROM-Klausel wird die Abfrage besser lesbar, da sie sich aufteilt Flexibilität : Mit Unterabfragen können Sie Vorgänge ausführen, die sonst umständlich wären, wie z. B. Aggregationen oder Filterungen in Bezug auf andere Datensätze, ohne dass Zwischentabellen erstellt werden müssen.
Abschluss
Unterabfragen in der FROM-Klausel ermöglichen uns die Definition temporäre Ergebnismengen die von externen Abfragen verwendet werden können. Sie vereinfachen komplexe SQL-Vorgänge, verbessern die Lesbarkeit von Abfragen und bieten Flexibilität bei der Datenfilterung und -aggregation. Zu wissen, wie Unterabfragen innerhalb der FROM-Klausel verwendet werden, ist eine Grundkompetenz für jeden SQL-Anwender, insbesondere, wenn er mit komplexen Datenbanken arbeitet oder komplexe Datenanalysen durchführen muss.
Quiz erstellen