Bei der Beschreibung der WHERE-Klausel auf "Abfrage-Ausdruck" wurde die einfachste Form des Joins vorgestellt, die es ermöglicht, Tabellen mit Hilfe einer Join-Bedingung zu verbinden. Eine wesentliche Erweiterung der Funktionalität bei der Verwendung eines Joins bietet der Join-Ausdruck.
Ein Join-Ausdruck enthält die zu verknüpfenden Tabellen, die gewünschte Join-Operation und gegebenenfalls eine Join-Bedingung.
Ein Join-Ausdruck kann angegeben werden:
als Abfrage-Ausdruck in einer SQL-Anweisung
in der FROM-Klausel eines SELECT-Ausdrucks oder einer SELECT-Anweisung
in einer Unterabfrage in Select-Liste und HAVING-Klausel
Die Ergebnistabelle eines Join-Ausdrucks ist nicht änderbar.
Werden zwei Tabellen mit einem Join verbunden, spricht man von einem einfachen Join. Werden mehr als zwei Tabellen verbunden, spricht man von einem zusammengesetzten Join. Um einen zusammengesetzten Join zu bilden, können Join-Ausdrücke wiederum in Join-Ausdrücke eingesetzt werden. Bei solchen geschachtelten Joins kann durch Angabe von Klammern die Gruppierung der Operatoren beeinflusst werden.
Die Schlüsselwörter CROSS, INNER, OUTER und UNION legen den Typ des Joins fest.
CROSS JOIN
Ein CROSS JOIN zwischen zwei Tabellen ergibt das Kartesische Produkt (Kreuzprodukt) dieser Tabellen. In der Ergebnistabelle eines CROSS JOIN wird jeder Satz der ersten Tabelle mit jedem Satz der zweiten Tabelle verkettet.
INNER JOIN
INNER legt einen sogenannten inneren Join (INNER JOIN) fest. Bei einem inneren Join werden aus dem Kartesischen Produkt nur die Sätze in die Ergebnistabelle übernommen, deren Join-Spalten die Join-Bedingung erfüllen.
OUTER JOIN
OUTER legt einen sogenannten äußeren Join (OUTER JOIN) fest. Ausgangstabelle für einen äußeren Join ist wie beim inneren Join das Kartesische Produkt. Beim einseitigen äußeren Join unterscheidet man eine dominante und eine abhängige Tabelle. Im Gegensatz zum inneren Join enthält der äußere Join auch dann einen Satz, wenn für einen Satz der dominanten Tabelle kein Satz der abhängigen Tabelle vorhanden ist, mit dem die Join-Bedingung erfüllt ist. Für den nicht vorhandenen Satz der abhängigen Tabelle wird ein Satz mit NULL-Werten verwendet.
Das Schlüsselwort LEFT OUTER legt die Tabelle links vom LEFT OUTER-Operator, das Schlüsselwort RIGHT OUTER die Tabelle rechts vom RIGHT OUTER-Operator als dominante Tabelle fest. Bei einem FULL OUTER -Join werden die Tabellen links und rechts vom FULL-Operator je einmal als dominante und als abhängige Tabelle festgelegt. Die Ergebnistabelle des FULL OUTER-Join enthält alle Sätze des LEFT OUTER- und des RIGHT OUTER-Join. Jeder Satz, der sowohl in der Ergebnistabelle des LEFT OUTER- als auch des RIGHT OUTER-Join enthalten ist, wird nur einmal in die Ergebnistabelle des FULL OUTER-Join übernommen. Duplikate innerhalb der LEFT OUTER-Tabelle bzw. innerhalb der RIGHT OUTER-Tabelle werden als Duplikate in die Ergebnistabelle des FULL OUTER-Join übernommen.
Innere und äußere Joins können in einem Join-Ausdruck kombiniert werden.
UNION JOIN
Anders als beim inneren und beim äußeren Join ist beim UNION JOIN nicht das Kartesische Produkt die Ausgangstabelle. Stattdessen werden die Tabellen links und rechts vom UNION-Operator als Ausgangstabellen verwendet. Der UNION JOIN wird wie folgt gebildet::
Die erste Tabelle des UNION JOIN wird nach rechts um die Spalten der zweiten Tabelle erweitert; für die Spaltenwerte der zweiten Tabelle werden NULL-Werte eingetragen.
Die zweite Tabelle wird nach links um die Spalten der ersten Tabelle erweitert; für die Spaltenwerte der ersten Tabelle werden NULL-Werte eingetragen.
Die um NULL-Werte erweiterte erste Tabelle wird mit UNION mit der um NULL-Werte erweiterten zweiten Tabelle vereinigt.