战五渣系列之一(sql中的join)

1.为什么第一篇文章就是sql呢,因为最近看到一个文章

2副图秒懂SQL中的join .(最重要的是在我遇到的程序员中,不懂join和left join的区别的有很多,促使我不得不战五渣)

2.且看我如何战五渣!

什么是left join?

表:department,employee
需求:查询部门5(dept.id=5)下面所有的员工
sql:select * from dept left join emp on dept.id = emp.deptid where dept.id=5
查询结果:(2种类型)该部门下有员工、该部门下没有员工
说明:左表一定会查出数据(满足where条件),右表只需满足on的条件。

部门 员工
研发部 一贱
研发部 二贱
研发部 三贱


或者

部门 员工
研发部


什么是join?

表:department,employee,salary

需求:查询部门5发了工资的员工工资情况。
sql:select * from emp join sal on emp.id = sal.empid where emp.deptid=5
查询结果:没发工资的不会查出来
说明:左右表的数据必须是1对1的,左表的数据不但受到where条件的约束还受到右表数据的约束

(三贱没有发工资)

员工 工资
一贱 20k
二贱 20k


(都没有发工资)

员工 工资


如果改为left join 呢?需求就变为查询部门5所有员工的工资发放情况,如下:

select * from emp left join sal on emp.id = sal.empid where emp.deptid=5

(三贱没有发工资)

员工 工资
一贱 20k
二贱 20k
三贱

(都没有发工资)

员工 工资
一贱
二贱
三贱

什么是right join?

在我1000多天的职业生涯中还想不出什么情况下会使用right join。

3.重要点

  • on条件只约束关联表。
  • left join左表一定有数据
  • join一定是1对1

4.那么问题来了:查询蓝翔的教练有没有配备挖掘机该用left join 还是 join ?

你可能感兴趣的:(JavaWeb战五渣系列,join,left-join)