Join-Typ-SQL
Über die relationale Algebra hinaus gibt es in SQL noch weitere Join-Typen, deren Zusammenhänge durch das nebenstehende Mengendiagramm beschrieben werden. Eine Teilmengenbeziehung bedeutet, dass ein Untertyp, wie der Natural-Join auch immer im Obertyp, hier z.B. der Equi-Join als Element enthalten ist. Die SQL-Syntax finden Sie über die Join-Tabelle.
INNER-JOIN vs. OUTER-JOIN
- Der Inner-Join verknüpft Zeilen aus zwei Tabellen, wenn die zu verknüpfenden Werte in beiden Tabellen vorkommen. Dabei sind keine speziellen Restriktionen mit der Verknüpfungsbedingung verbunden. Der Inner Join entspricht dem Theta-Join aus der relationalen Algebra.
- Ein Outer-Join verknüpft Zeilen aus zwei Tabellen, auch wenn die zu verknüpfenden Werte nur in einer Tabelle vorkommen. Er wird nochmal in RIGHT OUTER JOIN, LEFT OUTER-JOIN und FULL OUTER JOIN unterschieden (siehe Join-Tabelle und Join,Outer-Join?)
EQUI-JOIN vs. NON-EQUI-JOIN
- Beim Equi-Join müssen die Werte, über die zu verknüpfenden Spalten gleich sein. In der alten Join-Schreibweise aus SQL steht in der WHERE-Klausel ein Gleichheitszeichen.
- Beim Non-Equi-Join müssen die Werte, über die zu verknüpfenden Spalten nicht gleich sein. In der alten Join-Schreibweise aus SQL (siehe Join-Tabelle) steht in der WHERE-Klausel kein Gleichheitszeichen, sondern ein anderer Vergleichsoperator?, wie '<' oder '<>'.
- Genau betrachtet, gibt es keinen Equi-Join und auch keinen Non-Equi-Join, der weder ein Inner-Join noch ein Outer-Join ist, d.h., die hellgelben Bereiche im Mengendiagramm des Equi-Joins und des Non-Equi-Joins sind leer.
NATURAL-JOIN
Ein Natural-Join ist ein Spezialfall des Equi-Joins und auch des Inner-Joins, nämlich einer, bei dem die Spalten, die doppelt vorkommen nur einmal aufgeführt werden. Eine Verknüpfung erfolgt automatisch über alle Spalten, die in beiden Tabellen den gleichen Namen haben und zwar über gleiche Werte.
SELF-JOIN
Der Self-Join ist ein Join einer Tabelle mit sich selber. Er wird oft in rekursiven Abfragen (siehe WITH-Klausel und CONNECT-BY-Klausel) verwendet. Ein Self-Join ist ein orthogonales Konzept zu den anderen Join-Typen, da er sich auf die verwendete Tabelle bezieht. Er kann daher zusätzlich mit jedem anderen Join-Typ übereinstimmen, d.h. es gibt Self-Joins, die zusätzlich Inner-Joins sind oder Outer -Joins usw.
CROSS-JOIN
Ein Cross-Join ist ein Synonym für ein kartesisches Produkt aus der relationalen Algebra. Wenn man den CROSS-Join als sehr speziellen Inner-Join auffasst, d.h. einen, bei dem die WHERE-Klausel immer erfüllt ist, nach dem Motto WHERE 1=1, dann ist der Cross-Join im Inner-Join (=THETA-Join) enthalten.
THETA-JOIN
Der Theta-Join heißt unter SQL Inner-Join.
SEMI-JOIN
Der rechte Semi-Join ist eine Projektion des natürlichen Joins A*B auf die erste Relation A, der linke Semi-Join dementsprechend eine Projektion des natürlichen Joins A*B auf die zweite Relation B. In SQL wird der Semi-Join durch den EXISTS-Operator oder durch den IN-Operator implementiert.
siehe auch: Join in der relationalen Algebra und Join-Tabelle zur Beschreibung der SQL-Syntax die Implementierung unter Oracle über den Ausführungsplan in Join-Operationen.