数据库join的用途和用法(三)
1、join这个用法,简单的总结一下的话,就是如下图的数据库语句:其中,我们可以观察到,这个与和一般的语句不同之处就在于下图所示的两处区别:
2、一稍僚敉视个的逗号变成了LEFT OUTER JOIN关键字而WHERE 关键字又变成了ON,一句话解释不同的话,逗号加WHERE的组合,要求是A,B两个表内的数据要同时满足查询条件A.ID = B.ID才可以查询出来,但是LEFT OUTER JOIN加WHERE的组合,因为是LEFT,所以在左边的A表不管满不满足约束条件A.ID = B.ID都可以查询出来,而B表则需要满足这个查询条件。同理RIGHT OUTER JOIN与之相反。一句话其实就说的明明白白的,是不是很简单呢?
3、实际上从英语的翻译我们也可以比较轻易的理解一下,LEFT OUTER JOIN 只得就是左边的从外面加进来,换句话说左边的那个表(表A)实际上是不需要满足我们的on后面的条件的,Right OUTER JOIN自然也就是不需要满足右边的条件了。
4、当然,join绝不是这么简单就能掌握的事续异收俱情,细心的朋友们肯定发现了一点,我前面所举到的全部的例子都是A表和B漉胜衲仰表中关联的属性之间都是一对一的关系,这个关系无论是前面所说的员工号还是学号,不仅仅是UNIQUE的,而且还是一对一的,其实是很特殊的关系。
5、至于这个特殊的关系是什么,在这里我暂时不做详解,希望各位读者可以先自行思考以下一对多以及多对多的关系,详细内容将在下篇文章中说明。
6、而且还有一点,我们刚才在LEFT OUTER JOIN 之后,使用ON的时候,之后加的都是等于号,而没有试过大于或者小于号,甚至是别的更为复杂的操作,当然我在此建议,除非万不得已,否则不要使用非等于号来进行这样的数据库连接,并且假如在一些特定的场合必须用到这种特殊的方式,也务必通过简单的DEMO来进行测试,以避免出现连接结果根本不是我们所想的那样的后果。因为一旦不使用等于号,整个连接的记录数以及他们之间的关系就会变得相当的复杂。