SQL连接查询

内连接-------INNER JOIN来实现

     SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
     FROM students s
     INNER JOIN classes c
     ON s.class_id = c.id;

     注意INNER JOIN查询的写法是:

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

外连接-------OUTER JOIN 来实现

    left outer join  : 左外链接    也可以   LEFT JOIN

     SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
     FROM students s
     lEFT OUTER JOIN classes c
     ON s.class_id = c.id;

     RIGHT OUTER JOIN返回右表都存在的行。如果某一行仅在右表存在,那么结果集就会以NULL填充剩下的字段。

     

    right outer join: 右外链接   也可以   RIGHT JOIN

     SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
     FROM students s
     RIGHT OUTER JOIN classes c
     ON s.class_id = c.id;

     LEFT OUTER JOIN则返回左表都存在的行。如果某一行仅在左表存在,那么结果集就会以NULL填充剩下的字段。

 

     FULL OUTER JOIN:取并集

     SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
     FROM students s
     FULL OUTER JOIN classes c
     ON s.class_id = c.id;

     它会把两张表的所有记录全部选择出来,并且,自动把对方不存在的列填充为NULL

 

 

     

      A inner join B 取交集。

      A left join B 取 A 全部,B 没有对应的值为 null。

      A right join B 取 B 全部 A 没有对应的值为 null。

      A full outer join B 取并集,彼此没有对应的值为 null。

          对应条件在 on 后面填写。

 

     

 

    

     

 

posted @ 2021-05-06 15:48  I若水  阅读(114)  评论(0编辑  收藏  举报