左、右、外、内连接的区别是什么?

左、右、外、内连接的区别是什么?

我想知道如何区分所有这些不同的连接.。



慕斯王
浏览 724回答 3
3回答

大话西游666

简单例子:让我们说你有一个Students桌子,和Lockers桌子。在SQL中,在联接中指定的第一个表,Students,是左边第二张桌子,Lockers,是右(边),正确的桌子。每个学生都可以被分配到一个储物柜,所以有一个LockerNumber列中的Student桌子。一个以上的学生可能在一个单独的储物柜里,但特别是在学年开始的时候,你可能会有一些没有储物柜的学生,还有一些没有分配学生的储物柜。为了这个例子,让我们假设100名学生其中有70个有储物柜。你总共50个储物柜其中40个至少有1个学生,10个储物柜没有学生。内连接等于“让我看看所有带着储物柜的学生".任何没有储物柜的学生或没有学生的储物柜都失踪了。返回70行左外连接会是“让我看看所有的学生,如果他们有相应的储物柜的话。". 这可能是一个普通的学生名单,或者可以用来识别没有储物柜的学生。返回100行右外连接会是“把所有的储物柜都给我看看,如果有的话,还有分配给他们的学生。". 这可以用来识别没有分配学生的储物柜,或者有太多学生的储物柜。返回80行(列出40个储物柜中的70个学生,加上10个没有学生的储物柜)全外连接会很傻而且可能没什么用。就像“让我看看所有的学生和所有的储物柜,并在你能找到的地方匹配它们。" 返回110行(所有100名学生,包括那些没有储物柜的学生。加上十个没有学生的储物柜)交叉连接在这种情况下也相当愚蠢。它不使用链接lockernumber在“学生”表中的字段中,因此您最终会得到一个巨大的列表,列出每个可能的学生对更衣室配对,不管它是否真的存在。返回5000行(100名学生x50个储物柜)。可能是有用的(过滤)作为一个起点,使新学生与空的储物柜相匹配。

小唯快跑啊

只有四种:内连接最常见的类型。对于在联接条件下匹配的每一对输入行,都会产生一个输出行。左外连接:与内部联接相同,但如果在右边的表中找不到匹配行,则输出一行,其中包含左侧表中的值。NULL对于右边表中的每个值。这意味着左边表中的每一行将在输出中至少出现一次。右外连接*与左外部联接相同,但表的角色反转除外。全外连接左、右外接的组合。两个表中的每一行将至少在输出中出现一次。“交叉联接”或“笛卡儿联接”只是一个内部联接,没有为其指定任何连接条件,从而输出所有对行。感谢RusselH指出了完整的联接,我忽略了这一点。
打开App,查看更多内容
随时随地看视频慕课网APP