外连接是否仅用于开发人员的分析?我无法找到一个用例来说明您为什么要在两个或多个不相关或不“匹配”您的选择标准的表中包含数据。
8 回答
一个示例用例是生成显示所有客户及其购买的报告。也就是说,甚至显示没有购买任何东西的客户。如果您对客户和购买进行普通连接,则报告将仅显示至少购买了一次的客户。
这是Jeff Atwood 的一个非常好的示例列表 - SQL 连接的视觉解释,他直观地展示了 SQL 连接的新表示。
“不匹配”的情况对于可选数据很有用。某些行存在但其他行不存在的东西。
OUTER JOIN 旨在解决您希望从主表中选择一组记录的情况,这些记录可能包含或不包含在辅助表中的相关记录。
INNER 连接将从列表中省略任何未出现在辅助表中的主记录。任何 OUTER JOIN 都保证所有合格的主记录的可见性。
外连接和内连接的区别主要在于外连接保留了两个连接表中的每条记录,无论连接谓词是否匹配。因此,用例需要围绕了解“丢失的东西”,例如。尚未购买的客户,或缺少个人详细信息的会员。
也许您有一个用户表和一个与之相关的地址表,因为您的用户可能选择不输入地址,或者他们可能有多个(运输、街道、邮政等)。如果您想列出所有用户,同时也显示拥有这些用户的地址,则必须对地址表使用外连接。
假设您有两张表,一张用于用户,一张用于资格,您想要进行查询以获取所有用户的资格(如果他们有的话)。在这种情况下,您将使用外部联接来获取所有用户以及具有资格的用户。内部联接只会为您提供具有资格的用户。
一篇关于外连接的精彩文章: 与专家会面:Terry Purcell 谈外连接中的谓词编码:简单外连接结构的比较