zoukankan      html  css  js  c++  java
  • SQL多表联合查询(交叉连接,内连接,外连接)

    连接查询:              

      交叉连接:                    

    交叉连接返回的结果是被连接的两个表中所有数据行的笛卡尔积,也就是返回第一个表中符合查询条件的数据航数乘以第二个表中符合,查询条件的数据行数,例如department表中有4个部门,employee表中有4个员工,那么交叉连接的结果就有4 * 4 = 16条数据                

    SELECT * FROM 表1 CROSS JOIN 表2;
    SELECT * FROM 表1,表2;

     从上述描述情况可以看出,交叉连接的结果就是两个表中所有数据的组合。需要注意的是,在实际开发中这种业务需求是很少见的,一般不会使用交叉连接,而是使用具体的条件对数据进行有目的的查询

    内连接:
            内连接(INNER JOIN)又称简单连接或自然连接,是一种常见的连接查询。内连接使用比较运算符对两个表中的数据进行比较,并列出与连接条件匹配的数据航,组合成新的记录,也就是说在内连接查询中,只有满足条件的记录才能出现在查询结果中。

     SELECT 查询字段 FROM 表1 [INNER] JOIN 表2 ON 表1.关系字段 = 表2.关系字段;

         在上述语法格式中,INNER JOIN用于连接两个表,ON来指定连接条件,其中INNER可以省略。内连接其实还可以细分为如下两类:
          1.隐式内连接:顾名思义隐式的就是我们看不到inner join的关键字。而使用where关键字替代。        

     SELECT * FROM 表1,表2 where 表1.关系字段 = 表2.关系字段;

          2.显示内连接:显示的就是在语句中明显的调用了inner join的关键字    

    SELECT * FROM 表1 inner join 表2 on 表1.关系字段 = 表2.关系字段;
    SELECT * FROM 表1 join 表2 on 表1.关系字段 = 表2.关系字段;

      外连接:

        前面讲解的内连接查询中,返回的结果只包含符合查询条件和连接条件的数据,然而有时还需要包含没有关联的数据,即返回查询结果中不仅包含符合条件的数据,而且还包括左表(左连接或做外连接)、右表(右连接或右外连接)
         或两个表(全连接)中的所有数据,此时就需要使用外连接查询,外连接分为左连接和右连接。
                         语法格式:

      SELECT 所查字段 FROM 表1 LEFT|RIGHT [OUTER] JOIN 表2 ON 表1.关系字段 = 表2.关系字段 WHERE 条件;

                      外连接的语法格式和内连接类似,只不过使用的是LEFT JOIN、RIGHT JOIN关键字,其中关键字左边的表被称为左表,关键字右边的表被称为右表。

  • 相关阅读:
    HTTPD之五---HTTP协议、相关工具及状态码
    HTTPD之四----实现HTTPD正向代理与反向代理
    第十三周---DNS原理、实现智能DNS及源码编译mariadb数据库
    DNS之五----实现智能DNS
    sqoop 导入增量数据到hive
    Hadoop 二次排序
    Spark foreachpartiton和mappartition的异同
    hadoop 实现多文件输出
    spark 实现多文件输出
    Scala 中 call by name & call by value 的区别
  • 原文地址:https://www.cnblogs.com/deepSleeping/p/10012402.html
Copyright © 2011-2022 走看看