Ein SQL NATURAL JOIN ist eine JOIN-Form, bei der die Datenbank die Verbindungsbedingung selbst ermittelt: Sie verbindet zwei Tabellen automatisch über alle Spalten, die denselben Namen tragen. Dadurch entfällt die ON-Klausel – die Abfrage wird kürzer, verlangt aber, dass die beteiligten Tabellen exakt passende Spaltennamen verwenden.

So funktioniert der NATURAL JOIN

Zwei Tabellen werden über gleichnamige Spalten verknüpft; im Ergebnis erscheint jede solche Spalte nur einmal. Ein klassisches Beispiel mit einer gemeinsamen Spalte kunden_id:

SELECT name, betrag
FROM kunden
NATURAL JOIN bestellungen;

Die Datenbank ergänzt intern die Bedingung ON kunden.kunden_id = bestellungen.kunden_id. Hat eine Tabelle keine passende Spalte, entsteht wie beim CROSS JOIN ein Kreuzprodukt – ein häufiger Stolperstein.

Wie jeder JOIN lässt sich auch ein NATURAL JOIN als Self-Join mit sich selbst formulieren – sinnvoll ist das kaum, weil die automatische Bedingung über alle gleichnamigen Spalten fast immer zu viele oder zu wenige Paare erzeugt.

NATURAL JOIN vs. USING

Die USING-Klausel ist die sicherere Verwandte: Sie verbindet ebenfalls über gleichnamige Spalten, listet sie aber explizit auf – zum Beispiel JOIN bestellungen USING (kunden_id). Ein NATURAL JOIN nimmt dagegen automatisch alle gleichnamigen Spalten, auch wenn das gar nicht beabsichtigt war. Ändert sich das Schema später, kann eine Abfrage dadurch still ihr Verhalten ändern. Viele Teams meiden NATURAL JOIN deshalb in Produktivcode und schreiben die Bedingung lieber aus.

Verfügbarkeit

NATURAL JOIN ist Teil des SQL-Standards und wird von MySQL, MariaDB, PostgreSQL, SQLite und Oracle unterstützt. Microsoft SQL Server (T-SQL) kennt ihn nicht – dort muss die Verbindung immer explizit mit ON oder USING-Ersatz formuliert werden.

Praxis-Tipps

  • NATURAL JOIN nur verwenden, wenn die Tabellen wirklich nur eine gemeinsame Spalte haben.
  • Für klaren, wartbaren Code lieber JOIN ... ON mit expliziter Bedingung oder JOIN ... USING (spalte) nutzen.
  • Vor dem Einsatz Schema prüfen: Zwei gleichnamige, aber fachlich verschiedene Spalten erzeugen falsche Ergebnisse.

Verwandte Grundlagen: SQL: JOINs richtig verstehen, Relationale Algebra.