7.多表查询

一:多表查询必须至少有一个条件 

--(1)要求显示雇员的名字、工资及所在部门的名称 (emp,dept)
select ename,sal,dname from emp,dept where emp.deptno=dept.deptno

--(2)如何显示部门编号为10的部门名、员工名和工资?
select dname,ename,sal from dept,emp where emp.deptno=10 and emp.deptno=dept.deptno

--(3)显示雇员名、雇员工资及所在部门的名字,并按照部门名称进行排序。
select ename,sal,dname from dept,emp where emp.deptno=dept.deptno order by dname

二:内连接

特点:特点:只有两张表同时匹配上,才会显示出来

语法结构:select列名 from 表1 inner join 表2 on条件

--(1)显示员工的信息和部门名称
select emp.*,dname from emp inner join dept on emp.deptno=dept.deptno
--select emp.*,dname from emp,dept where emp.deptno=dept.deptno

三:外连接
  (1)左连接  :左侧的表完全显示
  语法结构: select 列名 from 表1 left join 表2 on 条件
--(1) 显示所有员工的姓名和部门名称,如果员工没有部门,也要显示员工的名字
select ename,dname,emp.deptno from emp left join dept on emp.deptno=dept.deptno   --第一种方法
select ename,dname,emp.deptno from emp,dept where emp.deptno=dept.deptno(+)    --第二种方法
(2)右连接:右边的表完全显示
语法结构: select 列名 from 表1 right join 表2 on 条件
--(2) 显示员工的名字和部门名称,要显示所有部门,即使部门里没有员工。
select ename,dname,emp.deptno from emp right join dept on emp.deptno=dept.deptno  --第一种方法
select ename,dname,emp.deptno from emp,dept where emp.deptno(+)=dept.deptno    --第二种方法

(3)完全连接:完全显示两张表,没有匹配的记录置为空
语法结构: Select 列名 from 表1 full outer join 表2 on 条件
--(3)完全显示两张表,没有匹配的记录置为空,显示所有员工的名字和所有部门的名字
select ename,dname,emp.deptno from emp full outer join dept on emp.deptno=dept.deptno  
四:自连接
    自连接: 指的是在同一张表中的连接查询
--(1)要显示RACHEL的上级领导的姓名
select ename from emp where empno=(select mgr from emp where ename='RACHEL')
select * from emp

--(2)显示员工的姓名和上级领导的姓名  worker.mgr=boss.empno
select worker.ename,boss.ename from emp worker,emp boss where worker.mgr=boss.empno







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值