sql 连接 join 例解。(左连接,右连接,全连接,内连接,交叉连接,自连接) -凯发k8国际

`
qepwqnp
  • 浏览: 102713 次
  • 性别:
  • 来自: 成都
最近访客
博主相关
  • 博客
  • 微博
  • 相册
  • 收藏
  • 社区版块
    • ( 0)
    • ( 65)
    • ( 47)
    存档分类
    最新评论

    sql 连接 join 例解。(左连接,右连接,全连接,内连接,交叉连接,自连接)

    最近公司在招人,同事问了几个自认为数据库可以的应聘者关于库连接的问题,回答不尽理想~
    现在在这写写关于它们的作用
    假设有如下表:


    一个为投票主表,一个为投票者信息表~记录投票人ip及对应投票类型,左右连接实际说是我们联合查询的结果以哪个表为准~
    1:如右接连 right join 或 right outer join:

    我们以右边voter表为准,则左表(votemaster)中的记录只有当其id在右边(voter)中存在时才会显示出来,如上图,左边中id为3.4.5.6因为这些id右表中没有相应记录,所以没有显示!
    2:因此我们自然能理解左连接 left join 或者 left outer join

    可见,现在右边中id在中存在时才会显示,当右边中没有相应数据时则用null代替!
    3:全连接 full join 或者 full outer join,为二个表中的数据都出来,这里演示效果与上一样!
    4:内连接 inner join 或者 join;它为返回字段id同时存在于表votemaster 和 voter中的记录

    5:交叉连接(完全连接)cross join 不带 where 条件的
    没有 where 子句的交叉联接将产生联接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。(table1和table2交叉连接产生6*3=18条记录)

    等价select vm.id,vm.votetitle,vt.ip from votemaster as vm,voter as vt

    6:自连接。在这里我用我前段时间一个电力项目中的例子(改造过)
    如下表:

    这是一个部门表,里面存放了部门及其上级部门,但都放在同一张表中,我们假设现在需要用sql查询出各部门及其上级部门!就如何做,
    当然,不用自连接也一样,可以如下:

    我们达到预期目的!在这个查询中使用了一个子查询完成对上级部门名的查询,如果使用自连接,那么结构上感觉会清晰很多。

    是不是也同样完成了功能呢,这里除了使用自连接外,还使用了左连接,因为省电力没有上级部门,他是老大,如果使用内连接,就会把这条记录过滤掉,因为没有和他匹配的上级部门。
    自连接用的比较多的就是对权形结构的查询!类似上表!
    分享到:
    |
    • 2009-09-09 22:11
    • 浏览 1349
    • 评论(7)
    • 论坛回复 / (7 / 24336)
    评论
    7 楼 2010-06-09  
    楼主是浪曦的么?我经常去呢
    6 楼 2010-06-04  



    select departmentname 部门名
    
    ,(select departmentname from dep as indep where indep.depid = outdep.pid) 上级部门名
    from dep as outdep


     这句的逻辑好乱


     


    改为




    select departmentname 部门名
    
    ,(select departmentname from dep as outdep where outdep.depid = indep .pid) 上级部门名
    from dep as indep

     这样逻辑比较好
    5 楼 2010-06-04  
    3:全连 full join 或者 full outer join,为二个表中的数据都出来,这里演示效果与上一样!
    这个结果与上不太一样吧.全连接,会把两个表的数据全查出来,如果没有就为null,所以除去公共的记录三条,再加上不同的记录数.

    lz的结果正确,全连接就是左右连接的union,结果是正确的!

    4 楼 2009-12-29  
    gafking 写道
    挺好,那个inner的图错了

    inner join的图没有错啊 你自己试试
    3 楼 2009-09-10  
    lz辛苦了
    刚好最近在做sql优化 要用到
    谢谢了
    2 楼 2009-09-10  
    3:全连 full join 或者 full outer join,为二个表中的数据都出来,这里演示效果与上一样!
    这个结果与上不太一样吧.全连接,会把两个表的数据全查出来,如果没有就为null,所以除去公共的记录三条,再加上不同的记录数.

    左连接,a left join b on 会查到所有满足连接条件的a的记录,而b中有就显示,没有就放空.
    a right join b on 会查出所有b中的满足条件的记录, 同上,其实和 b left join a一样的结果.
    1 楼 2009-09-10  
    挺好,那个inner的图错了

    相关推荐

      sql 连接 join 例解左连接,右连接,全连接,内连接,交叉连接,自连接

      sql连接join例解左连接右连接全连接内连接交叉连接自连接

      sql连接join例解 (左连接,右连接,全连接,内连接,交叉连接,自连接)pdf

      外连接: 全连接(full join)、左连接(left join)、右连接(right join)。 交叉联接(cross join)。 外连接与内连接不一样,外连接返回的查询结果中不仅包含符合条件的行,还包括左表(左外连接),右表(右外连接)...

       外联接(左、右)得到一个表的所有行,及其余表满 足连接条件的行 full | left | right outer join on  交叉联接  在这类联接的结果集内,两个表中每两个可能成对的行占一行。  但是如果在交叉联接中加入...

      sql语法大全 sql语法大全 1. asp与access数据库连接: dim conn,mdbfile mdbfile=server.mappath("数据库名称.mdb") set conn=server.createobject("adodb.connection") conn.open "driver={microsoft access ...

      用数据实例解说sql内连接/外连接/全连接/交叉连接的运用与区别--表o的内容:select o.orderid 001 u01 item001 002 u02 item002 007 u07 item007 --表u的内容:select u.userid u01 张三 u02 李四 u03 周五 --外连接1:...

      9.4 外连接 9.4.1 左外连接 9.4.2 右外连接 9.4.3 全外连接 9.4.4 在外连接中使用聚合函数 9.5 交叉连接 9.5.l 交叉连接的定义 9.5.2 交叉连接举例 9.6 多表连接的综合应用 9.6.1 内连接与左外连接的综合应用 ...

      11.1.5 使用inner join连接查询 223 11.1.6 连接查询实例 224 11.2 高级连接查询 226 11.2.1 自连接查询 226 11.2.2 内连接查询 227 11.2.3 左外连接查询 229 11.2.4 右外连接 230 11.2.5 全外连接 230 11.2.6 交叉...

      sql中表全连接 full join sql中变量 sql中的事务 创建存储过程 存储过程带输出参数 调用存储过程 触发器定义 触发器类型: 触发器触发条件: 什么是索引 索引类型 什么是填充因子 什么是临时表 什么是局部临时表 什么...

       7.2 内连接(inner join)  7.3 不等值连接  7.4 交叉连接  7.5 自连接  7.6 外部连接  7.6.1 左外部连接  7.6.2 右外部连接  7.6.3 全外部连接 第8章 子查询  8.1 子查询入门  8.1.1 单值子查询  8.1.2...

       7.2 内连接(inner join)  7.3 不等值连接  7.4 交叉连接  7.5 自连接  7.6 外部连接  7.6.1 左外部连接  7.6.2 右外部连接  7.6.3 全外部连接 第8章 子查询  8.1 子查询入门  8.1.1 单值子查询  8.1.2...

      9.3.5 交叉连接(cross join)  9.4 union与union join  9.4.1 关系的集合运算  9.4.2 union运算符  9.4.3 order by子句排序union运算结果  9.4.4 对多表进行union运算  9.4.5 union join 连接表  9.5 ...

       7.2 内连接(inner join)  7.3 不等值连接  7.4 交叉连接  7.5 自连接  7.6 外部连接  7.6.1 左外部连接  7.6.2 右外部连接  7.6.3 全外部连接 第8章 子查询  8.1 子查询入门  8.1.1 单值子查询  8.1.2...

       7.2 内连接(inner join)  7.3 不等值连接  7.4 交叉连接  7.5 自连接  7.6 外部连接  7.6.1 左外部连接  7.6.2 右外部连接  7.6.3 全外部连接 第8章 子查询  8.1 子查询入门  8.1.1 单值子查询  8.1.2...

       7.2 内连接(inner join)  7.3 不等值连接  7.4 交叉连接  7.5 自连接  7.6 外部连接  7.6.1 左外部连接  7.6.2 右外部连接  7.6.3 全外部连接 第8章 子查询  8.1 子查询入门  8.1.1 单值子查询  8.1.2...

       数据查询语言 (data query language, dql) 是sql语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的sql语句。例如:select(查询)  数据控制语言data controlling language(dcl),用来...

       以上两个sql中dy_dj(电压等级)及xh_bz(销户标志)两个字段都没进行索引,所以执行的时候都是全表扫描,第一条sql的dy_dj = '1kv以下'条件在记录集内比率为99%,而xh_bz=1的比率只为0.5%,在进行第一条sql的...

    global site tag (gtag.js) - google analytics
    网站地图