In tatsächlichen Projekten gibt es Beziehungen zwischen mehreren Tabellen. Es ist unmöglich, alle Daten in einer Tabelle abzurufen. Wenn keine Tabellenverbindung besteht, sind viele Operationen erforderlich. Beispielsweise müssen Sie einschränkende Bedingungen aus Tabelle A finden, um Daten aus Tabelle B abzurufen. Für den Betrieb sind nicht nur mehrere Tabellen erforderlich, auch die Effizienz ist nicht hoch. Beispielsweise heißt es im Buch: Der Code lautet wie folgt: FId auswählen VON T_Kunde WO FName='MIKE' Diese SQL-Anweisung gibt 2 zurück, was bedeutet, dass der FId-Wert des Kunden mit dem Namen MIKE 2 ist. Auf diese Weise können wir den Datensatz mit FCustomerId gleich 2 in T_Order abrufen: Der Code lautet wie folgt: Wählen Sie FAnzahl,FPreis VON T_Order WO FCustomerId=2 Sehen wir uns Tabellenverknüpfungen genauer an. Es gibt viele verschiedene Arten von Tabellenverknüpfungen, darunter Kreuzverknüpfungen (CROSS JOIN), innere Verknüpfungen (INNER JOIN) und äußere Verknüpfungen (OUTTER JOIN). (1) INNER JOIN: Ein Inner Join verbindet zwei Tabellen und ruft nur die Daten ab, die die Verbindungsbedingungen der beiden Tabellen erfüllen. Der Code lautet wie folgt: Wählen Sie o.FId,o.FNumber,o.FPrice, c.FId,c.FName,c.FAge VON T_Bestellung o JOIN T_Kunde c ON o.FCustomerId= c.FId Hinweis: In den meisten Datenbanksystemen ist INNER in INNER JOIN optional und INNER JOIN ist die Standardverbindungsmethode. Bei der Verwendung von Tabellenverknüpfungen sind Sie nicht auf die Verknüpfung von nur zwei Tabellen beschränkt, da es viele Fälle gibt, in denen Sie mehrere Tabellen verbinden müssen. Beispielsweise muss die Tabelle T_Order auch eine Verbindung zu den Tabellen T_Customer und T_OrderType herstellen, um die erforderlichen Informationen abzurufen. Sie können die folgende SQL-Anweisung schreiben: Der Code lautet wie folgt: Wählen Sie o.FId,o.FNumber,o.FPrice, c.FId,c.FName,c.FAge VON T_Bestellung o JOIN T_Kunde c ON o.FCustomerId= c.FId INNER JOIN T_Auftragstyp ON T_Order.FTypeId= T_OrderType.FId (2) Cross Join: Alle Datensätze aller an einem Cross Join beteiligten Tabellen werden in die Ergebnismenge aufgenommen. Es gibt zwei Möglichkeiten, Cross Joins zu definieren: implizit und explizit. Schauen wir uns ein implizites Beispiel an: Der Code lautet wie folgt: Wählen Sie T_Customer.FId, T_Customer.FName, T_Customer.FAge, T_Order.FId, T_Order.FNumber, T_Order.FPrice VON T_Kunde, T_Bestellung Um einen expliziten Join zu verwenden, müssen Sie CROSS JOIN verwenden, wie unten gezeigt: Der Code lautet wie folgt: Wählen Sie T_Customer.FId, T_Customer.FName, T_Customer.FAge, T_Order.FId, T_Order.FNumber, T_Order.FPrice VON T_Kunde CROSS JOIN T_Reihenfolge (3) Äußerer Join: Ein interner Join erhält nur Daten, die die Join-Bedingungen erfüllen, während ein externer Join hauptsächlich zur Lösung eines solchen Szenarios verwendet wird. Es werden die Daten abgerufen, die die Bedingungen erfüllen. Daran besteht kein Zweifel. Die äußere Verbindung ruft auch einen anderen Teil der Daten ab, d. h. die Daten, die die Bedingungen nicht erfüllen, werden mit NULL aufgefüllt. Schauen wir uns zunächst die Klassifizierung von äußeren Verknüpfungen an: LEFT OUTER JOIN, RIGHT OUTER JOIN und FULL OUTER JOIN. I. LEFT OUTER JOIN: Wie oben erwähnt, werden Daten, die die Bedingungen nicht erfüllen, mit NULL aufgefüllt. Welche müssen also mit NULL-Werten gefüllt werden? Wenn für den linken äußeren Join die Daten in der linken Tabelle, die die Bedingungen erfüllen, keine entsprechende Entsprechung in der rechten Tabelle haben, müssen die entsprechenden Felder der rechten Tabelle mit NULL-Werten gefüllt werden. Das heißt, der Hauptteil des linken äußeren Join ist die linke Tabelle, und die rechte Tabelle arbeitet mit ihr zusammen. Der Code lautet wie folgt: Wählen Sie o.FNummer,o.FPreis,o.FKundenID, c.Vorname,c.Alter VON T_Order o LINKER OUTER JOIN T_Kunde c EIN o.FCustomerId=c.FId Hinweis: Wenn Sie einen Left Outer Join verwenden, können Sie die Daten herausfiltern, die nicht mit der Where-Anweisung übereinstimmen. Der Code lautet wie folgt: Wählen Sie o.FNummer,o.FPreis,o.FKundenID, c.Vorname,c.Alter VON T_Order o LINKER OUTER JOIN T_Kunde c EIN o.FCustomerId=c.FId WO o.FPreis>=150 II. RIGHT OUTER JOIN: Der Right Outer Join ist das Gegenteil des Left Outer Join. Die Felder der linken Tabelle werden mit NULL-Werten gefüllt. Das heißt, das Subjekt des rechten äußeren Join ist die rechte Tabelle und die linke Tabelle kooperiert mit ihr. Der Code lautet wie folgt: Wählen Sie o.FNummer,o.FPreis,o.FKundenID, c.Vorname,c.Alter VON T_Order o RECHTER ÄUSSERER JOIN T_Kunde c EIN o.FCustomerId=c.FId Hinweis: Wie beim Left Outer Join können Sie die Where-Anweisung verwenden, um zu filtern III. FULLOUTER JOIN: Ein vollständiger Outer Join ist eine Kombination aus einem Left Outer Join und einem Right Outer Join. Das heißt, es umfasst sowohl die Ergebnismenge des linken äußeren Joins als auch die Ergebnismenge des rechten äußeren Joins. Der Code lautet wie folgt: Wählen Sie o.FNummer,o.FPreis,o.FKundenID, c.Vorname,c.Alter VON T_Order o VOLLSTÄNDIGER OUTER JOIN T_Kunde c EIN o.FCustomerId=c.FId Das Ergebnis ist äquivalent zu: Wählen Sie o.FNummer,o.FPreis,o.FKundenID, c.Vorname,c.Alter VON T_Order o LINKER OUTER JOIN T_Kunde c EIN o.FCustomerId=c.FId UNION Wählen Sie o.FNummer,o.FPreis,o.FKundenID, c.Vorname,c.Alter VON T_Order o RECHTER ÄUSSERER JOIN T_Kunde c EIN o.FCustomerId=c.FId Mehrere SQL-Anweisungen für Abfragen mehrerer Tabellen: (Das Folgende ist eine Abfrage aus zwei Tabellen <kann auch als Abfrage aus drei Tabellen angesehen werden>, die alle Felder in der Tabelle v_goods anzeigt, das Namensfeld in der Tabelle admin2 als hinzugefügte Person anzeigt und das Namensfeld in der Tabelle admin2 als Operator anzeigt) Abfragen mehrerer Tabellen können gemäß den folgenden drei Beispielen in SQL geschrieben werden Wählen Sie v.*, (Wählen Sie a.name aus admin2 a, wobei a.adminId = v.loadInId) als aname, (Wählen Sie a.name aus admin2 a, wobei a.adminId = v.operatorId) als uname aus v_goods v, wobei 1 = 1; WÄHLEN Sie v.*,a.name aname,b.name uname VON v_goods v,admin2 a,admin2 b WO a.adminId=v.loadInId UND b.adminId=v.operatorId; Wählen Sie v.*, a.name aname, b.name uname aus v_goods v LEFT JOIN admin2 a ON a.adminId = v.loadInId LEFT JOIN admin2 b ON b.adminId = v.operatorId; Das könnte Sie auch interessieren:
|
<<: Tiefgreifendes Verständnis des asynchronen Wartens in Javascript
>>: Nginx-Lastausgleichsalgorithmus und Failover-Analyse
nginx (Engine x) ist ein leistungsstarker HTTP- u...
Manchmal müssen wir eine ganze Datenspalte aus ei...
Die Isolierung von Prozessadressräumen ist ein be...
Inhaltsverzeichnis Zabbix benutzerdefinierte Über...
Inhaltsverzeichnis Überblick Verwenden zugeordnet...
Inhaltsverzeichnis 1. Bootstrap5-Haltepunkte 1.1 ...
Kommentare und Nachrichten waren ursprünglich ein...
Das Shell-Skript richtet die Zugriffskontrolle ei...
Vorwort Die Benutzeroberfläche von Deepin sieht w...
Hinweis Auf dieses Plugin kann nur unter dem http...
Geben Sie der Zeit Zeit und lassen Sie die Vergan...
1. Erstellen Sie einen Ordner zum Speichern von N...
In diesem Artikel wird der spezifische JS-Code zu...
Fehlerbeschreibung Wenn wir Docker Desktop instal...
Mysqldump wird für logische Backups in MySQL verw...