Unterschied zwischen innerer Verbindung und äußerer Verbindung

Anonim

Innerer Join vs. Äußerer Join

Innerer Join und Äußerer Join sind zwei der SQL-Verbindungsmethoden, die bei der Abfrageverarbeitung für Datenbanken verwendet werden. Sie gehören zur Familie der Join-Klauseln (die anderen zwei sind Left und Right Joins). Es gibt jedoch eine Selbstanmeldung, die für spezielle Situationen verwendet werden kann. Der Zweck von Join besteht darin, Felder mit den gemeinsamen Werten für die beiden Tabellen zu kombinieren. Diese Joins kombinieren Datensätze aus mehreren Tabellen in einer Datenbank. Es erstellt resultierende Mengen, die als eine andere Tabelle gespeichert werden können.

Was ist Inner Join?

Die am häufigsten verwendete SQL-Verknüpfungsoperation ist die innere Verknüpfung. Es kann als Standardtyp des in Anwendungen verwendeten Joins angesehen werden. Inner Join verwendet das Join-Prädikat, um zwei Tabellen zu kombinieren. Angenommen, die beiden Tabellen sind A und B, dann wird das Join-Prädikat Zeilen von A und B vergleichen, um alle Paare herauszufinden, die das Prädikat erfüllen. Spaltenwerte aller erfüllten Zeilen von A- und B-Tabellen werden kombiniert, um das Ergebnis zu erzeugen. Es kann als erstes betrachtet werden, indem der Kreuz-Join (kartesisches Produkt) aller Datensätze genommen wird und dann nur die Datensätze zurückgegeben werden, die das Join-Prädikat erfüllen. In Wirklichkeit wird das kartesische Produkt jedoch nicht berechnet, weil es sehr ineffizient ist. Hash-Join oder Sort-Merge-Join wird stattdessen verwendet.

Was ist Äußeres Verbinden ?

Im Gegensatz zu Inner Join behält der Outer Join alle Datensätze, selbst wenn er keinen passenden Datensatz finden kann. Das bedeutet, dass der Outer Join einen Datensatz benötigt, um einen passenden Datensatz zu finden, damit er im Ergebnis angezeigt wird. Stattdessen werden alle Datensätze zurückgegeben, aber nicht übereinstimmende Datensätze weisen Nullwerte auf. Äußere Joins sind in drei Unterkategorien unterteilt. Sie sind Outer Join, Right Outer Join und Outer Join. Diese Unterscheidung basiert darauf, welche Zeile (linke Tabelle, rechte Tabelle oder beide Tabellen) bei nicht gefundenen Datensätzen beibehalten wird. Linke Outer-Joins (auch als Links-Join bezeichnet) behalten alle Datensätze der linken Tabelle bei. Das bedeutet, dass selbst dann, wenn die Nummern übereinstimmenden Datensätze Null sind, Datensätze in der Ergebnistabelle enthalten sind, aber Nullwerte für alle Spalten von B. Mit anderen Worten werden alle Werte von der linken Tabelle mit übereinstimmenden Werten von rechts zurückgegeben Tabelle (oder Nullwerte, wenn nicht übereinstimmt). Wenn Werte aus mehreren Zeilen aus der linken Tabelle mit einer einzelnen Zeile aus der rechten Tabelle übereinstimmen, wird die Zeile aus der rechten Tabelle nach Bedarf wiederholt. Der rechte äußere Join ist dem linken äußeren Join ziemlich ähnlich, aber die Behandlung von Tabellen wird verehrt. Das bedeutet, dass das Ergebnis alle Zeilen der rechten Tabelle mindestens einmal mit übereinstimmenden linken Tabellenwerten (und Nullwerten für nicht übereinstimmende richtige Werte) haben wird. Der vollständige äußere Join ist umfassender als der linke und der rechte äußere Join. Es resultiert in der Kombination des Effekts des Aufbringens sowohl der linken als auch der rechten äußeren Verbindung.

Was ist der Unterschied zwischen Inner Join und Outer Join?

Inner Join behält die nicht übereinstimmenden Zeilen im Ergebnis bei, aber der Outer Join behält alle Datensätze aus mindestens einer Tabelle (je nachdem, welcher Outer-Join verwendet wurde). Daher ist das Verhalten, dass keine Informationen in nicht übereinstimmenden Zeilen in der Ergebnistabelle vorhanden sind, unerwünscht, Sie müssen immer einen der äußeren Joins verwenden (anstelle des inneren Joins). Innerer Join erzeugt möglicherweise kein Ergebnis, wenn keine Übereinstimmungen gefunden werden. Outer Join erzeugt jedoch immer eine resultierende Tabelle, auch ohne übereinstimmende Zeilen. Inner Join wird immer Tabellen mit Werten zurückgeben (falls zurückgegeben). Outer-Joins können jedoch zu Tabellen mit Nullwerten führen.