多表查询

多表查询
查询格式
(select 内容 from 范围 where 条件)
引入多表消除笛卡儿积
SQL> select * from emp,dept;
SQL>  select * from emp, dept where emp.deptno=dept.deptno;
指定
select  e.emp,e.ename,e.job, d.loc
from emp e,dept d
where e.deptno=d.deptno;

同一张emp组合查询
查询姓名 职位和领导姓名
select e.ename,e.job,m.ename
from emp e,emp m
where e.mgr=m.empno;

两张表组合查询
编号 姓名 基本工资 职位
姓名 部门名称 位置
思路:      1、首先确认需要的表;
    emp表可以查询雇员的编号,姓名,职位;
    dept表可以查询部门名称和位置;
    2、确定表的关联字段;
    emp.deptno=dept.deptno
select e.empno,e.ename,e.sal,e.job,m.ename,d.dname,d.loc
from emp e,emp m,dept d
where e.mgr=m.empno and e.deptno=d.deptno;

连接机制
查询字段时,需要多表关联,需要用到表别名,内连接,外连接,自然连接,自连接
一些关键连接方法。
内连接
内连接 A(inner) join  B  on  连接条件  
内连接中用join  on 取代where条件语句
内连接必须满足连接条件,不满足的信息无法显示
外连接
不同的左右链接方式产生的查询结果有差别
姓名 职位和领导姓名
左连接产生的结果
select e.ename,e.job,m.ename
from emp e left join emp m on e.mgr=m.empno;
SQL> select e.ename,e.job,m.ename
from emp e left join emp m on e.mgr=m.empno;
  2  
ENAME       JOB         ENAME
---------- --------- ----------
FORD       ANALYST   JONES
SCOTT       ANALYST   JONES
JAMES       CLERK     BLAKE
TURNER       SALESMAN  BLAKE
MARTIN       SALESMAN  BLAKE
WARD       SALESMAN  BLAKE
ALLEN       SALESMAN  BLAKE
MILLER       CLERK     CLARK
ADAMS       CLERK     SCOTT
CLARK       MANAGER   KING
BLAKE       MANAGER   KING
JONES       MANAGER   KING
SMITH       CLERK     FORD
KING       PRESIDENT

14 rows selected.

右连接产生的结果
select e.ename,e.job,m.ename
from emp e right join emp m on e.mgr=m.empno;
SQL>
select e.ename,e.job,m.ename
from emp e right join emp m on e.mgr=m.empno;SQL>   2  

ENAME       JOB         ENAME
---------- --------- ----------
SMITH       CLERK     FORD
ALLEN       SALESMAN  BLAKE
WARD       SALESMAN  BLAKE
JONES       MANAGER   KING
MARTIN       SALESMAN  BLAKE
BLAKE       MANAGER   KING
CLARK       MANAGER   KING
SCOTT       ANALYST   JONES
TURNER       SALESMAN  BLAKE
ADAMS       CLERK     SCOTT
JAMES       CLERK     BLAKE
FORD       ANALYST   JONES
MILLER       CLERK     CLARK
             TURNER
             WARD
             MARTIN
             ALLEN
             MILLER
             SMITH
             ADAMS
             JAMES

21 rows selected.

完全外连接 full  join
 select * from emp e full join dept d on e.deptno=d.deptno;
SQL> select e.empno,e.ename,d.dname from emp e full join dept d on e.deptno=d.deptno;

自然连接   natural join
Oracle 自动分区查询
缺点如果表名不确定,不能查询
自连接

注:连接必须在条件范围内查询

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值