关于连接Joins

SQL join 用于把来自两个或多个表的行结合起来。

如果我们需要把多个表的结果组合查询出来,应该怎么做?

先来个例子:

有两个表:老师表和课程表,注意看它们之间的对应关系,注意看查询结果的差别

问题一:查询出所有老师对应的课程

select t1.name,t2.name from teacher t1
left join course t2 on t1.id=t2.teacher_id;

 结果:

这就是左连接:left join table2 on

 问题二:查询出所有课程对应的老师

扫描二维码关注公众号,回复: 13583597 查看本文章
select * from teacher t1
right join course t2 on t1.id=t2.teacher_id;

结果:

这就是右连接:right join table2 on

问题三:查询出有老师教的课程

select * from teacher t1
inner join course t2 on t1.id=t2.teacher_id;

结果:

这就是内连接:inner join table2 on 

问题四:查询出所有的老师和课程,及它们之间存在的关系

full outer join

 mysql支持全连接,但可以通过左外连接+union+右外连接实现

(select * from teacher t1
left join course t2 on t1.id=t2.teacher_id)
union
(select * from teacher t1
right join course t2 on t1.id=t2.teacher_id)

总结:

  • INNER JOIN:如果表中有至少一个匹配,则返回行(常用)
  • LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行(常用)
  • RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN:只要其中一个表中存在匹配,则返回行(mysql不支持)
  • SELF JOIN:用于将表连接到自己,就好像该表是两个表一样,临时重命名了SQL语句中的至少一个表(也即是自连接)

所以基本掌握INNER JOIN LEFT JOIN 就差不多可以了。

猜你喜欢

转载自blog.csdn.net/yiguang_820/article/details/119546697