Spezifische Verwendungsanweisungen für MySQL-Joins

Spezifische Verwendungsanweisungen für MySQL-Joins

Das Wort JOIN ist jedem geläufig, der schon einmal mit Datenbanken zu tun hatte. Viele Leute kennen verschiedene JOINs, aber viele haben kein umfassendes Verständnis davon.
Angenommen, wir haben zwei Tabellen, Tabelle_A und Tabelle_B. Die Daten in diesen beiden Tabellen sind wie folgt:

TABELLE_A | TABELLE_B
 PK-Wert | PK-Wert
---- ---------- | ---- ----------
 1 FUCHS | 1 TRAB
 2 Polizisten | 2 Autos
 3 TAXI | 3 CAB
 6 WASHINGTON | 6 DENKMAL
 7 DELL | 7 PC
 5 ARIZONA | 8 MICROSOFT
 4 LINCOLN | 9 APFEL
 10 LUCENT | 11 SCOTCH

Join-Syntax:

Tabelle verbinden:
 table_reference JOIN table_factor [join_condition] //Innerer Join | table_reference {LEFT|RIGHT|FULL} [OUTER] JOIN table_reference join_condition //Äußerer Join | table_reference LEFT SEMI JOIN table_reference join_condition //Linker Semi-Join | table_reference CROSS JOIN table_reference [join_condition] (Stand Hive 0.10)


Tabellenreferenz:
 table_factor //Tabelle | join_table //Join-Anweisung table_factor:
 tbl_name [Alias] //Tabellenname [Alias]
 | table_subquery alias //Unterabfrage [Alias]
 | (table_references) // table_reference mit Leerzeichen


Beitrittsbedingung:
 ON-Ausdruck //bedingte Anweisung, die mit on beginnt

1. Innerer JOIN: (Innerer Join)

Bildbeschreibung hier einfügen

Dies ist die einfachste und am leichtesten verständliche und auch die am häufigsten vorkommende Verbindung. Diese Abfrage gibt alle Datensätze in der linken Tabelle (Tabelle A) zurück, die einen entsprechenden Datensatz in der rechten Tabelle (Tabelle B) haben. Dieser Zusammenhang wird wie folgt geschrieben:

SELECT <Auswahlliste> 
VON Tabelle_A A
INNER JOIN Tabelle_B B
EIN A.Taste = B.Taste
-- Innerer JOIN
WÄHLEN SIE A.PK ALS A_PK, A.Wert ALS A_Wert,
  B.Wert als B_Wert, B.PK als B_PK
VON Tabelle_A A
INNER JOIN Tabelle_B B
EIN A.PK = B.PK

A_PK A_Wert B_Wert B_PK
---- ---------- ---------- ----
 1 FOXTROTT 1
 2 Polizistenwagen 2
 3 TAXI 3
 6 WASHINGTON DENKMAL 6
 7 Dell-PC 7

(5 Zeile(n) betroffen)

2. Linker JOIN: (Linker Join)

Bildbeschreibung hier einfügen

Diese Abfrage gibt alle Datensätze aus der linken Tabelle (Tabelle A) zurück, unabhängig davon, ob sie mit Datensätzen in der rechten Tabelle (Tabelle B) übereinstimmen. Außerdem werden alle übereinstimmenden Datensätze aus der richtigen Tabelle zurückgegeben. Dieser Zusammenhang wird wie folgt geschrieben:

SELECT <Auswahlliste>
VON Tabelle_A A
LEFT JOIN Tabelle_B B
EIN A.Taste = B.Taste
-- Linker JOIN
WÄHLEN SIE A.PK ALS A_PK, A.Wert ALS A_Wert,
B.Wert als B_Wert, B.PK als B_PK
VON Tabelle_A A
LEFT JOIN Tabelle_B B
EIN A.PK = B.PK

A_PK A_Wert B_Wert B_PK
---- ---------- ---------- ----
 1 FOXTROTT 1
 2 Polizistenwagen 2
 3 TAXI 3
 4 LINCOLN NULL NULL
 5 ARIZONA NULL NULL
 6 WASHINGTON DENKMAL 6
 7 Dell-PC 7
 10 LICHT NULL NULL

(8 Zeile(n) betroffen)

3. Left Excluding JOIN: (Linker Join schließt innere Join-Ergebnisse aus)

Diese Abfrage gibt alle Datensätze aus der linken Tabelle (Tabelle A) zurück, die mit keinem Datensatz in der rechten Tabelle (Tabelle B) übereinstimmen. Dieser Zusammenhang wird wie folgt geschrieben:

Bildbeschreibung hier einfügen

SELECT <Auswahlliste> 
VON Tabelle_A A
LEFT JOIN Tabelle_B B
EIN A.Taste = B.Taste
Wobei B.Key NULL ist
-- Links ohne JOIN
WÄHLEN SIE A.PK ALS A_PK, A.Wert ALS A_Wert,
B.Wert als B_Wert, B.PK als B_PK
VON Tabelle_A A
LEFT JOIN Tabelle_B B
EIN A.PK = B.PK
Wobei B.PK NULL ist

A_PK A_Wert B_Wert B_PK
---- ---------- ---------- ----
 4 LINCOLN NULL NULL
 5 ARIZONA NULL NULL
 10 LICHT NULL NULL
(3 Zeile(n) betroffen)

4. Right JOIN: (Rechtsverbindung)

Bildbeschreibung hier einfügen

Diese Abfrage gibt alle Datensätze aus der rechten Tabelle (Tabelle B) zurück, unabhängig davon, ob diese Datensätze mit Datensätzen in der linken Tabelle (Tabelle A) übereinstimmen. Es werden auch alle übereinstimmenden Datensätze aus der linken Tabelle zurückgegeben. Dieser Zusammenhang wird wie folgt geschrieben:

SELECT <Auswahlliste>
VON Tabelle_A A
RIGHT JOIN Tabelle_B B
EIN A.Taste = B.Taste
--Rechts JOIN
WÄHLEN SIE A.PK ALS A_PK, A.Wert ALS A_Wert,
B.Wert als B_Wert, B.PK als B_PK
VON Tabelle_A A
RIGHT JOIN Tabelle_B B
EIN A.PK = B.PK

A_PK A_Wert B_Wert B_PK
---- ---------- ---------- ----
 1 FOXTROTT 1
 2 Polizistenwagen 2
 3 TAXI 3
 6 WASHINGTON DENKMAL 6
 7 Dell-PC 7
NULL NULL MICROSOFT 8
NULL NULL APPLE 9
NULL NULL SCOTCH 11

(8 Zeile(n) betroffen)

5. Right Excluding JOIN: (Rechter Join schließt innere Join-Ergebnisse aus)

Bildbeschreibung hier einfügen

Diese Abfrage gibt alle Datensätze aus der rechten Tabelle (Tabelle B) zurück, die mit keinem Datensatz in der linken Tabelle (Tabelle A) übereinstimmen. Dieser Zusammenhang wird wie folgt geschrieben:

SELECT <Auswahlliste>
VON Tabelle_A A
RIGHT JOIN Tabelle_B B
EIN A.Taste = B.Taste
Wobei A.Key NULL ist
-- Rechts ausschließend JOIN
WÄHLEN SIE A.PK ALS A_PK, A.Wert ALS A_Wert,
B.Wert als B_Wert, B.PK als B_PK
VON Tabelle_A A
RIGHT JOIN Tabelle_B B
EIN A.PK = B.PK
Wobei A.PK NULL ist

A_PK A_Wert B_Wert B_PK
---- ---------- ---------- ----
NULL NULL MICROSOFT 8
NULL NULL APPLE 9
NULL NULL SCOTCH 11

(3 Zeile(n) betroffen)

6. Äußerer JOIN: (Äußerer Join)

Bildbeschreibung hier einfügen

Dieser Join kann auch als vollständiger äußerer Join oder vollständiger Join bezeichnet werden. Diese Abfrage gibt alle Datensätze aus beiden Tabellen zurück und verbindet die Datensätze in der linken Tabelle (Tabelle A), die mit den Datensätzen in der rechten Tabelle (Tabelle B) übereinstimmen. Dieser Zusammenhang wird wie folgt geschrieben:

SELECT <Auswahlliste>
VON Tabelle_A A
VOLLSTÄNDIGER OUTER JOIN Tabelle_B B
EIN A.Taste = B.Taste
-- Äußerer JOIN
WÄHLEN SIE A.PK ALS A_PK, A.Wert ALS A_Wert,
B.Wert als B_Wert, B.PK als B_PK
VON Tabelle_A A
VOLLSTÄNDIGER OUTER JOIN Tabelle_B B
EIN A.PK = B.PK

A_PK A_Wert B_Wert B_PK
---- ---------- ---------- ----
 1 FOXTROTT 1
 2 Polizistenwagen 2
 3 TAXI 3
 6 WASHINGTON DENKMAL 6
 7 Dell-PC 7
NULL NULL MICROSOFT 8
NULL NULL APPLE 9
NULL NULL SCOTCH 11
 5 ARIZONA NULL NULL
 4 LINCOLN NULL NULL
 10 LICHT NULL NULL

(11 Zeile(n) betroffen)

7. Outer Excluding JOIN: (Äußerer Join schließt innere Join-Ergebnisse aus)

Bildbeschreibung hier einfügen

Diese Abfrage gibt alle Datensätze aus der linken Tabelle (Tabelle A) und alle Datensätze aus der rechten Tabelle (Tabelle B) zurück, die keine Übereinstimmung aufweisen. Diesen Verknüpfungstyp musste ich bisher noch nicht verwenden, alle anderen Verknüpfungstypen verwende ich jedoch ziemlich häufig. Dieser Zusammenhang wird wie folgt geschrieben:

SELECT <Auswahlliste>
VON Tabelle_A A
VOLLSTÄNDIGER OUTER JOIN Tabelle_B B
EIN A.Taste = B.Taste
Wobei A.Key NULL oder B.Key NULL ist
- Äußerer Ausschluss-JOIN
WÄHLEN SIE A.PK ALS A_PK, A.Wert ALS A_Wert,
B.Wert als B_Wert, B.PK als B_PK
VON Tabelle_A A
VOLLSTÄNDIGER OUTER JOIN Tabelle_B B
EIN A.PK = B.PK
Wobei A.PK NULL ist
ODER B.PK IST NULL

A_PK A_Wert B_Wert B_PK
---- ---------- ---------- ----
NULL NULL MICROSOFT 8
NULL NULL APPLE 9
NULL NULL SCOTCH 11
 5 ARIZONA NULL NULL
 4 LINCOLN NULL NULL
 10 LICHT NULL NULL

(6 Zeile(n) betroffen)

Beachten Sie, dass bei einem äußeren Join zuerst die inneren Join-Datensätze zurückgegeben werden, gefolgt von den rechten Join-Datensätzen und schließlich den linken Join-Datensätzen (zumindest macht das mein Microsoft SQL Server so; natürlich ist hierfür die Verwendung von ORDER BY-Anweisungen nicht erforderlich). Für weitere Informationen können Sie den Wikipedia-Artikel besuchen (der Eintrag ist jedoch nicht grafisch). Ich habe auch einen Spickzettel erstellt, den Sie bei Bedarf ausdrucken können. Wenn Sie mit der rechten Maustaste auf das Bild unten klicken und „Ziel speichern unter ...“ auswählen, wird das Bild in voller Größe heruntergeladen.

Bildbeschreibung hier einfügen

Dies ist das Ende dieses Artikels über die spezifische Verwendung von MySQL-Joins. Weitere relevante Verwendungen von MySQL-Joins finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Zusammenfassung der sieben MySQL JOIN-Typen
  • MySQL-Datenbankgrundlagen - Prinzip der Join-Operation
  • MySQL-Joinpufferprinzip
  • MySQL-Join-Abfragesyntax und Beispiele
  • Zusammenfassung verschiedener gängiger Abfragebeispiele für Join-Tabellen in MySQL
  • Spezifische Verwendung der sieben JOINs von MySQL

<<:  Vier Möglichkeiten, CSS und HTML zu kombinieren

>>:  So bedienen Sie Docker und Images

Artikel empfehlen

Mehrere Methoden zum Ausführen von SQL-Dateien unter der MySQL-Befehlszeile

Inhaltsverzeichnis Die erste Methode: Wenn die My...

Lösung für die leere Seite nach einem vue.js-gepackten Projekt

Ich glaube, dass viele Partner, die gerade erst m...

Nginx-Dienst 500: Interner Serverfehler einer der Gründe

500 (Interner Serverfehler) Auf dem Server ist ei...

Fassen Sie die häufigsten Anwendungsprobleme von XHTML-Code zusammen

<br />Ich habe festgestellt, dass viele Leut...

Einführung in die CSS-Stilklassifizierung (Grundkenntnisse)

Klassifizierung von CSS-Stilen 1. Interner Stil -...

So verwenden Sie das Datums-Plugin vue-bootstrap-datetimepicker in vue-cli 3

Nachfragehintergrund In letzter Zeit plane ich, V...

So erstellen Sie mit Squid einen Proxyserver für http und https

Als wir nginx eingeführt haben, haben wir nginx a...

11 Möglichkeiten, Duplikate aus JS-Arrays zu entfernen

Bei der tatsächlichen Arbeit oder bei Interviews ...

SQL-basierte Abfrageanweisungen

Inhaltsverzeichnis 1. Einfache SELECT-Anweisung 1...

Bringen Sie Ihnen bei, wie Sie wartbaren JS-Code schreiben

Inhaltsverzeichnis Was ist wartbarer Code? Code-K...

jQuery implementiert das Ausblenden und Anzeigen von HTML-Elementen

Lassen Sie uns die Funktion von Taobao nachahmen,...

Vue Grundanleitung Beispiel grafische Erklärung

Inhaltsverzeichnis 1. v-on-Richtlinie 1. Grundleg...