SQL Server 中的 JOIN:带示例的教程
我们可以使用 JOIN 语句从多个表中检索数据。SQL Server 中主要有 4 种不同类型的 JOIN。我们将通过示例学习 SQL Server 中的所有 JOIN。
- INNER JOIN/简单 JOIN
- LEFT OUTER JOIN/LEFT JOIN
- RIGHT OUTER JOIN/RIGHT JOIN
- FULL OUTER JOIN
INNER JOIN
此类型的 SQL Server JOIN 返回 JOIN 条件为真的所有表中的行。它采用以下语法:
SELECT columns FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column;
我们将使用以下两个表来演示:
学生表
费用表
以下命令通过示例演示了 SQL Server 中的 INNER JOIN:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students INNER JOIN Fee ON Students.admission = Fee.admission
该命令返回以下结果:
我们可以确定哪些学生已支付费用。我们使用了两个表中具有公共值的列,即 admission 列。
LEFT OUTER JOIN
此类型的 JOIN 将返回左表中的所有行,加上右表中具有匹配值的记录。例如:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students LEFT OUTER JOIN Fee ON Students.admission = Fee.admission
代码返回以下结果:
没有匹配值的记录将在相应列中替换为 NULL。
RIGHT OUTER JOIN
此类型的 JOIN 返回右表中的所有行,以及左表中匹配值的行。例如:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students RIGHT OUTER JOIN Fee ON Students.admission = Fee.admission
OUTER JOINS SQL Server 的语句返回以下结果:
上述输出的原因是,当在 admission 列上匹配时,费用表中的所有行都可以在学生表中找到。
FULL OUTER JOIN
此类型的 JOIN 在 JOIN 条件不为 TRUE 时返回两个表中的所有行,并将 NULL 值用于不匹配的行。例如:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students FULL OUTER JOIN Fee ON Students.admission = Fee.admission
对于 SQL 中的 FULL OUTER JOINS 查询,代码返回以下结果: