Direkt zum Inhalt

SQL INNER JOIN vs. OUTER JOIN: Die wichtigsten Unterschiede

Verstehe SQL INNER JOIN vs. OUTER JOIN mit Beispielen und visuellen Hilfen, um deine Kenntnisse im Datenbankmanagement zu verbessern.
Aktualisierte 6. März 2025  · 4 Min. Lesezeit

In diesem Lernprogramm erkläre ich den Unterschied zwischen SQL INNER JOIN und OUTER JOIN und verwende Beispiele. Nachdem wir dieses Problem gelöst haben, möchtest du vielleicht unseren Kurs Joining Data in SQL besuchen, in dem wir andere interessante Joins wie SELF JOIN und CROSS JOIN sowie größere Ideen wie die Mengenlehre behandeln.

Schnelle Antwort

INNER JOIN liefert nur die übereinstimmenden Zeilen zwischen Tabellen, die auf einer gemeinsamen Spalte basieren, und schließt nicht übereinstimmende Zeilen aus. Die folgende Abfrage zeigt zum Beispiel nur dann Bestellungen mit Kundendaten an, wenn es eine Übereinstimmung gibt.

-- Inner Join: Returns only matching rows from both tables
SELECT o.OrderID, c.CustomerName
FROM Orders o
INNER JOIN Customers c ON o.CustomerID = c.CustomerID;

OUTER JOIN enthält sowohl übereinstimmende Zeilen als auch nicht übereinstimmende Zeilen aus einer oder beiden Tabellen. Die folgende Abfrage gibt alle Kunden zurück, auch die, die keine Bestellungen haben.

-- Left Outer Join: Returns all rows from Customers and matching rows from Orders
SELECT c.CustomerName, o.OrderID
FROM Customers c
LEFT JOIN Orders o ON c.CustomerID = o.CustomerID;

Ein genauer Blick auf SQL INNER JOIN und OUTER JOIN

Schauen wir uns nun SQL INNER JOIN und OUTER JOIN genauer an, eins nach dem anderen. Betrachte dazu die folgenden beiden Tabellen:

Beispiel einer Tabelle für Arbeitnehmer.

Beispiel einer Tabelle für Arbeitnehmer. Bild vom Autor.

Beispiel für eine Tabelle mit Abteilungen.

Beispiel für eine Tabelle mit Abteilungen. Bild vom Autor.

Wie INNER JOIN funktioniert

Eine INNER JOIN ruft nur die Zeilen ab, die in beiden Tabellen aufgrund der angegebenen Bedingung übereinstimmen. 

Die folgende Abfrage wählt die Zeilen employee_id, demployee_name, department_name und salary aus und gibt dann die Zeilen zurück, in denen department_id existiert.

-- Example: Get employees with matching departments
SELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
INNER JOIN departments
-- Returns only employees assigned to a department
ON employees.department_id = departments.department_id;

Beispiel einer Tabelle, die mit SQL INNER JOIN zusammengeführt wurde.

Beispiel einer Tabelle, die mit SQL INNER JOIN zusammengeführt wurde. Bild vom Autor.

Wie OUTER JOIN funktioniert

Die OUTER JOIN enthält nicht übereinstimmende Zeilen aus einer oder beiden Tabellen, je nachdem, welche Art von OUTER JOIN verwendet wird.

LEFT OUTER JOIN (LINKER JOIN)

Die LEFT OUTER JOIN gibt alle Datensätze aus der linken Tabelle und die übereinstimmenden Datensätze aus der rechten Tabelle zurück. Wenn es keine Übereinstimmung gibt, werden NULL Werte für Spalten aus der richtigen Tabelle zurückgegeben.

Im folgenden Beispiel werden alle Datensätze aus der Tabelle employees abgerufen, auch wenn es nicht übereinstimmende Datensätze gibt. Das Fehlen von department_name für Arbeitnehmer wird als NULL zurückgegeben.

-- Get all employees, even those without a department
SELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.department_id;

Beispiel für eine Tabelle, die mit SQL Left Outer Join verbunden wurde

Beispiel für eine Tabelle, die mit dem SQL Left Outer Join verbunden wurde. Bild vom Autor.

LEFT JOIN und LEFT OUTER JOIN werden in SQL austauschbar verwendet, da beide Abfragen alle Zeilen aus der linken Tabelle und die übereinstimmenden Zeilen aus der rechten Tabelle holen.

RIGHT OUTER JOIN (RECHTER JOIN)

Die RIGHT OUTER JOIN gibt alle Datensätze aus der rechten Tabelle und die übereinstimmenden Datensätze aus der linken Tabelle zurück. Nicht übereinstimmende Zeilen in der linken Tabelle ergeben NULL.

Die folgende Abfrage gibt alle Datensätze aus der Tabelle departments zurück, auch wenn es keine passenden Arbeitnehmer gibt.

-- Get all departments, even those without employees
SELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
RIGHT JOIN departments
ON employees.department_id = departments.department_id;

Beispiel für einen Tale Join mit SQL Right Outer Join.

Beispiel für einen Tale Join mit SQL Right Outer Join. Bild vom Autor.

VOLLSTÄNDIGE ÄUSSERE VERKNÜPFUNG

Die FULL OUTER JOIN kombiniert die Ergebnisse von linken und rechten äußeren Joins. Sie liefert alle Datensätze aus beiden Tabellen und füllt NULL aus, wenn es keine Übereinstimmungen gibt.

Die folgende Abfrage gibt alle Datensätze für die Tabellen employees und departments zurück, auch mit nicht übereinstimmenden Zeilen.

-- Combine all employees and departments
SELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
FULL JOIN departments
ON employees.department_id = departments.department_id;

Beispiel einer Tabelle, die mit SQL Full Outer Join verbunden wurde.

Beispiel einer Tabelle, die mit SQL Full Outer Join verbunden wurde. Bild vom Autor.

INNER JOIN vs. OUTER JOIN: Die wichtigsten Unterschiede

INNER JOIN und OUTER JOIN unterscheiden sich grundlegend darin, wie sie nicht übereinstimmende Zeilen beim Zusammenführen von Tabellen behandeln. Diese Unterschiede zu verstehen, ist wichtig, um den richtigen Join-Typ für deine Datenbankabfragen zu wählen. Lass uns diese Unterschiede vergleichen.

Was INNER JOIN liefert

INNER JOIN gibt nur die Zeilen zurück, deren Werte in beiden Tabellen übereinstimmen. Diese Art der Verknüpfung wird verwendet, wenn du Daten in beiden Datensätzen benötigst.

Die folgende Abfrage ruft Datensätze aus employees mit übereinstimmenden Zeilen aus der Tabelle departments ab.

-- Example: Get employees with matching departments
SELECT employees.employee_id, employees.employee_name, departments.department_name
FROM employees
INNER JOIN departments
-- Returns only employees assigned to a department
ON employees.department_id = departments.department_id;

Beispiel einer Tabelle, die mit SQL Inner Join verbunden wurde.

Beispiel einer Tabelle, die mit SQL INNER JOIN verbunden wurde. Bild vom Autor.

Was OUTER JOIN zurückgibt

OUTER JOIN enthält nicht übereinstimmende Zeilen aus einer oder beiden Tabellen, je nach Typ von OUTER JOIN. Zum Beispiel liefert die LEFT OUTER JOIN alle Zeilen aus der linken Tabelle und die übereinstimmenden Zeilen aus der rechten Tabelle. Nicht übereinstimmende Zeilen aus der richtigen Tabelle werden mit NULLen versehen.

Die folgende Abfrage ruft Mitarbeiterdatensätze ab, auch solche ohne Abteilung.

-- Get all employees, even those without a department
SELECT employees.employee_id, employees.employee_name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.department_id;

Beispiel für Daten, die mit SQL Left Outer Join abgerufen werden.

Beispiel für Daten, die mit SQL LEFT OUTER JOIN abgerufen werden. Bild vom Autor.

Wann verwendet man SQL INNER JOIN und OUTER JOIN?

INNER JOIN und OUTER JOIN unterscheiden sich auch in ihren praktischen Anwendungsfällen bei der Datenabfrage.

Wann wird INNER JOIN verwendet?

INNER JOIN ist am effektivsten, wenn du nur die sich überschneidenden Daten aus zwei Tabellen brauchst. Du kannst INNER JOIN zum Beispiel verwenden, wenn du Verkaufsdaten analysierst, um Produkte zu finden, die verkauft wurden, z. B. wenn Produkt- und Verkaufstabellen übereinstimmende Einträge haben.

Wann sollte OUTER JOIN verwendet werden?

OUTER JOIN ist geeignet, wenn du einen vollständigen Datensatz zurückgeben musst, einschließlich nicht übereinstimmender Zeilen. Zum Beispiel, wenn du einen Bericht erstellst, der alle Mitarbeiter, einschließlich derer ohne Abteilungszuordnung, oder alle Abteilungen, einschließlich derer ohne Mitarbeiter, anzeigt.

Fazit

Den Unterschied zwischen INNER JOIN und OUTER JOIN zu verstehen, ist wichtig, um effiziente Abfragen zu schreiben. Das Erlernen dieser Techniken hilft auch bei der Optimierung von Abfragen, um Daten schneller abrufen zu können. Ich möchte dich ermutigen, weiter zu üben, um mehr Fähigkeiten im Datenbankmanagement zu erlernen.

Ich empfehle, unseren Lernpfad zum Associate Data Analyst in SQL auszuprobieren, um ein guter Datenanalyst zu werden. In unserem Kurs Reporting in SQL lernst du außerdem, wie du komplexe Berichte und Dashboards für eine effektive Datenpräsentation erstellst. Wenn du dich auf ein Vorstellungsgespräch vorbereitest, bei dem du deine SQL-Kenntnisse unter Beweis stellen musst, empfehle ich dir unseren Blog, 20 Top SQL Joins Interview Questions, um dich auf das Gespräch vorzubereiten.

Erhalte eine Top-SQL-Zertifizierung

Stelle deine SQL-Kenntnisse unter Beweis und bringe deine Datenkarriere voran.
Werde SQL-zertifiziert

Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Ich verfasse Artikel, die Datenwissenschaft und Analytik vereinfachen und leicht verständlich und zugänglich machen.

SQL INNER JOIN und OUTER JOIN FAQs

Was ist der Unterschied zwischen INNER JOIN und OUTER JOIN in SQL?

INNER JOIN liefert nur übereinstimmende Zeilen aus beiden Tabellen, während OUTER JOIN auch nicht übereinstimmende Zeilen enthält, wobei NULLs die Lücken füllen, wenn keine entsprechenden Daten gefunden werden.

Wann sollte ich einen INNER JOIN in SQL verwenden?

Verwende einen INNER JION, wenn du nur die Zeilen mit übereinstimmenden Werten in beiden Tabellen abrufen willst.

Was sind die OUTER JOIN-Typen in SQL?

Die OUTER JOIN-Typen sind LEFT OUTER JOIN, RIGHT OUTER JOIN und FULL OUTER JOIN.

Wie funktioniert ein LEFT OUTER JOIN in SQL?

Ein Left Outer Join liefert alle Zeilen aus der linken Tabelle, übereinstimmende Zeilen aus der rechten Tabelle und nicht übereinstimmende Zeilen aus der linken Tabelle.

Was ist ein FULL OUTER JOIN in SQL?

Ein FULL OUTER JOIN liefert alle Zeilen aus beiden Tabellen, einschließlich der nicht übereinstimmenden Zeilen aus beiden Tabellen.

Themen

SQL lernen mit DataCamp

Kurs

Joining Data in SQL

4 hr
207.8K
Level up your SQL knowledge and learn to join tables together, apply relational set theory, and work with subqueries.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 Min.

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Der Blog

Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn

Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

4 Min.

Der Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Mehr anzeigenMehr anzeigen