zoukankan      html  css  js  c++  java
  • 数据库之查询的连接方式

    前言


    在写开头的时候我想到了两个開始,比較一下

            第一个开头:sql几种常见的查询连接方式
            第二个开头:sql(结构化查询语言)有数据定义功能,数据查询功能,数据操作功能,数据控制功能。

    我们寻常所说的增删改查就是sql这些功能的更加简洁的说法。如今就"查"来介绍几种经常使用的连接方式。
           哪一种更好?我个人更加倾向于另外一种。原因是另外一种让我明白了我如今总结的知识在我的知识网中处于什么地方。让我的知识非常有归属感。至于我为什么会想到另外一种写法就要源于一趟课了。

            在准备写这篇博客的过程中米老师给我们上了一堂课叫做“再谈编织知识网”。这堂课的中心思想我总结了两个方面。

            第一个:学习新东西的时候要联系我们曾经的东西。

            第二个:全局观,"不谋万世者,不足谋一时。不谋全局者,不足谋一域。"对于我来说最大的收获不是老师讲的这两点。而是老师在讲第二点的时候无意之间提到的一句话。原话记不清出了大概的意思是:一定要有全局观,这样子才干够找到新东西里哪是你曾经学习过的旧知识。

    这样子你的学习会轻松快乐的非常多。


            这句话对我有这么深的感触是由于我曾经仅仅是听老师讲全局观,可是自己对他的感觉事实上是"熟悉的陌生人"。

    我从来不知道怎样才算是有了全局观,还有全局观对我究竟有何优点。

    可是老师说的"找到",让我一下子清楚过来了,全局观也算是刚刚開始认识了吧!如今想起来,全局观还会让我找到新知识的重点是什么。

    让我高速的了解他的全貌,这就为我下一步怎样走奠定了基础。优点多多以后要多多题型着自己一点了。

           好了如今開始进入正题,查询的几种连接方法。



    连接简单介绍


    SQL提供了多种类型的连接方式,它们之间的差别在于:从相互交叠的不同数据集合中选择用于连接的行时所採用的方法不同。

            我们最经常使用的连接方式有三种,各自是内连接。外连接;外连接又细分为左外连接。右外连接。除了这三种还有三种连接方式,各自是:全外连接。自身连接和交叉连接。

            这几种连接方式的定义就简单的了解写一下吧

    inner join(内连接):仅仅返回两个表中联结字段相等的行

    left outer join(左外连接):返回包含左表中的全部记录和右表中联结字段相等的记录

    right outer join(右外连接):返回包含右表中的全部记录和左表中联结字段相等的记录 

    full outer(全外连接):返回左表和右表中所有的记录

    自身连接:同一个表自己与自己连接。

    cross join(交叉连接):交叉连接返回左表中的全部行。左表中的每一行与右表中的全部行组合

    光看这些定义能够会有一种讲的都是什么的感觉,以下就用一种图形将它们简单的介绍一下,然后再通过详细的实例进行測试。

    下图中一个圆圈代表一个表,当中蓝色的代表左表,白色的代表右表

         

    从图上再来看几种连接就会清楚非常多。

    内连接:就是图中的C部分

    左外连接:就是图中的A+C部分

    右外联结:就是图中的B+C部分



    实例



    建立两种表各自是Table_a  Table_b,在表中加入几条记录。例如以下图

       

       


    1. 内连接

    --内连接(inner) 能够省略inner
    select a_UserID,b_StudentID from Table_a
    inner join Table_b on a_UserID = b_StudentID 

    结果


     2. 外连接之左外连接

    --外连接之左连接 也能够写成left join(省略outer)
    select a_UserID,b_StudentID from Table_a
    left outer join Table_b on a_UserID = b_StudentID 

    结果


    3.外连接之右外连接

    --外连接之右连接  也能够写成 right join(省略outer)
    select  a_UserID,b_StudentID  from Table_a
    right outer join Table_b on a_UserID = b_StudentID 

    结果


    4.全外连接

    --全外连接
    select a_UserID , b_StudentID from Table_a
    full outer join Table_b on a_UserID=b_StudentID

    结果


    5.自身连接

    --自身连接
    select s.a_ID , s.a_UserName, i.a_UserID, i.a_UserName from Table_a i
    join Table_a s on i.a_UserID = s.a_ID

    结果


    6.交叉连接

    --交叉连接
    select i.a_UserID,t.b_StudentID from Table_a i cross join Table_b t
    select count(*) from Table_a i cross join Table_b t

    结果



    总结


    这篇文章介绍经常使用的查询方法的用法,通过图形将它的定义图形化,使得理解起来更加的简单。

  • 相关阅读:
    poj 2676 Suduku (dfs)
    poj 1562 Oil Deposits (dfs)
    poj 2907 Collecting Beepers (dfs)
    poj 1655 Balancing Act (树形dfs)
    poj 3411 Paid Roads (dfs)
    hdu 2896 病毒侵袭 (AC)
    hdu 3065 病毒侵袭持续中 (AC)
    poj 2251 Dungeon Master (bfs)
    java中debug使用
    Swing入门级小项目总结
  • 原文地址:https://www.cnblogs.com/jhcelue/p/6795852.html
Copyright © 2011-2022 走看看