SQL join的介绍

学员表

SELECT * FROM tb_address;

SELECT * FROM tb_student

1.JOIN关联两个表数据,将匹配数据展示,数据无匹配值则不展示

注释:INNER JOIN与JOIN是相同

SELECT
*
FROM
tb_student stu
JOIN tb_address address
ON stu.`id` = address.`stu_id` ;

 

 2.LEFT JOIN返回左表的全部行和右表满足ON条件的行,如果左表的行在右表中没有匹配,那么这一行右表中对应数据用NULL代替。

举例如下 从 student角度查询对应的address数据,student信息全部展示,没有对应address值展示null

SELECT 

*
FROM
tb_student stu
LEFT JOIN tb_address address
ON stu.`id` = address.`stu_id` ;

 

3.RIGHT JOIN返回右表的全部行和左表满足ON条件的行,如果右表的行在左表中没有匹配,那么这一行左表中对应数据用NULL代替。

举例如下 从 address角度查询对应学员信息,address表数据全部展示,无对应学员信息则展示null

SELECT 

*
FROM
tb_student stu
RIGHT JOIN tb_address address
ON stu.`id` = address.`stu_id` ;

 

4.FULL JOIN 会从左表 和右表 那里返回所有的行。如果其中一个表的数据行在另一个表中没有匹配的行,那么对面的数据用NULL代替

不常用,有时候数据库不支持

 

举例:

学员课程表关联学员班主任表,学员班主任可以为空,且去除无效数据

错误:

关联后,再取表中deleted = 0数据,会将null值排除,数据会遗漏

正确:

关联表时取表中有效数据

 

posted @ 2019-02-22 10:51  snoweveryday  阅读(254)  评论(0编辑  收藏  举报