Sql 为什么叫内连接和外连接?

Sql 为什么叫内连接和外连接?,sql,join,Sql,Join,我了解内部连接和外部连接的工作原理。但是在这个上下文中,“内部/外部”这个词是什么意思呢?内部联接有什么内在的呢?关于外接,什么是外接 致以最良好的祝愿, Vishal内部联接将只返回联接键存在于所有联接表中的记录,或者换句话说,它将返回键位于联接表交集内的记录。键位于该部分的。外部联接将返回交叉点中的所有记录,以及交叉点外部的记录 下面是一篇关于堆栈溢出的文章: 还有一个: 事实上,我想你的问题是重复的 还有一个视角: 最早的简单连接实现之一使用嵌套循环 对于内部联接,外部循环将迭代任何关系,

我了解内部连接和外部连接的工作原理。但是在这个上下文中,“内部/外部”这个词是什么意思呢?内部联接有什么内在的呢?关于外接,什么是外接

致以最良好的祝愿,
Vishal

内部联接将只返回联接键存在于所有联接表中的记录,或者换句话说,它将返回键位于联接表交集内的记录。键位于该部分的。外部联接将返回交叉点中的所有记录,以及交叉点外部的记录

下面是一篇关于堆栈溢出的文章:

还有一个:

事实上,我想你的问题是重复的

还有一个视角:

最早的简单连接实现之一使用嵌套循环

  • 对于内部联接,外部循环将迭代任何关系,内部循环将迭代其他关系,并在联接列匹配时创建复合行。因此,将在内部循环中创建并填充输出行。因此,这被称为内部连接

  • 当我们希望保留左侧relation\table中的所有行时,外部循环必须在左侧表上迭代,并且对于匹配的情况,行将不仅添加到内部循环中,而且对于不匹配的情况,行也将添加到外部循环中(其中左表在基于联接列的右表中没有匹配行)。在这种情况下,左表需要转到外部循环,因此称为左外部联接

  • 当我们希望保留右侧关系\表中的所有行时,右侧表将需要进入外部循环,因此称为右侧外部联接

  • 当我们希望保留两个表中不匹配的行时,在最简单的方法中,我们将有两个嵌套循环。一个嵌套循环的左表在外循环中,另一个嵌套循环的右表在外循环中。所以这两个表都转到外部循环,因此称为完全外部连接


  • 在讨论嵌套循环实现的论文中添加链接:

    第一次点击谷歌的视觉指南:可能重复yeh我在发布之前看到了venn图的可视化。这些可视化对我来说似乎不正确。这些可视化对我来说似乎不正确。检查我标记为正确的答案和我对克雷格的回复。一定要让我知道你对它的看法。关系代数是基于集合论的。在集合论中,交集是指两个集合之间的公共元素。在连接行时,将创建行。如果第一个表中的行与第二个表中的多行匹配,则会创建多行。因此我不明白为什么交叉路口是一种直观的思考方式。检查下面我标记为正确的答案。虽然是技术性的,但它似乎是精确的。但这也意味着名称(内部/外部联接)基于实现而固定。我想知道你对此的想法。嗯,我确实说过钥匙交叉。是的,当一个表中的键在另一个表中有多个匹配项时,会在结果集中创建其他虚拟记录。但是,您仍然在查看两个表中键集相交的所有记录,而没有一个表中键集不相交的记录。@user3123794我认为,我接受的答案的唯一真正问题是,它侧重于实现(…内部连接,外部循环迭代这个…内部循环迭代那个…创建复合行…).实现可能会有所不同,我没有看到任何参考书目支持这些断言。答案中没有任何内容真正涉及Cobb的关系代数,它只涉及循环。关系代数没有涉及外部联接。我不明白公认的答案如何解释为什么内部联接是内部联接,而外部联接是外部联接n是外部连接。