Inner Join gegen Outer Join
Inner Join und Outer Join sind zwei der SQL-Verbindungsmethoden, die in der Abfrageverarbeitung für Datenbanken verwendet werden. Sie gehören zur Familie der Join-Klauseln (die beiden anderen sind Left und Right Joins). Es gibt jedoch einen Self Join, der für spezielle Situationen verwendet werden kann. Der Zweck von Join besteht darin, Felder mit den gemeinsamen Werten zu den beiden Tabellen zu kombinieren. Diese Joins kombinieren Datensätze aus mehreren Tabellen in einer Datenbank. Es werden Ergebnissätze erstellt, die als andere Tabelle gespeichert werden können.
Was ist Inner Join??
Der am häufigsten verwendete SQL-Join-Vorgang ist der Inner Join. Es kann als Standard-Join-Typ angesehen werden, der in Anwendungen verwendet wird. Inner Join verwendet das Join-Prädikat, um zwei Tabellen zu kombinieren. Angenommen, die beiden Tabellen sind A und B, dann vergleicht das Join-Prädikat die Zeilen von A und B, um alle Paare herauszufinden, die das Prädikat erfüllen. Spaltenwerte aller erfüllten Zeilen der A- und B-Tabellen werden kombiniert, um das Ergebnis zu erstellen. Es kann betrachtet werden, wenn zuerst der Cross 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 der Realität wird das kartesische Produkt jedoch nicht berechnet, da es sehr ineffizient ist. Stattdessen wird Hash-Join oder Sort-Merge-Join verwendet.
Was ist Outer Join??
Im Gegensatz zu Inner Join behält der Outer Join alle Datensätze bei, selbst wenn kein übereinstimmender Datensatz gefunden wird. Das bedeutet, dass 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. Nicht übereinstimmende Datensätze weisen jedoch Nullwerte auf. Äußere Verbindungen sind in drei Unterkategorien unterteilt. Es handelt sich dabei um linke äußere Verbindung, rechte äußere Verbindung und vollständige äußere Verbindung. Diese Unterscheidung basiert darauf, welche Zeile der Tabelle (linke Tabelle, rechte Tabelle oder beide Tabellen) beibehalten wird, wenn nicht übereinstimmende Datensätze gefunden werden. Linke äußere Joins (auch einfach linker Join genannt) behält alle Datensätze der linken Tabelle bei. Das heißt, selbst wenn die Anzahl übereinstimmender Datensätze gleich Null ist, werden auch in der Ergebnistabelle Datensätze angezeigt, jedoch für alle Spalten von B Nullwerte. Mit anderen Worten, alle Werte aus der linken Tabelle werden mit übereinstimmenden Werten von rechts zurückgegeben Tabelle (oder Nullwerte, wenn keine Übereinstimmung besteht). Wenn Werte aus mehreren Zeilen der linken Tabelle mit einer einzelnen Zeile aus der rechten Tabelle übereinstimmen, wird die Zeile aus der rechten Tabelle nach Bedarf wiederholt. Die rechte äußere Verknüpfung ist der linken äußeren Verknüpfung ziemlich ähnlich, aber die Behandlung von Tabellen wird verehrt. Das bedeutet, dass das Ergebnis mindestens einmal alle Zeilen der rechten Tabelle mit übereinstimmenden Werten für die linke Tabelle (und Nullwerte für nicht übereinstimmende rechte Werte) enthält. Eine vollständige äußere Verknüpfung ist umfassender als die linke und rechte äußere Verbindung. Dies führt dazu, dass der Effekt des Anbringens sowohl der linken als auch der rechten äußeren Verbindung kombiniert wird.
Was ist der Unterschied zwischen Inner Join und Outer Join??
Inner Join behält nicht die nicht übereinstimmenden Zeilen im Ergebnis bei, aber Outer Join speichert 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 (anstelle des inneren Joins) verwenden. Inner Join führt möglicherweise nicht zu einem Ergebnis, wenn keine Übereinstimmungen gefunden werden. Eine äußere Verknüpfung erzeugt jedoch immer eine resultierende Tabelle, auch wenn keine übereinstimmenden Zeilen vorhanden sind. Inner Join liefert immer Tabellen mit Werten (falls zurückgegeben). Durch äußere Joins können jedoch Tabellen mit Nullwerten erstellt werden.