Rumah >pangkalan data >tutorial mysql >INNER JOIN vs OUTER JOIN: Memahami SQL Joins secara Mendalam
Dalam SQL, INNER JOIN dan OUTER JOIN digunakan untuk menggabungkan baris daripada dua atau lebih jadual berdasarkan lajur yang berkaitan. Perbezaan utama terletak pada cara cantuman ini mengendalikan baris yang tidak dapat dipadankan.
INNER JOIN hanya mengembalikan baris yang mempunyai nilai yang sepadan dalam kedua-dua jadual. Jika tiada padanan, baris dikecualikan daripada keputusan.
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 |
Pertanyaan:
SELECT employees.Name, departments.DepartmentName FROM employees INNER JOIN departments ON employees.DepartmentID = departments.DepartmentID;
Name | DepartmentName |
---|---|
Alice | HR |
Bob | IT |
OUTER JOIN termasuk baris daripada satu atau kedua-dua jadual, walaupun tiada padanan. Terdapat tiga jenis OUTER JOIN:
Mengembalikan semua baris dari jadual kiri, walaupun tiada padanan dalam jadual kanan.
Sintaks:
SELECT columns FROM table1 INNER JOIN table2 ON table1.column = table2.column;
Pertanyaan:
SELECT employees.Name, departments.DepartmentName FROM employees INNER JOIN departments ON employees.DepartmentID = departments.DepartmentID;
Name | DepartmentName |
---|---|
Alice | HR |
Bob | IT |
Charlie | NULL |
Mengembalikan semua baris dari jadual kanan, walaupun tiada padanan dalam jadual kiri.
Sintaks:
SELECT columns FROM table1 LEFT JOIN table2 ON table1.column = table2.column;
Pertanyaan:
SELECT employees.Name, departments.DepartmentName FROM employees LEFT JOIN departments ON employees.DepartmentID = departments.DepartmentID;
Name | DepartmentName |
---|---|
Alice | HR |
Bob | IT |
NULL | Finance |
Mengembalikan semua baris daripada kedua-dua jadual. Baris tanpa padanan diisi dengan NULL.
Sintaks:
SELECT columns FROM table1 RIGHT JOIN table2 ON table1.column = table2.column;
Pertanyaan:
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. |
Kes Penggunaan
SERTAI DALAM
: Gunakan apabila anda hanya memerlukan rekod yang sepadan, seperti mencari pekerja yang bekerja di jabatan tertentu.LEFT JOIN
: Gunakan apabila anda memerlukan semua rekod dari satu jadual, seperti menyenaraikan semua pekerja dengan atau tanpa tugasan jabatan.KANAN SERTAI
: Gunakan apabila anda memerlukan semua rekod daripada jadual kedua, seperti menyenaraikan semua jabatan dengan atau tanpa pekerja yang ditugaskan.
Kesimpulan
Atas ialah kandungan terperinci INNER JOIN vs OUTER JOIN: Memahami SQL Joins secara Mendalam. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!