https://blog.csdn.net/lukabruce/article/details/80568796
LEFT JOIN、RIGHT JOIN、INNER JOIN以及CROSS JOIN的区别
LEFT JOIN
返回 左表的所有记录
以及 右表中与左表联结字段相等的记录
;
RIGHT JOIN
返回 右表的所有记录
以及 左表中与右表联结字段相等的记录
;right join
INNER JOIN
返回 两个表中联结字段相等的记录
;inner join
CROSS JOIN
把表A和表B的数据进行一个N*M的组合,即笛卡尔积,使用较少,后面不能跟ON
关键字;
FULL JOIN
MySql没有FULL JOIN,但是可以用union实现
基本语法
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;
网友评论