Sql联合查询

https://blog.csdn.net/lukabruce/article/details/80568796

LEFT JOIN、RIGHT JOIN、INNER JOIN以及CROSS JOIN的区别

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

Sql联合查询_第1张图片
left join

RIGHT JOIN 返回 右表的所有记录 以及 左表中与右表联结字段相等的记录
Sql联合查询_第2张图片
right join

INNER JOIN 返回 两个表中联结字段相等的记录
Sql联合查询_第3张图片
inner join

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

Sql联合查询_第4张图片
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.字段号

举例说明

有两张表:


Sql联合查询_第5张图片
student表
Sql联合查询_第6张图片
persion表

查询student_number=id_card_number的数据

左联查询:

select * from persion left join student on persion.id_card_number=student.student_number;
Sql联合查询_第7张图片
左联查询结果

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

右联查询:

select * from persion right join student on persion.id_card_number=student.student_number;
Sql联合查询_第8张图片
右联查询结果

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

等值连接查询

select * from persion inner join student on persion.id_card_number=student.student_number;
Sql联合查询_第9张图片
等值连接查询结果

两表取交际

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;

你可能感兴趣的:(Sql联合查询)