| Funktion / JOIN-Typ |
CROSS JOIN |
INNER JOIN |
LEFT JOIN |
RIGHT JOIN |
FULL OUTER JOIN |
UNION |
| Definition |
Kartesisches Produkt beider Tabellen |
Gleicht Zeilen mit übereinstimmenden Schlüsseln ab |
Alle Übereinstimmungen + nicht übereinstimmende Zeilen der linken Tabelle |
Alle Übereinstimmungen + nicht übereinstimmende Zeilen der rechten Tabelle |
Alle Übereinstimmungen + nicht übereinstimmende Zeilen von beiden Seiten |
Kombiniert Zeilen aus 2 Abfragen |
| JOIN-Bedingung |
Nicht erforderlich |
Erforderlich |
Erforderlich |
Erforderlich |
Erforderlich |
Nicht zutreffend |
| NULL-Behandlung |
Keine; alle Zeilen werden gepaart |
Zeilen ohne Übereinstimmung werden ausgeschlossen |
Füllt NULLs für nicht übereinstimmende rechte Zeilen aus |
Füllt NULLs für nicht übereinstimmende linke Zeilen aus |
Füllt NULLs auf beiden Seiten aus, wo keine Übereinstimmung vorhanden ist |
Doppelte Zeilen werden entfernt, es sei denn, UNION ALL |
| Größe des Ergebnisses |
Alle Kombinationen (große Ergebnismengen) |
Nur übereinstimmende Zeilen |
Übereinstimmende + nicht übereinstimmende linke Zeilen |
Übereinstimmende + nicht übereinstimmende rechte Zeilen |
Übereinstimmende + nicht übereinstimmende Zeilen auf beiden Seiten |
Zeilen vertikal gestapelt |
| Anwendungsfälle |
Alle Kombinationen generieren |
Standardabgleich (z. B. FK-PK) |
Alle Daten der linken Seite beibehalten |
Alle Daten der rechten Seite beibehalten |
Alles beibehalten |
Der Ergebnisse von zwei SELECTs Zusammenführen |
| Typisches Beispiel |
Produktvarianten (z. B. Größen × Farben) |
Bestellungen und Kunden |
Kunden und alle ihre Bestellungen (auch keine) |
Bestellungen und ihre Kunden (auch unbekannt) |
Mitarbeiter und Abteilungen (einschließlich nicht zugewiesen) |
Kombinieren von SELECT-Ergebnissen aus verschiedenen Tabellen |
| SQL-Syntax |
FROM A CROSS JOIN B |
FROM A INNER JOIN B ON ... |
FROM A LEFT JOIN B ON ... |
FROM A RIGHT JOIN B ON ... |
FROM A FULL OUTER JOIN B ON ... |
SELECT ... UNION SELECT ... |
| Leistungswarnung |
Riskant bei großen Tabellen |
Hängt vom Index und der Joinbedingung ab |
Kann mit NULLs verlangsamt werden |
Ähnlich wie LEFT JOIN |
Oft langsamer als INNER JOIN |
Achten Sie auf doppelte Zeilen |
| Filtern mit WHERE |
Oft erforderlich, um die Größe zu reduzieren |
Häufig zum Filtern übereinstimmender Werte |
Kann nicht übereinstimmende Ergebnisse verfeinern |
Kann nicht übereinstimmende Ergebnisse verfeinern |
Wird häufig zur abschließenden Gestaltung verwendet |
WHERE kann in jedem SELECT verwendet werden |