SQL经典实例(三)多表查询

介绍如何利用连接查询和集合运算来合并多个表中的数据。
表名:emp,dept
1.叠加两个行集

select ename as ename_and_dname ,deptno
from emp
where deptno=10
union all

select dname,deptno
from dept
--
select deptno
from emp
--where deptno=10
union all
select deptno
from dept

2.合并相关行

select e.ename,d.loc
from emp e,dept d
where e.deptno = d.deptno

结果:
在这里插入图片描述

3.查找两个表中相同的行

--创建视图V
create view V
as
select ename,job,sal
from emp where job = 'CLERK'

select *  from V

--查找V和emp中相同行
select emp.EMPNO,emp.ENAME,emp.JOB,emp.SAL,emp.DEPTNO
from emp ,V
where emp.ENAME = V.ename
and emp.JOB = V.job
and emp.SAL = V.sal

结果:
在这里插入图片描述

4.查找只存在于一个表中的数据

select deptno
from dept
where deptno not in (select deptno from emp)

5.从一个表中检索与另一个表不相关的行

select d.*
from dept d left outer join emp e
on(d.DEPTNO=e.deptno)
where e.DEPTNO is null

6.新增链接查询而不影响其他链接查询

--使用外连接既能够获得额外信息,又不会丢失原有的信息
select e.name,d.loc,eb.received
from emp e join dept d
on(e.deptno = d.deptno)
left join emp_bonus eb
on(e.empno = eb.empno)
order by 2
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值