LEFT JOIN、RIGHT JOIN、INNER JOIN以及CROSS JOIN

LEFT JOIN 返回 左表的所有记录 以及 右表中与左表联结字段相等的记录

 
left join

RIGHT JOIN 返回 右表的所有记录 以及 左表中与右表联结字段相等的记录
 
right join

INNER JOIN 返回 两个表中联结字段相等的记录
 
inner join

 

CROSS JOIN 把表A和表B的数据进行一个N*M的组合,即笛卡尔积,使用较少,后面不能跟ON关键字;
FULL JOIN MySql没有FULL JOIN,但是可以用union实现

 
full join

 

基本语法

FROM 表1 LEFT JOIN 表2 ON 表1.字段号=表2.字段号
FROM 表1 RIGHT JOIN 表2 ON 表1.字段号=表2.字段号
FROM 表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号

举例说明

有两张表:


 
student表
 
persion表

查询student_number=id_card_number的数据

左联查询:

select * from persion left join student on persion.id_card_number=student.student_number;
 
左联查询结果

可以看出,左表(persion)中的所有数据都返回了,右表(student)中总共有5条数据,但是只返回了3条数据,这3天数据跟左表中的id_card_number数值是相等的。

右联查询:

select * from persion right join student on persion.id_card_number=student.student_number;
 
右联查询结果

右表数据全部返回,左表返回了和右表相同的几条。

等值连接查询

select * from persion inner join student on persion.id_card_number=student.student_number;
 
等值连接查询结果

两表取交际

AS的用法


AS就是别名的意思,其他没有区别

select * from 表1 as 表1别名 inner join 表2 as 表2别名 on 表1别名.字段=表2别名.字段;

例如

select * from table1 as t1 inner join table2 as t2 on t1.name=t2.name;


作者:andforce
链接:https://www.jianshu.com/p/21ecace52574
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted @ 2020-04-23 22:45  天涯海角路  阅读(502)  评论(0)    收藏  举报