Empfohlen, 2024

Tipp Der Redaktion

Unterschied zwischen linker, rechter und vollständiger äußerer Verbindung

Zuvor haben wir die Unterschiede zwischen Inner Join und Outer Join diskutiert, wobei wir die Typen von Outer Join im Überblick gezeigt haben. Outer Join ist derjenige, der die Tupel im Ergebnis bewahrt, die während des Join-Vorgangs verloren gegangen wären. In diesem Artikel; Wir werden die Unterschiede zwischen den Typen von Outer Join diskutieren. Es gibt drei Arten von äußeren Verbindungen. Linke äußere Verbindung, rechte äußere Verbindung und vollständige äußere Verbindung. Der Left-, Right- und Full-Outer-Join unterscheidet sich in ihrem Ausführungsplan und den erzielten Ergebnissen. Wir können ein äußeres Wort in Left, Right und Full Outer Join auslassen. Untersuchen wir die Unterschiede zwischen Left, Right und Full Outer Join mit Hilfe der unten gezeigten Vergleichstabelle.

Vergleichstabelle

VergleichsgrundlageLinke äußere VerbindungRechter äußerer JoinVolle äußere Verbindung
BasicAlle 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-ErweiterungDie 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.

Beobachten Sie das Ergebnis von Left Outer Join. Es enthält alle Tupel aus der Studententabelle sowie die dazugehörigen Tupel aus der Student- und Department-Tabelle. Die student_id von Jimmy, Joseph Harry vom Studententisch war nicht in der Abteilungstabelle vorhanden. Daher werden die Attributwerte der Abteilungstabelle für Jimmy, Joseph Harry auf NULL erweitert.

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.

Beobachten Sie das Ergebnis der rechten äußeren Verbindung. Es enthält alle Tupel aus der Abteilungstabelle sowie die dazugehörigen Tupel aus der Schüler- und der Abteilungstabelle. Die Student_ID 10536 und 00954 der Department-Tabelle sind in der Student-Tabelle nicht vorhanden. Daher wird der Attributwert von Name für Student_ID 10536 und 00954 auf NULL erweitert.

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.

Beobachten Sie das Ergebnis der vollständigen äußeren Verbindung. Es enthält alle Tupel aus der Schüler- und Abteilungstabelle sowie die dazugehörigen Tupel aus der Schüler- und Abteilungstabelle. Die student_id von Jimmy, Joseph Harry, dh 10026, 02256, 56362, des Studententisches war in der Abteilungstabelle nicht vorhanden. Daher werden die Attributwerte der Department-Tabelle für Jimmy, Joseph Harry auf NULL erweitert. Die Student_ID 10536 und 00954 der Department-Tabelle sind in der Student_ID-Spalte der Student-Tabelle nicht vorhanden. Daher wird der Attributwert des Namensattributs für Student_ID 10536 und 00954 auf NULL erweitert .

Hauptunterschiede zwischen linker, rechter und vollständiger äußerer Verbindung

  1. 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.
  2. 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.

Top