MySQL -Unterabfragen

MySQL -Unterabfragen
Eine Unterabfrage ist eine SQL -Abfrage in einer größeren Abfrage, die rekursiv ist, oder eine Unterabfrage wird als interne Abfrage angesehen. Im Gegensatz dazu wird eine äußere Abfrage als die Abfrage bezeichnet, die die Unterabfrage enthält. Eine MySQL -Unterabfrage kann in die Abfragen eingebettet werden, einschließlich Auswahl, Einfügen, Aktualisieren oder Löschen. Darüber hinaus kann in einer anderen Unterabfrage eine Unterabfrage eingebettet werden. Die Phrase -Unterabfrage sollte in Klammern geschlossen werden, wo immer sie verwendet wird. Wir bringen Ihnen bei, wie und wann Sie die MySQL -Unterabfrage verwenden müssen, um komplizierte Abfragen zu komponieren und die Idee der zugehörigen Unterabfrage zu beschreiben. Öffnen Sie die Befehlszeilenschale von Ihrem Desktop und schreiben Sie Ihr Passwort, um sie zu verwenden. Drücken Sie die Eingabetaste und fahren Sie fort.

Unterabfrage innerhalb der einzelnen Tabellenaufzeichnungen:

Erstellen Sie eine Tabelle mit dem Namen "Tiere" in den Datenbankdaten.'Fügen Sie die folgende Aufzeichnung verschiedener Tiere mit unterschiedlichen Eigenschaften hinzu, wie angezeigt. Abrufen Sie diesen Datensatz mit der folgenden Abfrage aus:

>> aus Daten auswählen.Tiere;

Beispiel 01:

Lassen Sie uns die begrenzten Datensätze dieser Tabelle mit den Unterabfragen abrufen. Mit der folgenden Abfrage wissen wir, dass die Unterabfrage zuerst ausgeführt wird und die Ausgabe in der Hauptabfrage als Eingabe verwendet wird. Eine Unterabfrage holt einfach das Alter ab, in dem der Tierpreis 2500 beträgt. Das Alter eines Tieres, dessen Preis 2500 beträgt. Die Hauptabfrage wählt alle Tabellenaufzeichnungen aus, in denen das Alter größer als 4 ist, und die Ausgabe ist unten angegeben.

>> aus Daten auswählen.Tiere wo Alter> (Alter aus Daten auswählen.Tiere, bei denen Preis = "2500");

Beispiel 02:

Verwenden wir dieselbe Tabelle in verschiedenen Situationen. In diesem Beispiel werden wir eine Funktion verwenden, anstatt die Klausel in der Unterabfrage. Wir haben den Durchschnitt aller Preise für Tiere genommen. Der Durchschnittspreis beträgt 3189. Die Hauptabfrage wählt alle Aufzeichnungen von Tieren mit einem Preis von mehr als 3189 aus. Sie erhalten die folgende Ausgabe.

>> aus Daten auswählen.Tiere, wobei Preis> (AVG (Preis) aus Daten auswählen.Tiere);

Beispiel 03:

Verwenden wir die In -Klausel in der Hauptauswahlabfrage. Erstens wird die Unterabfrage die Preise von mehr als 2500 abrufen. Danach wählt die Hauptabfrage alle Datensätze der Tabellen -Tiere aus, bei denen der Preis im Unterabbildungsergebnis liegt.

>> aus Daten auswählen.Tiere, bei denen der Preis in (Auswahlpreis aus Daten auswählen.Tiere, bei denen Preis> 2500);

Beispiel 04:

Wir haben die Unterabfrage verwendet, um den Namen des Tieres zu holen, bei dem der Preis 7000 beträgt. Da dieses Tier eine Kuh ist, wird der Name "Kuh" des Namens an die Hauptanfrage zurückgegeben. In der Hauptabfrage werden alle Datensätze aus der Tabelle abgerufen, in der der Tiername 'Kuh ist."Da wir nur zwei Aufzeichnungen für Tierkuh haben", haben wir die folgende Ausgabe.

>> aus Daten auswählen.Tiere, wobei Name = (Name aus Daten auswählen.Tiere, bei denen Preis = "7000");

Unterfragen in mehrere Tabellenaufzeichnungen:

Nehmen Sie die folgenden zwei Tabellen an, "Schüler" und "Lehrer" in Ihrer Datenbank. Versuchen wir einige Beispiele für Unterabfragen mit diesen beiden Tabellen.

>> aus Daten auswählen.Student;
>> aus Daten auswählen.Lehrer;

Beispiel 01:

Wir holen Daten aus einer Tabelle mit der Unterabfrage und verwenden sie als Eingabe für die Hauptabfrage. Dies bedeutet, dass sich diese beiden Tabellen auf irgendeine Weise beziehen können. Im folgenden Beispiel haben wir die Unterabfrage verwendet, um den Namen des Schülers aus der Tabelle 'Schüler' zu holen, in der der Lehrername 'Samina ist.'Diese Abfrage wird' Samina 'an den Hauptabfragetabellenlehrer zurückkehren.'Die Hauptabfrage wählt dann alle Aufzeichnungen aus, die sich auf den Lehrernamen beziehen' Samina.„Da wir zwei Aufzeichnungen für diesen Namen haben, haben wir dieses Ergebnis erhalten.

>> aus Daten auswählen.Lehrer wo TeachName = (SELECT LEAXNAME FROM DATEN.Student, wo TeachName = 'Samina');

Beispiel 02:

Versuchen Sie dieses Beispiel, um die Unterabfrage bei verschiedenen Tabellen auszuarbeiten. Wir haben eine Unterabfrage, die den Namen des Lehrers aus dem Tischschüler abholt. Der Name sollte an jeder Position in seinem Wert 'i' haben. Dies bedeutet, dass alle Namen in der Spalte TeachName mit 'I' in ihrem Wert ausgewählt und zur Hauptabfrage zurückgegeben werden. Die Hauptabfrage wählt alle Datensätze aus der Tabelle "Lehrer" aus. Da die Unterabfrage 4 Namen von Lehrern zurückgab, werden wir deshalb eine Aufzeichnung all dieser Namen im Tischlehrer haben.''

>> aus Daten auswählen.Lehrer, bei dem TeachName in (ausgewählte TeachName aus Daten auswählen.Schüler, bei dem TeachName wie '%i%');

Beispiel 03:

Betrachten Sie die folgenden zwei Tabellen "Order" und "Order1".

>> aus Daten auswählen.Befehl;
>> aus Daten auswählen.Order1;

Versuchen wir eine Klausel in diesem Beispiel, um die Unterabfrage auszuarbeiten. Die Unterabfrage wählt die "ID" aus der Tabelle "Order1" aus, wobei der Spaltenstatus "einen Wert von" unbezahlt "hat.'Die' ID 'kann mehr als 1 betragen. Dies bedeutet, dass mehr als 1 Wert an die Hauptabfrage zurückgegeben wird, um die Tabellenergebnisse "Order" zu erhalten. In diesem Fall könnte jede "ID" verwendet werden. Wir haben die folgende Ausgabe für diese Abfrage.

>> Element, Verkauf, ID aus Daten auswählen.Bestellen Sie, wobei ID = eine beliebte (ID aus Daten auswählen.order1 wobei Status = 'unbezahlt');

Beispiel 04:

Angenommen, Sie haben die folgenden Daten in der Tabelle 'Order1', bevor Sie eine Abfrage anwenden.

>> aus Daten auswählen.Order1;

Wenden wir die Abfrage in einer Abfrage an, um einige Datensätze aus der Tabelle 'Order1' zu löschen. Erstens wählt die Unterabfrage den Wert "Status" aus der Tabelle "Reihenfolge" aus, in der das Element ist "Buch"."Die Unterabfrage rendite" als Wert "bezahlt". Jetzt löscht die Hauptabfrage die Zeilen aus der Tabelle 'Order1', wobei der Spaltenwert "Status" bezahlt wird.''

>> aus Daten löschen.order1 wobei status = (status aus Daten auswählen.bestellen wobei item = 'book');

Bei der Überprüfung haben wir jetzt die folgenden Aufzeichnungen in der Tabelle 'Order1' nach der Ausführung der Abfrage verbleiben.

>> aus Daten auswählen.Order1;

Abschluss:

Sie haben in allen oben genannten Beispielen effizient mit vielen Unterabfragen gearbeitet. Wir hoffen, jetzt ist alles klar und sauber.