SQL-Unterabfragen

Letzte Aktualisierung am 26. Februar 2020, 08:07:42 Uhr (UTC / GMT +8 Stunden)

Was ist eine Unterabfrage in SQL?

Eine Unterabfrage ist eine SQL-Abfrage, die in einer größeren Abfrage verschachtelt ist.

  • Eine Unterabfrage kann auftreten in:
    • – Eine SELECT-Klausel
    • – Eine FROM-Klausel
    • – Eine WHERE-Klausel
  • Die Unterabfrage kann in einer SELECT-, INSERT-, UPDATE- oder DELETE-Anweisung oder in einer anderen verschachtelt sein Unterabfrage.
  • Eine Unterabfrage wird normalerweise in der WHERE-Klausel einer anderen SQL SELECT-Anweisung hinzugefügt.
  • Sie können die Vergleichsoperatoren verwenden, z. B. >, < oder =. Der Vergleichsoperator kann auch ein mehrzeiliger Operator sein, z. B. IN, ANY oder ALL.
  • Eine Unterabfrage wird auch als innere Abfrage oder innere Auswahl bezeichnet, während die Anweisung, die eine Unterabfrage enthält, auch als bezeichnet wird äußere Abfrage oder äußere Auswahl.
  • Die innere Abfrage wird zuerst vor der übergeordneten Abfrage ausgeführt, damit die Ergebnisse einer inneren Abfrage an die äußere Abfrage übergeben werden können.

Sie Sie können eine Unterabfrage in einer SELECT-, INSERT-, DELETE- oder UPDATE-Anweisung verwenden, um die folgenden Aufgaben auszuführen:

  • Vergleichen Sie einen Ausdruck mit dem Ergebnis der Abfrage.
  • Bestimmen Sie, ob In den Ergebnissen der Abfrage ist ein Ausdruck enthalten.
  • Überprüfen Sie, ob die Abfrage Zeilen auswählt.

Syntax:

  • Die Unterabfrage (innere Abfrage) wird einmal ausgeführt, bevor die Hauptabfrage (äußere Abfrage) ausgeführt wird.
  • Die Hauptabfrage (äußere Abfrage) verwendet das Unterabfrageergebnis.

SQL-Unterabfragen Beispiel:

In diesem Abschnitt lernen Sie die Anforderungen für die Verwendung von Unterabfragen kennen. Wir haben die folgenden zwei Tabellen „student“ und „markiert“ mit dem gemeinsamen Feld „StudentID“.



Studentennoten

Jetzt möchten wir eine Abfrage schreiben, um alle Studenten zu identifizieren, die bessere Noten als die des Studenten erhalten, dessen StudentID „V002“ ist, aber wir kennen die Noten von „V002“ nicht.
– Um das Problem zu lösen, benötigen wir zwei Abfragen. Eine Abfrage gibt die Noten (gespeichert im Feld Total_marks) von „V002“ zurück und eine zweite Abfrage identifiziert die Schüler, die bessere Noten als das Ergebnis der ersten Abfrage erhalten.

Erste Abfrage:

Abfrageergebnis:

Das Ergebnis der Abfrage ist 80.
– Mit dem Ergebnis dieser Abfrage haben wir hier eine weitere Abfrage geschrieben, um die Schüler zu identifizieren, die bessere Noten als 80 erhalten. Hier ist die Abfrage:

Zweite Abfrage:

Abfrageergebnis:

Über zwei Abfragen identifizierte Studenten, die t bekommen Die bessere Nummer als der Student, dessen StudentID „V002“ (Abhay) ist.

Sie können die beiden oben genannten Abfragen kombinieren, indem Sie eine Abfrage in die andere einfügen. Die Unterabfrage (auch als „innere Abfrage“ bezeichnet) ist die Abfrage in Klammern. Siehe folgenden Code und Abfrageergebnis:

SQL-Code:

Abfrageergebnis:

Bildliche Darstellung der SQL-Unterabfrage:

Unterabfragen: Allgemeine Regeln

Eine SELECT-Anweisung für Unterabfragen ist fast ähnlich auf die SELECT-Anweisung und wird verwendet, um eine reguläre oder äußere Abfrage zu beginnen. Hier ist die Syntax einer Unterabfrage:

Syntax:

Unterabfragen: Richtlinien

Bei der Verwendung von Unterabfragen sind einige Richtlinien zu beachten:

  • Eine Unterabfrage muss in Klammern stehen.
  • Eine Unterabfrage muss auf der rechten Seite des Vergleichsoperators platziert werden.
  • Unterabfragen können ihre Ergebnisse nicht intern bearbeiten, daher kann die ORDER BY-Klausel nicht zu einer Unterabfrage hinzugefügt werden. Sie können eine ORDER BY-Klausel in der SELECT-Hauptanweisung (äußere Abfrage) verwenden, die die letzte Klausel sein wird.
  • Verwenden Sie einzeilige Operatoren mit einzeiligen Unterabfragen.
  • Wenn eine Unterabfrage (innere Abfrage) einen Nullwert an die äußere Abfrage zurückgibt, gibt die äußere Abfrage keine Zeilen zurück, wenn bestimmte Vergleichsoperatoren in einer WHERE-Klausel verwendet werden.

Art der Unterabfragen

  • Unterabfrage für eine einzelne Zeile: Gibt null oder eine Zeile zurück.
  • Unterabfrage mit mehreren Zeilen: Gibt eine oder mehrere Zeilen zurück.
  • Unterabfragen mit mehreren Spalten: Gibt eine oder mehrere Spalten zurück.
  • Korrelierte Unterabfragen: Verweisen Sie auf eine oder mehrere Spalten in der äußeren SQL-Anweisung. Die Unterabfrage wird als korrelierte Unterabfrage bezeichnet, da die Unterabfrage mit der äußeren SQL-Anweisung verknüpft ist.
  • Verschachtelte Unterabfragen: Unterabfragen werden in eine andere Unterabfrage eingefügt.

In der nächsten Sitzung haben wir die oben genannten Themen ausführlich besprochen. Abgesehen von der oben genannten Art von Unterabfragen können Sie eine Unterabfrage in den Anweisungen INSERT, UPDATE und DELETE verwenden. Hier eine kurze Diskussion:

Unterabfragen mit INSERT-Anweisung

Die INSERT-Anweisung kann mit Unterabfragen verwendet werden.Hier sind die Syntax und ein Beispiel für Unterabfragen mit der INSERT-Anweisung.

Syntax:

INSERT INTO table_name ) ]SELECT FROM table1 ;

Wenn wir diese Aufträge einfügen möchten von “ Die Tabelle „orders“ mit dem Wert „Vorauszahl 2000“ oder „5000“ in der Tabelle „neworder“ kann wie folgt verwendet werden:

Beispieltabelle: Bestellungen

SQL-Code:

Ausgabe:

Weitere Informationen von Unterabfragen mit INSERT-Anweisung klicken Sie hier.

Unterabfragen mit UPDATE-Anweisung

In einer UPDATE-Anweisung können Sie einen neuen Spaltenwert festlegen, der dem Ergebnis entspricht, das von einer einzelnen Zeilenunterabfrage zurückgegeben wird. Hier sind die Syntax und ein Beispiel für Unterabfragen mit der UPDATE-Anweisung.

Syntax:

UPDATE table SET column_name = new_value(SELECT COLUMN_NAMEFROM TABLE_NAME) 

Wenn wir dieses ord_date in aktualisieren möchten “ neworder „-Tabelle mit“ 15-JAN-10 „, die die Differenz von ord_amount und advanced_amount aufweist, ist kleiner als die minimale ord_amount von“ orders „-Tabelle. Die folgende SQL kann verwendet werden:

Beispieltabelle: neworder

SQL-Code:

Ausgabe:

Um weitere Details zu Unterabfragen mit der UPDATE-Anweisung anzuzeigen, klicken Sie hier.

Unterabfragen mit DELETE-Anweisung

Die DELETE-Anweisung kann mit Unterabfragen verwendet werden. Hier sind die Syntax und ein Beispiel für Unterabfragen mit der Anweisung DELETE.

Syntax:

DELETE FROM TABLE_NAME(SELECT COLUMN_NAME FROM TABLE_NAME) 

Wenn wir die Bestellungen aus der Tabelle „neworder“ löschen möchten, deren Vorschussbetrag kleiner ist als der maximale Vorschussbetrag von “ In der Tabelle „orders“ kann die folgende SQL verwendet werden:

Beispieltabelle: neworder

SQL-Code:

Ausgabe:

Um weitere Details zu Unterabfragen mit der DELETE-Anweisung anzuzeigen, klicken Sie hier.

Wie geht es weiter?

  • SQL-Unterabfragen – Folienpräsentation
  • Unterabfragen mit einer Zeile
  • Unterabfragen mit mehreren Zeilen und Spalten
  • Korrelierte Unterabfragen mit Aliasen
  • Verschachtelte Unterabfragen

Hinweis: Die Ausgabe der hier gezeigten SQL-Anweisung erfolgt mit Oracle Database 10g Express Edition.

SQL-Übungen üben

  • SQL-Übungen, Übung, Lösung
  • SQL Daten aus Tabellen abrufen
  • SQL-Boolesche und relationale Operatoren
  • SQL-Platzhalter und spezielle Operatoren
  • SQL-Aggregat Funktionen
  • Ausgabe der SQL-Formatierungsabfrage
  • SQL-Abfrage in mehreren Tabellen
  • FILTERUNG und SORTIERUNG in der HR-Datenbank
  • SQL JOINS
    • SQL JOINS
    • SQL JOINS in der HR-Datenbank
  • SQL SUBQUERIES
    • SQL SUBQUERIES
    • SQL-SUBQUERIES in der HR-Datenbank
  • SQL Union
  • SQL-Ansicht
  • SQL-Benutzerkontenverwaltung
  • Movie Database
    • GRUNDLEGENDE Abfragen in der Filmdatenbank
    • SUBQUERIES in der Filmdatenbank
    • VERBINDET in der Filmdatenbank
  • Fußballdatenbank
    • Einführung
    • GRUNDLEGENDE Abfragen in der Fußballdatenbank
    • SUBQUERIES in der Fußballdatenbank
    • BEITRETEN Abfragen in Fußballdatenbank
  • Krankenhausdatenbank
    • Einführung
    • BASIC, SUBQUERIES und JOINS
  • Mitarbeiterdatenbank
    • GRUNDLEGENDE Abfragen zur Mitarbeiterdatenbank
    • SUBQUERIES zur Mitarbeiterdatenbank
  • Weitere werden folgen!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.