Heim > Datenbank > MySQL-Tutorial > SQL-Unterabfragen verstehen: Eine vollständige Anleitung mit Beispielen

SQL-Unterabfragen verstehen: Eine vollständige Anleitung mit Beispielen

Linda Hamilton
Freigeben: 2024-12-27 01:18:12
Original
336 Leute haben es durchsucht

Understanding SQL Subqueries: A Complete Guide with Examples

Was ist eine Unterabfrage in SQL?

Eine Unterabfrage, auch bekannt als innere Abfrage oder verschachtelte Abfrage, ist eine Abfrage innerhalb einer anderen SQL-Abfrage. Es steht in Klammern und wird zuerst ausgeführt, um Ergebnisse bereitzustellen, die die äußere Abfrage zur weiteren Verarbeitung verwendet.


Arten von Unterabfragen

  1. Einzelzeilen-Unterabfrage
    • Gibt als Ergebnis eine Zeile zurück.
    • Wird häufig mit Vergleichsoperatoren wie =, <, > verwendet.

Beispiel:

Finden Sie den Namen des Mitarbeiters mit dem höchsten Gehalt:

   SELECT Name
   FROM Employees
   WHERE Salary = (SELECT MAX(Salary) FROM Employees);
Nach dem Login kopieren
Nach dem Login kopieren
  1. Mehrzeilige Unterabfrage
    • Gibt als Ergebnis mehrere Zeilen zurück.
    • Wird mit Operatoren wie IN, ANY, ALL verwendet.

Beispiel:

Finden Sie Mitarbeiter, die in Abteilungen mit mehr als 5 Mitgliedern arbeiten:

   SELECT Name
   FROM Employees
   WHERE DepartmentID IN (SELECT DepartmentID FROM Departments WHERE Members > 5);
Nach dem Login kopieren
Nach dem Login kopieren
  1. Korrelierte Unterabfrage
    • Referenziert Spalten aus der äußeren Abfrage.
    • Wird wiederholt für jede Zeile der äußeren Abfrage ausgeführt.

Beispiel:

Finden Sie Mitarbeiter, die mehr als das Durchschnittsgehalt ihrer Abteilung verdienen:

   SELECT Name, Salary
   FROM Employees E
   WHERE Salary > (SELECT AVG(Salary) FROM Employees WHERE DepartmentID = E.DepartmentID);
Nach dem Login kopieren
Nach dem Login kopieren
  1. Verschachtelte Unterabfrage
    • Enthält eine weitere Unterabfrage.

Beispiel:

Finden Sie Abteilungen, in denen das durchschnittliche Mitarbeitergehalt 50.000 US-Dollar übersteigt:

   SELECT Name
   FROM Employees
   WHERE Salary = (SELECT MAX(Salary) FROM Employees);
Nach dem Login kopieren
Nach dem Login kopieren

Anwendungsfälle von Unterabfragen

  1. Daten filtern: Verwenden Sie Unterabfragen, um Zeilen basierend auf bestimmten Kriterien zu filtern.
   SELECT Name
   FROM Employees
   WHERE DepartmentID IN (SELECT DepartmentID FROM Departments WHERE Members > 5);
Nach dem Login kopieren
Nach dem Login kopieren
  1. Datenvergleich: Vergleichen Sie Daten zwischen Tabellen mithilfe von Unterabfragen.
   SELECT Name, Salary
   FROM Employees E
   WHERE Salary > (SELECT AVG(Salary) FROM Employees WHERE DepartmentID = E.DepartmentID);
Nach dem Login kopieren
Nach dem Login kopieren
  1. Datenaggregation: Führen Sie erweiterte Aggregationen durch, indem Sie Abfragen verschachteln.
   SELECT DepartmentName
   FROM Departments
   WHERE DepartmentID IN (
       SELECT DepartmentID
       FROM Employees
       WHERE Salary > (SELECT AVG(Salary) FROM Employees)
   );
Nach dem Login kopieren
  1. Dynamische Updates: Aktualisieren oder löschen Sie Zeilen dynamisch basierend auf einer Unterabfrage.
   SELECT * FROM Products WHERE Price > (SELECT AVG(Price) FROM Products);
Nach dem Login kopieren

Vorteile von Unterabfragen

  1. Modularität: Teilen Sie komplexe Abfragen in kleinere, überschaubare Teile auf.
  2. Lesbarkeit: Macht die Abfragelogik in vielen Fällen klarer.
  3. Flexibilität: Kann in SELECT-, WHERE-, FROM- und HAVING-Klauseln verwendet werden.

Einschränkungen

  1. Leistung: Unterabfragen, insbesondere korrelierte, können langsamer sein, da sie mehrmals ausgeführt werden.
  2. Komplexität: Tief verschachtelte Unterabfragen können schwer zu lesen und zu debuggen sein.
  3. Optimierungsherausforderungen: Manchmal können dieselben Ergebnisse effizienter mit Verknüpfungen erzielt werden.

Fazit

Unterabfragen sind ein leistungsstarkes Werkzeug in SQL, um komplexe Logik in überschaubare Teile zu zerlegen, eine dynamische Datenanalyse zu ermöglichen und die Datenmanipulation zu erleichtern. Für eine optimale Abfrageleistung ist es jedoch wichtig zu verstehen, wann Unterabfragen im Vergleich zu Alternativen wie Verknüpfungen verwendet werden sollten.

Das obige ist der detaillierte Inhalt vonSQL-Unterabfragen verstehen: Eine vollständige Anleitung mit Beispielen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage