SQL语法二

本文接上一篇
SQL语法二
1.连接join
连接分为三类:left join、right join、inner join
在这里我们新建两个表:表a和表b
此为表a
此为表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函数返回第二个参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值