当前访问本站: hits

yjhmily

坚持走自己的路……

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  100 Posts :: 8 Stories :: 353 Comments :: 0 Trackbacks
       假设我们现在有user和org两张表:
1、user用户表 字段包含:id、name、orgId 其中orgId标示该用户所属的组织
2、org组织表   字段包含:id、name
两表之间的关系很简单,一个组织下会拥有多个用户,一个用户属于某个组织。

         在解析之前先普及一下数据库空值(null)的概念:
有很多时候我们都能碰到某表中某字段值为空的情况,空值不等同于字符串中的空格、空串
也不等同于数字类型的0,所以,一般我们用IS NULL 关键字来检索有空值字段的记录。而不是用!=、<>这些判断符。

        接下来,我们给示例库表中做上一些测试数据,如下图:
                             

        有了这些数据,咱们就可以进入正题啦:
一、左连接、右连接
        A Left join(左连接)优先解出左表中所有的记录,包含右表中没有匹配到得记录。
        A Right join(右连接)优先解出右表中所有的记录,包含左表中没有匹配到得记录。

左右连接是相互对应的,所以在这里一并解释。
罗嗦一句如何区分左表和右表:
        在JOIN的左边出现的表叫左表,在JOIN的右边出现的表叫右表
具体体现在SQL语句上即:(以左连接为例)
        左连接语句:SELECT user.name,org.name FROM user LEFT JOIN org ON  user.orgId = org.id
        右链接语句:SELECT user.name,org.name FROM user RIGHT JOIN org ON  user.orgId = org.id
显而易见,该SQL中,user为左表、org为右表
下面我们来看看这两个语句分别执行后的效果:
                                   
        为了更好的看出左右连接的效果,我们再来看看内连接查询出来的效果
        内连接:SELECT user.name,org.name FROM user JOIN org ON  user.orgId = org.id
内连接语句执行后的效果:
                                                    
        很明显:
内连接与左连接相比,检索结果集中漏掉了user表的user3数据
内连接与右连接相比,检索结果集中漏掉了org表的org4数据

posted on 2010-03-14 18:25 kangxm 阅读(648) 评论(0)  编辑  收藏 所属分类: SQL

只有注册用户登录后才能发表评论。


网站导航: