Heim  >  Artikel  >  Datenbank  >  Was ist der Unterschied zwischen Inner Join, Left Outer Join, Right Outer Join und Cross Join?

Was ist der Unterschied zwischen Inner Join, Left Outer Join, Right Outer Join und Cross Join?

怪我咯
怪我咯Original
2017-06-23 13:39:565329Durchsuche

Der Unterschied zwischen Inner Join, Left Outer Join, Right Outer Join und Cross Join

Vorher war mir nicht ganz klar, welche Datensätze durch Inner Join und Outer Join in MSSQL gewonnen werden. Ich habe das SQL-Buch in den letzten Tagen noch einmal durchgesehen und die Gedanken sollten jetzt sehr klar sein. Jetzt werde ich mein Verständnis für alle zur Durchsicht mitteilen. Ich hoffe, dass Freunde wie ich, die die SQL-Verbindungsanweisung nicht verstehen, helfen können. (Bitte hör auf, mich auszulachen, weil ich ein Tutorial zu so einem Gericht gepostet habe, haha ​​:D) Es gibt zwei Tische A und B. Die Struktur von Tabelle A ist wie folgt: Aid: int; Identifikations-Seed, Primärschlüssel, Auto-Inkrement-ID Aname: varchar Die Datensituation, also die Datensatzsituation mit select * aus A, ist in Abbildung 1 unten dargestellt:


Abbildung 1: Daten von Tabelle A
Die Struktur von Tabelle B ist wie folgt: Bid: int; Primärschlüssel, Auto-Inkrement-ID Bnameid: int Die Datensituation, also die Datensatzsituation mit select * from B, ist wie folgt. In Abbildung 2 dargestellt:


Abbildung 2 : Tabelle B-Daten
Um Bid und Aid zu unterscheiden, erlauben wir nicht, dass jeder Missverständnisse hat. Setzen Sie daher den Startwert von Bid auf 100. Jeder mit Grundkenntnissen in SQL weiß, dass es ein Verbindungsfeld geben muss, um zwei Tabellen zu verbinden. Aus den Daten in der obigen Tabelle können wir ersehen, dass es sich bei Aid in Tabelle A und Bnameid in Tabelle B um zwei Verbindungsfelder handelt. Abbildung 3 unten veranschaulicht die Beziehung zwischen allen verbundenen Datensatzsätzen:

Abbildung 3: Verbindungsdiagramm
Jetzt verbinden wir uns intern und äußere Verknüpfungen werden erklärt eins nach dem anderen. 1. Innerer Join: Verwenden Sie den inneren Join, um die Datensätze des gemeinsamen Teils der beiden Tabellen abzurufen, d. h. den Datensatz C in Abbildung 3. Die Anweisung lautet wie folgt: Wählen Sie * aus A JOIN B ON A aus. Aid=B.Bnameid. Das laufende Ergebnis ist wie in Abbildung 4 dargestellt. Wie gezeigt: Tatsächlich sind die Ergebnisse von select * from A,B where A.Aid=B.Bnameid und Select * from A JOIN B ON A.Aid =B.Bnameid sind gleich.

Abbildung 4: Inner-Join-Daten

2. Outer-Join: Es gibt zwei Arten von Outer-Joins, einer ist der Left-Join (Left JOIN) und Right Join (Right JOIN)
(1) Left Join (Left JOIN): Das heißt, der öffentliche Teil des Datensatzes C + Tabelle A des Datensatzes A1 in Abbildung 3.
Die Anweisung lautet wie folgt: select * from A Left JOIN B ON A.Aid=B.Bnameid
Das laufende Ergebnis ist in Abbildung 5 unten dargestellt:


Abbildung 5: Left-Join-Daten

Erklärung: In der Anweisung befindet sich A links von B und ist ein Left-Join, daher lautet die Operationsmethode: A's Left-Join-Datensätze von B = Abbildung 3 Öffentlicher Teil Datensatz C + Tabelle A Datensatz A1
In Abbildung 3 ist die im Datensatz C vorhandene Hilfe: 2 3 6 7 8
In Abbildung 1 ist die vorhandene Hilfe in allen Datensatzsätzen A von Tabelle A ist: 1 2 3 4 5 6 7 8 9
Aid vorhanden im Datensatz A1 von Tabelle A = (in Abbildung 1 alle Aids in Tabelle A) – (in Abbildung 3 das ist, Aid existiert im Datensatz C), das Endergebnis ist: 1 4 5 9
Daraus kann geschlossen werden, dass die Datensätze von A links mit B in Abbildung 5 verbunden sind = der öffentliche Teil des Datensatzes C in Abbildung 3 + der Datensatz A1 der Tabelle A. Das Endergebnis ist in Abbildung 5 zu sehen, dass Bnameid und Bid nicht NULL sind. Die Datensätze befinden sich alle im Datensatz C im öffentlichen Teil von Abbildung 3; Bid als NULL und Aid als 1 4 5 9 sind die Aids, die im Datensatz A1 von Tabelle A vorhanden sind.

(2) Right JOIN: Das heißt, der öffentliche Teil-Datensatz C in Abbildung 3 + der Datensatz B1 von Tabelle B.

Die Anweisung lautet wie folgt: select * from A Right JOIN B ON A.Aid=B.Bnameid Das laufende Ergebnis ist in Abbildung 6 unten dargestellt:


Abbildung 6: Right-Join-Daten
Beschreibung: In der Anweisung befindet sich A links von B und ist ein Right-Join, daher lautet die Operationsmethode: A Right-Join-B-Datensätze = Abbildung 3 öffentlicher Teildatensatz C + Tabelle B-Datensatzsatz B1
In Abbildung 3 lautet die im Datensatzsatz C vorhandene Hilfe: 2 3 6 7 8
In Abbildung 2 lautet die Bnameid, die in allen Datensatzsätzen B der Tabelle B vorhanden ist: 2 3 6 7 8 11
Tabelle Die Bnameid, die im B-Datensatzsatz B1 = (in Abbildung 2, d. h. alle Bnameids in der B-Tabelle) – (in Abbildung 3, d. h. die Hilfe, die in der B-Datensatzgruppe vorhanden ist) vorhanden ist Datensatz C). In Abbildung 6 ist zu sehen, dass sich die Nicht-NULL-Datensätze von Aid und Aname alle im öffentlichen Teildatensatz C von Abbildung 3 befinden. Der Datensatz mit Aid und Aname als NULL und Aid als 11 ist die Bnameid, die im existiert Datensatz B1 der Tabelle B.
Querverbindung: Wenn zwei Tabellen ohne Bedingungen verbunden werden, ist die Anzahl der Einträge = Abbildung 1 * Abbildung 2

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Inner Join, Left Outer Join, Right Outer Join und Cross Join?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn