Kursinhalt
Fortgeschrittene SQL
Fortgeschrittene SQL
Verschachtelte Abfragen
Die Schulverwaltung ist erfreut über unsere jüngsten Erfolge und freut sich darauf, voranzukommen.
Da sie ihre Sommerferien beginnen, haben wir die Möglichkeit, neue Methoden zu erkunden und unsere SQL-Fähigkeiten zu verbessern.
Unser Schwerpunkt liegt auf verschachtelten Abfragen, einem zentralen Konzept in SQL.
Schauen wir uns ein Beispiel aus unserer Firmendatenbank an. Mit dem Wachstum des Unternehmens haben wir eine neue department
-Tabelle hinzugefügt. Dies ändert die Funktionsweise unserer Datenbank.
Sehen wir uns die Struktur der neuen Tabelle an, um ihre Rolle in unserer Datenbank zu verstehen:
Die neue Tabelle enthält Abteilungen, ihre Typen und Budgets. Und in der employee
-Tabelle, wie Sie sich vielleicht erinnern, befinden sich Informationen über die Abteilung, zu der jeder Mitarbeiter gehört.
Lassen Sie uns ein Beispiel betrachten, in dem wir verschachtelte Abfragen verwenden, um diejenigen Mitarbeiter abzurufen, die in Abteilungen mit Budgets von 500.000 $ oder weniger arbeiten:
SELECT * FROM employees WHERE department IN ( SELECT name FROM department WHERE budget <= 500000 )
Wir verwenden eine WHERE
-Klausel, um festzulegen, dass der Abteilungsname in der Tabelle enthalten sein muss, die wir mit der inneren Abfrage abrufen.
Lassen Sie uns diese Abfrage in zwei separate Abfragen aufteilen, um zu verstehen, wie sie funktioniert. Zunächst rufen wir die Namen der Abteilungen mit Budgets von $500.000 oder weniger ab (unsere innere Abfrage):
SELECT name FROM department WHERE budget <= 500000
Nun, unter Berücksichtigung des erhaltenen Ergebnisses, schreiben wir die zweite Abfrage, um Informationen über die Mitarbeiter aus diesen Abteilungen abzurufen:
SELECT * FROM employees WHERE department IN ( 'Marketing', 'Human Resources', 'Finance', 'Customer Service', 'Legal' )
Das Ergebnis dieser Abfrage wird gleich der ersten Abfrage sein.
Hier ist eine schrittweise Übersicht:
-
Die innere Abfrage ruft die
names
der benötigten Abteilungen ab; -
Die
WHERE
-Klausel prüft, ob diese Abteilungen in der Tabelle der inneren Abfrage vorhanden sind; -
Wir erhalten das gewünschte Ergebnis.
Hier ist die grundlegende Syntax für eine innere Abfrage:
Bei der Verwendung verschachtelter Abfragen sollten Sie folgende wichtige Punkte beachten:
-
Einzelnes Ergebnis in der Unterabfrage: Stellen Sie sicher, dass die verschachtelte Abfrage nur eine Spalte zurückgibt. Wenn sie in einem Vergleich verwendet wird, sollte sie idealerweise einen einzelnen Wert zurückgeben. Dies ist entscheidend für Operatoren wie
=
,>
,<
,>=
,<=
,<>
; -
Datentypen: Der Datentyp der zurückgegebenen Spalte sollte mit der Spalte übereinstimmen, mit der Sie sie vergleichen, um Fehler zu vermeiden;
-
Optimierung: Verschachtelte Abfragen können langsam sein, insbesondere wenn sie für jede Zeile in der Hauptabfrage ausgeführt werden;
-
Verwendung des IN Operators: Verschachtelte Abfragen nutzen oft den
IN
-Operator, um Werte in einer Teilmenge zu überprüfen. Sie können auch Vergleichsoperatoren für komplexere Bedingungen verwenden.
1. Was ist eine verschachtelte Abfrage in SQL?
2. Welcher SQL-Operator wird üblicherweise mit verschachtelten Abfragen verwendet, um Werte in einer Teilmenge zu überprüfen?
3. Warum ist es wichtig, dass der Datentyp der Spalte, die von einer verschachtelten Abfrage zurückgegeben wird, mit der Spalte übereinstimmt, mit der sie verglichen wird?
Danke für Ihr Feedback!