zoukankan      html  css  js  c++  java
  • sql:多表连接查询

    主要分为内连接、外连接。外连接又分left outer join、right outer join、full outer join。区别如下:

    1. INNER JOIN只返回同时存在于两张表的行数据,由于students表的class_id包含1,2,3,classes表的id包含1,2,3,4,所以,INNER JOIN根据条件s.class_id = c.id返回的结果集仅包含1,2,3。
    2. RIGHT OUTER JOIN返回右表都存在的行。如果某一行仅在右表存在,那么结果集就会以NULL填充剩下的字段。
    3. LEFT OUTER JOIN则返回左表都存在的行。如果我们给students表增加一行,并添加class_id=5,由于classes表并不存在id=5的行,所以,LEFT OUTER JOIN的结果会增加一行,对应的class_nameNULL

    内连接inner join

    写法:select s.id,s.name,s.classid from tbl_stu s inner join tbl_class c on s.classid = c.id

    1. 先确定主表,仍然使用FROM <表1>的语法;
    2. 再确定需要连接的表,使用INNER JOIN <表2>的语法;
    3. 然后确定连接条件,使用ON <条件...>,这里的条件是s.class_id = c.id,表示students表的class_id列与classes表的id列相同的行需要连接;
    4. 可选:加上WHERE子句、ORDER BY等子句。   

    假设查询语句是:

    SELECT ... FROM tableA ??? JOIN tableB ON tableA.column1 = tableB.column2;
    

    我们把tableA看作左表,把tableB看成右表,那么INNER JOIN是选出两张表都存在的记录:

    LEFT OUTER JOIN是选出左表存在的记录:

    RIGHT OUTER JOIN是选出右表存在的记录:

    FULL OUTER JOIN则是选出左右表都存在的记录:

    小结

    JOIN查询需要先确定主表,然后把另一个表的数据“附加”到结果集上;

    INNER JOIN是最常用的一种JOIN查询,它的语法是SELECT ... FROM <表1> INNER JOIN <表2> ON <条件...>

    JOIN查询仍然可以使用WHERE条件和ORDER BY排序。

  • 相关阅读:
    消息队列 ActiveMQ
    Redis
    SQL 怎么用EXISTS替代IN
    SQL优化
    为什么要重写hashCode()和equals()方法
    Redis的介绍和面试可能问到的问题
    建立私有CA和颁发证书
    修复grub2
    Centos 7 进入救援模式
    Centos 服务的常用命令
  • 原文地址:https://www.cnblogs.com/jinziguang/p/14889313.html
Copyright © 2011-2022 走看看