In SQL werden INNER JOIN und OUTER JOIN verwendet, um Zeilen aus zwei oder mehr Tabellen basierend auf einer zugehörigen Spalte zu kombinieren. Der Hauptunterschied besteht darin, wie diese Verknüpfungen mit nicht übereinstimmenden Zeilen umgehen.
Der INNER JOIN gibt nur die Zeilen zurück, die in beiden Tabellen übereinstimmende Werte haben. Wenn es keine Übereinstimmung gibt, wird die Zeile aus dem Ergebnis ausgeschlossen.
SELECT columns FROM table1 INNER JOIN table2 ON table1.column = table2.column;
EmployeeID | Name | DepartmentID |
---|---|---|
1 | Alice | 101 |
2 | Bob | 102 |
3 | Charlie | 103 |
DepartmentID | DepartmentName |
---|---|
101 | HR |
102 | IT |
Abfrage:
SELECT employees.Name, departments.DepartmentName FROM employees INNER JOIN departments ON employees.DepartmentID = departments.DepartmentID;
Name | DepartmentName |
---|---|
Alice | HR |
Bob | IT |
Der OUTER JOIN umfasst Zeilen aus einer oder beiden Tabellen, auch wenn es keine Übereinstimmung gibt. Es gibt drei Arten von OUTER JOINs:
Gibt alle Zeilen aus der linken Tabelle zurück, auch wenn es in der rechten Tabelle keine Übereinstimmung gibt.
Syntax:
SELECT columns FROM table1 INNER JOIN table2 ON table1.column = table2.column;
Abfrage:
SELECT employees.Name, departments.DepartmentName FROM employees INNER JOIN departments ON employees.DepartmentID = departments.DepartmentID;
Name | DepartmentName |
---|---|
Alice | HR |
Bob | IT |
Charlie | NULL |
Gibt alle Zeilen der rechten Tabelle zurück, auch wenn es in der linken Tabelle keine Übereinstimmung gibt.
Syntax:
SELECT columns FROM table1 LEFT JOIN table2 ON table1.column = table2.column;
Abfrage:
SELECT employees.Name, departments.DepartmentName FROM employees LEFT JOIN departments ON employees.DepartmentID = departments.DepartmentID;
Name | DepartmentName |
---|---|
Alice | HR |
Bob | IT |
NULL | Finance |
Gibt alle Zeilen aus beiden Tabellen zurück. Zeilen ohne Übereinstimmungen werden mit NULL gefüllt.
Syntax:
SELECT columns FROM table1 RIGHT JOIN table2 ON table1.column = table2.column;
Abfrage:
SELECT employees.Name, departments.DepartmentName FROM employees RIGHT JOIN departments ON employees.DepartmentID = departments.DepartmentID;
Name | DepartmentName |
---|---|
Alice | HR |
Bob | IT |
Charlie | NULL |
NULL | Finance |
Feature | INNER JOIN | OUTER JOIN |
---|---|---|
Matching Rows | Returns only matching rows. | Returns all rows from one or both tables. |
Unmatched Rows | Excluded from the result. | Included with NULL values for missing columns. |
Performance | Generally faster. | Can be slower due to more data being processed. |
Variants | Single type. | Includes LEFT, RIGHT, and FULL OUTER JOIN. |
Anwendungsfälle
INNER JOIN
: Verwenden Sie diese Option, wenn Sie nur übereinstimmende Datensätze benötigen, z. B. um Mitarbeiter zu finden, die in bestimmten Abteilungen arbeiten.LEFT JOIN
: Verwenden Sie diese Option, wenn Sie alle Datensätze aus einer Tabelle benötigen, z. B. um alle Mitarbeiter mit oder ohne Abteilungszuweisungen aufzulisten.RIGHT JOIN
: Verwenden Sie diese Option, wenn Sie alle Datensätze aus der zweiten Tabelle benötigen, z. B. eine Auflistung aller Abteilungen mit oder ohne zugewiesenen Mitarbeitern.
Fazit
Das obige ist der detaillierte Inhalt vonINNER JOIN vs. OUTER JOIN: SQL-Joins im Detail verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!