SQL JOIN 类型的详细讲解和代码示例:
1. INNER JOIN(内连接)
INNER JOIN
返回两个表中匹配的行。只有当两个表中都有匹配的行时,结果中才会显示这些行。
语法:
SELECT column1, column2, ...
FROM table1
INNER JOIN table2
ON table1.common_field = table2.common_field;
代码示例:
假设有两个表,Students
和 Scores
,它们通过 student_id
相关联。
SELECT Students.name, Scores.score
FROM Students
INNER JOIN Scores
ON Students.student_id = Scores.student_id;
2. LEFT JOIN(左连接)
LEFT JOIN
返回左表(第一个表)的所有行,即使右表(第二个表)中没有匹配的行。如果右表中没有匹配的行,结果将包含 NULL 值。
语法:
SELECT column1, column2, ...
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;
代码示例:
SELECT Students.name, Scores.score
FROM Students
LEFT JOIN Scores
ON Students.student_id = Scores.student_id;
3. RIGHT JOIN(右连接)
RIGHT JOIN
返回右表(第二个表)的所有行,即使左表(第一个表)中没有匹配的行。如果左表中没有匹配的行,结果将包含 NULL 值。
语法:
SELECT column1, column2, ...
FROM table1
RIGHT JOIN table2
ON table1.common_field = table2.common_field;
代码示例:
SELECT Students.name, Scores.score
FROM Students
RIGHT JOIN Scores
ON Students.student_id = Scores.student_id;
4. FULL JOIN(全连接)
FULL JOIN
返回两个表中的所有行,无论它们是否匹配。如果某一侧没有匹配的行,结果将包含 NULL 值。
语法:
SELECT column1, column2, ...
FROM table1
FULL OUTER JOIN table2
ON table1.common_field = table2.common_field;
代码示例:
SELECT Students.name, Scores.score
FROM Students
FULL OUTER JOIN Scores
ON Students.student_id = Scores.student_id;