1. 什么是外部关联
外部关联是SQL中一种将两个或多个表中的数据行相连接的方式,外部关联与内部关联类似,但外部关联还包括返回未匹配行的操作。外部关联可以解决多个表之间数据关联的问题,可以在主表中找不到相应数据的情况下,返回空值的数据。外部关联分为左外关联、右外关联、全外关联。
1.1 左外关联
左外关联返回左表的所有行,以及右表中与左表匹配的行,如果左表中的某行在右表中无法找到匹配,则该行仍然会以空值出现在结果集中。
SELECT *
FROM table1
LEFT JOIN table2 ON table1.column1 = table2.column1;
1.2 右外关联
右外关联与左外关联类似,只是返回的结果相反,返回右表的所有行,以及左表中与右表匹配的行,如果右表中的某行在左表中无法找到匹配,则该行仍然会以空值出现在结果集中。
SELECT *
FROM table1
RIGHT JOIN table2 ON table1.column1 = table2.column1;
1.3 全外关联
全外关联返回左表和右表中的所有行,如果左表中某行在右表中无法找到匹配,则该行以空值出现,在右表中某行在左表中无法找到匹配,则该行同样也以空值出现。
SELECT *
FROM table1
FULL OUTER JOIN table2 ON table1.column1 = table2.column1;
2. SQL Server中的外部关联
在SQL Server中,在使用外部关联时,LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN都可以在SELECT、WHERE、FROM和JOIN子句中使用。这些语句可以帮助处理两个或更多数据表之间的关系。
2.1 LEFT JOIN
在SQL Server中,LEFT JOIN返回左表的所有行以及与右表匹配的行。如果右表中的某行在左表中无法找到匹配,则该行仍然会以NULL形式出现在结果集中。
SELECT *
FROM table1
LEFT JOIN table2 ON table1.column1 = table2.column1;
2.2 RIGHT JOIN
在SQL Server中,RIGHT JOIN返回右表的所有行以及与左表匹配的行。如果左表中的某行在右表中无法找到匹配,则该行仍然会以NULL形式出现在结果集中。
SELECT *
FROM table1
RIGHT JOIN table2 ON table1.column1 = table2.column1;
2.3 FULL OUTER JOIN
在SQL Server中,FULL OUTER JOIN返回左表和右表中的所有行。如果在任一表中找不到匹配的行,则会在结果集中包含空值。
SELECT *
FROM table1
FULL OUTER JOIN table2 ON table1.column1 = table2.column1;
3. 总结
外部关联的使用可以帮助处理两个或更多数据表之间的关系,可以在查找数据时避免返回空值的情况。在SQL Server中,LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN都可以在SELECT、WHERE、FROM和JOIN子句中使用,使用这些语句可以更方便的处理表之间的关系。