本文接上一篇
SQL语法二
1.连接join
连接分为三类:left join、right join、inner join
在这里我们新建两个表:表a和表b
此为表a
此为表b
1)left join
命令行输入
select
aid,aname,bid,bname
from
testa left join testb on aid=bid;
结果是
可以看到左表的内容是齐全的,右表的内容缺失了第五行
2)right join
命令行输入
select
aid,aname,bid,bname
from
testa right join testb on aid=bid;
结果是
可以看到右表的内容是齐全的,左表第五行是没有内容的用NULL补齐的
3)inner join
命令行输入
select
aid,aname,bid,bname
from
testa inner join testb on aid=bid;
结果是
可以看到a表和b表共同有的id 出现了。
总结:
left join 以左表为主,左表内容最全
right join以右表为主,右表内容最全
inner join 只出现on后面一致的部分,即查找索引一致的部分
2.多个表格的混合应用
这个也是我们在生产者经常遇到的
这里我们以员工表,薪水等级表,部门地址表三个表为例
员工表emp
薪资等级表salgrade
部门地址表dept
查看员工部门、部门的地址
这个的话就需要我们把员工表和部门地址表整合,这两个表的共同内容是部门编号
select
emp.ename,emp.deptno,dept.dname,dept.loc
from emp
left join dept on emp.deptno=dept.deptno;
出来的结果是
与我们想要的结果一致
接下来我们更进一步试试三个表一起使用
查询员工所在部门、部门地址、薪水等级
select
a.ename,a.deptno,b.dname,b.loc,(a.sal+ifnull(a.comm,0)) as sal,s.grade
from emp a
left join dept b on a.deptno=b.deptno
left join salgrade s on sal between s.losal and s.hisal ;
这里有两点要说明:
薪水是由工资和奖金共同组成
因为有些岗位是没有奖金的(即奖金值为null)为了防止两者相加值为null,我们这边引入了ifnull函数
MySQL IFNULL函数是MySQL控制流函数之一,它接受两个参数,如果不是NULL,则返回第一个参数。 否则,IFNULL函数返回第二个参数。
SQL语法二
最新推荐文章于 2022-12-29 11:11:47 发布