大话西游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个储物柜)。可能是有用的(过滤)作为一个起点,使新学生与空的储物柜相匹配。