zoukankan      html  css  js  c++  java
  • SQL笔记五:连接查询之内连接、左连接、右连接、完全连接

    一、连接查询的几个概念
    连接方式:内连接、左连接、右连接、完全连接

    1、内连接-INNER  JOIN
    显示左表及右表符合连接条件的记录

    2、左外连接-LEFT  JOIN
    显示左表的全部记录及右表符合连接条件的记录,右表不符合条件的显示NULL

    3、右外连接-RIGHT  JOIN
    显示右表的全部记录及左表符合连接条件的记录,左表不符合条件的显示NULL

    二、等值连接--内连接

    INNER  JOIN
    内连接,也称为等值连接,显示左表及右表符合连接条件(字段匹配关系)的记录

    将两张表的列组合在一起,产出新的结果集,结果集是两个表的公共部分

    语法:SELECT * FROM  表名1 , 表名2  WHERE exp_1;

    SELECT * FROM  表名1 , 表名2   INNER JOIN WHERE exp_1;

    不使用on语法时,join、inner  join、逗号、cross  join结果相同,都是取2个表的笛卡尔积。所以以上两种是等价的,效果一样。

    其他语法:

    SELECT * FROM  表名1 , 表名2   INNER JOIN ON exp_1;

    SELECT * FROM  表名1 INNER JOIN   表名2 USING(字段名);

    隐式内连接、JOIN、CROSS  JOIN

    实例:

     三、左外连接--LEFT  JOIN

    说明:读取左表全部数据,即便右表没有对应数据如果右表没有匹配记录,右侧结果集字段将为null

    A  LEFT  JOIN  B:以A表为基础连接B查询结果
    查询出所有A记录

           SELECT  *  FROM  A   LEFT  JOIN  B  ON  A.KEY=B.KEY;

    查询出不在B表中的A记录

           SELECT  *  FROM LEFT  JOIN ON  A.KEY=B.KEY   WHERE  B.KEY  IS  NULL;

    实例:

     四、右外连接--RIGHT  JOIN

    说明:读取右表全部数据,即便左表没有对应数据
    A  RIGHT  JOIN  B:以B表为基础连接A查询结果,与LEFT JOIN相反
    查询出所有B记录:SELECT  *  FROM  A  RIGHT  JOIN ON  A.KEY=B.KEY;

    查询出不在A表中的B记录:SELECT  *  FROM  A  RIGHT  JOIN ON  A.KEY=B.KEY  WHERE  A.KEY  IS  NULL;

    实例:

     五、完全连接--全连接

    说明:完全连接返回左表和右表中的所有行,用UNION  ALL的方式达到FULL  JOIN的效果

    查询A表B表所有数据
    SELECT  *  FROM  A  LEFT  JOIN  B  ON  A.KEY=B.KEY  WHERE  B.KEY  IS  NULL;

    UNION   ALL

    SELECT  *   FROM  RIGHT  JOIN  B  ON  A.KEY=B.KEY  WHERE  A.KEY  IS  NULL;

    UNION是去重查询结果集,UNION  ALL是不去重结果集
    实例:

  • 相关阅读:
    二分法、面向过程、匿名函数、模块
    寒假总结
    软件需求开发最佳实践(于向东)阅读笔记03
    微信小程序“真心话”冲刺阶段03
    软件需求开发最佳实践(于向东)阅读笔记02
    微信小程序“真心话”冲刺阶段02
    微信小程序“真心话”冲刺阶段01
    寒假作业----微信小程序“真心话”-------给父母写的软件
    软件需求开发最佳实践(于向东)阅读笔记01
    软件工程概论总结及其对建民欧巴的评价和建议
  • 原文地址:https://www.cnblogs.com/123blog/p/12633568.html
Copyright © 2011-2022 走看看