Erläuterung des MySQL-Multitabellen-Join-Abfragebeispiels

Erläuterung des MySQL-Multitabellen-Join-Abfragebeispiels

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:
  • Probleme mit Join-Abfragen und Unterabfragen in MySQL
  • Detaillierte Erläuterung der MySQL-Multitabellen-Joinabfrage
  • Welche Arten von MySQL-Verbindungsabfragen kennen Sie?
  • Prinzip und Anwendung der MySQL-Verbindungsabfrage
  • MySQL-Join-Abfragesyntax und Beispiele
  • Detaillierte Erläuterung der Prinzipien und Anwendungsbeispiele von MySQL-Joinabfragen, Union-Abfragen und Unterabfragen
  • Detaillierte Erläuterung des Mysql Self-Join-Abfragebeispiels
  • Detaillierte Erläuterung der MySQL-Verbindungsabfrage

<<:  Tiefgreifendes Verständnis des asynchronen Wartens in Javascript

>>:  Nginx-Lastausgleichsalgorithmus und Failover-Analyse

Artikel empfehlen

Tutorial zur Installation von MySQL 8.0.11 unter Linux

1. Gehen Sie zur offiziellen Website, um das Inst...

20 CSS-Codierungstipps für mehr Effizienz (sortiert)

In diesem Artikel möchten wir eine Sammlung von 2...

js zur Realisierung eines Web-Musikplayers

Dieser Artikel enthält einfachen HTML- und Musikp...

XHTML-Erste-Schritte-Tutorial: Verwenden des Frame-Tags

<br />Durch die Frame-Struktur ist die gleic...

Detaillierte Erklärung der MySQL 8.0.18-Befehle

Öffnen Sie den gerade entpackten Ordner C:\web\my...

So lösen Sie das jQuery-Konfliktproblem

In der Frontend-Entwicklung ist $ eine Funktion i...

So deklarieren Sie einen Cursor in MySQL

So deklarieren Sie einen Cursor in MySQL: 1. Vari...

Implementierung der automatischen Vervollständigung von Docker-Befehlen

Vorwort Ich weiß nicht, wie lange dieser Freund D...

Eine Minute, um die Laufruhe von HTML+Vue+Element-UI zu erleben

Technik-Fan html-Webseite, müssen Sie wissen Von ...

Tiefgreifendes Verständnis der Vue-cli4-Routing-Konfiguration

Inhaltsverzeichnis Vorwort - Vue Routing 1. Die g...