mysql数据查询之连接查询

连接查询概念:
将多张表(大于等于 2 张表)按照某个指定的条件进行数据的拼接,其最终结果记录数可能有变化,但字段数一定会增加。



(1)交叉连接
最后得到的结果是拼在一起的,所谓的笛卡尔积的形式,这个没什么用
select * from student cross join class;



(2)内连接 : 从左表中取出每条数据,和右表中的所有数据进行匹配,当左表和右表的值相同时,结果才保留

select * from student inner join class on student.grade = class .grade;



(3)外连接:left以左边为主表,right以右边为主表,主表完整显示,另一张表匹配不成功则显示为null
左表 + left\right + join + 右表 + on + 左表.字段 = 右表.字段;
select s.*, c.id as c_id , c.grade as c_grade ,room from student as s left join class as c on s.grade = c.grade;
注:as 是取别名



(4)自然连接:自动匹配连接条件,系统以两表中同名字段作为匹配条件,分为自然内连接,和自然外连接

A:自然内连接,自动使用同名字段作为连接条件,而且在连接完成之后合并同名字段
select * from student natural join class;

B:自然外连接
select * from student natural left join class;

C:实际上,自然连接并不常用,咱们可使用内连接和外连接来模拟,模拟的关键在于使用同名字段作为连接条件及合并同名字段
select * from student left join class using (id,grade);

using内的字段名是作为连接条件的字段,也是需要合并的同名字段


猜你喜欢

转载自blog.csdn.net/dangbai01_/article/details/79892877