Vergleichstabelle
Vergleichsgrundlage | Linke äußere Verbindung | Rechter äußerer Join | Volle äußere Verbindung |
---|---|---|---|
Basic | Alle Tupel der linken Tabelle bleiben im Ergebnis. | Alle Tupel der rechten Tabelle bleiben im Ergebnis. | Alle Tupel der linken und rechten Tabelle bleiben im Ergebnis. |
NULL-Erweiterung | Die Tupel der linken Tabelle, für die in der rechten Tabelle kein passendes Tupel vorhanden ist, werden für die Attribute der rechten Tabelle um den NULL-Wert erweitert. | Die Tupel der rechten Tabelle, für die in der linken Tabelle kein übereinstimmendes Tupel vorhanden ist, werden für die Attribute der linken Tabelle um den NULL-Wert erweitert. | Die Tupel der linken und der rechten Tabelle, für die es in der rechten bzw. linken Tabelle keine passenden Tupel gibt, werden für die Attribute der rechten und der linken Tabelle mit einem NULL-Wert erweitert. |
Definition von Left Outer Join
Angenommen, wir haben " Table_A Left Outer Join Table_B ". Table_A ist also unsere linke Tabelle, wie es links vom Left Outer Join- Vorgang erscheint, und Table_B ist unsere rechte Tabelle.
Anfangs würde der innere Join auf Table_A und Table_B angewendet, wodurch alle übereinstimmenden Tupel von Tabelle A und B zurückgegeben werden.
Als Nächstes werden alle Tupel von Table_A zurückgegeben, für die in Table_B kein übereinstimmendes Tupel vorhanden ist. Die resultierenden Tupel würden also mit NULL- Werten für die Attribute der rechten Tabelle aufgefüllt.
Daher behält das Ergebnis des Left Outer Join alle Tupel aus der linken Tabelle und nur passende Tupel aus der rechten Tabelle.
Lassen Sie uns Left Outer Join mit einem Beispiel besprechen. Wir haben zwei Tabellen unten, Student Table und Department Table.
Jetzt wenden wir Left Outer Join an der Tabelle für Schüler und für die Abteilung an.
WÄHLEN SIE * FROM Student LEFT OUTER JOIN- Abteilung aus
ON Student. Student_ID = Department.Student_ID
In der obigen Abfrage ist Tabelle Student die linke Tabelle und Tabelle Department ist die rechte Tabelle. Laut Left Outer Join muss das Ergebnis also alle Tupel aus der Student-Tabelle und nur passende Tupel aus der Department-Tabelle enthalten.
Definition der rechten äußeren Verbindung
Angenommen, wir haben " Table_A Right Outer Join Table_B ". Table_A ist also unsere linke Tabelle, wie es scheint, als sei die Operation Left Outer Join links und Table_B ist unsere rechte Tabelle.
Wie bei Left Outer Join wird der innere Join anfangs auf Table_A und Table_B angewendet, wodurch alle übereinstimmenden Tupel aus Tabelle A und B zurückgegeben werden.
Als Nächstes werden alle Tupel von Table_B zurückgegeben, für die in Table_A kein passendes Tupel vorhanden ist. Die resultierenden Tupel würden also mit NULL-Werten für die Attribute der linken Tabelle aufgefüllt.
Daher behält das Ergebnis des rechten äußeren Joins alle Tupel aus der rechten Tabelle und nur übereinstimmende Tupel aus der linken Tabelle.
Lassen Sie uns Right Outer Join mit einem Beispiel besprechen. oben haben wir zwei Tabellen, Student Table und Department Table.
Nun wenden wir den Right Outer Join für den Student Table und den Department Table an.
WÄHLEN SIE * VON DER RECHTE AUSSEN JOIN- Abteilung aus
ON Student. Student_ID = Department.Student_ID
In der obigen Abfrage ist die Schülertabelle unsere Linke Tabelle und die Abteilungstabelle ist unsere rechte Tabelle. Entsprechend der Operation Right Outer Join muss das Ergebnis alle Tupel aus der Abteilungstabelle und nur übereinstimmende Tupel aus der Schülertabelle enthalten.
Definition von vollständiger äußerer Verbindung
Angenommen, wir haben " Table_A Full Outer Join Table_B ". Table_A ist also unsere linke Tabelle, wie es scheint, als ob die Operation "Full Outer Join" abgeschlossen wurde, und Table_B ist unsere rechte Tabelle.
Full Outer Join ist die Kombination aus Left Outer Join und Right Outer Join . Anfänglich wendet sie inneres Join auf Table_A und Table_B an, um übereinstimmende Tupel aus beiden Tabellen abzurufen. Dann werden die Tupel von Table_A mit NULL erweitert, für die kein passendes Tupel in Table_B vorhanden ist. Außerdem werden die Tupel aus Table_B mit NULL erweitert, für die in Table_A kein passendes Tupel vorhanden ist.
Full Outer Join behält also alle Tupel der linken und rechten Tabelle sowie die dazugehörigen Tupel der beiden Tabellen bei.
Lassen Sie uns FULL Outer Join mit einem Beispiel besprechen. Wir haben zwei Tabellen oben, Student Table und Department Table.
Nun wenden wir den vollständigen äußeren Join auf den Student Table und den Department Table an.
WÄHLEN SIE * FROM Student FULL OUTER JOIN- Abteilung aus
ON Student. Student_ID = Department.Student_ID
In der obigen Abfrage ist Student Table unsere linke Tabelle und Department Table ist unsere rechte Tabelle. Gemäß Full Outer Join muss das Ergebnis alle Tupel aus beiden Tabellen enthalten.
Hauptunterschiede zwischen linker, rechter und vollständiger äußerer Verbindung
- Das Ergebnis von Left Outer Join enthält alle Tupel der linken Tabelle. In ähnlicher Weise enthält das Ergebnis von Right Outer Join alle Tupel der rechten Tabelle. Das Ergebnis von Full Outer Join enthält alle Tupel der linken und der rechten Tabelle.
- In Left Outer Join werden Tupel der linken Tabelle, für die in der rechten Tabelle kein übereinstimmendes Tupel vorhanden ist, mit Nullwerten für die Attribute der rechten Tabelle erweitert. Das Gegenteil ist der Fall von Right Outer Join. Bei Full Outer Join werden die Tupel aus linken und rechten Tabellen, für die in der rechten bzw. linken Tabelle keine passenden Tupel vorhanden sind, für die Attribute der rechten bzw. linken Tabelle mit NULL erweitert.
Fazit:
Achten Sie auf die Positionen der Tabellennamen in einer Abfrage. Als Position des Tabellennamens in der Abfrage entscheidet, ob die Tabelle als linke Tabelle oder rechte Tabelle betrachtet wird.