
Oracle 多表查询
发布日期:2021-05-07 19:44:22
浏览次数:19
分类:精选文章
本文共 1897 字,大约阅读时间需要 6 分钟。
文章目录
一、多表连接基本查询
使用一张以上的表做查询就是多表查询
语法: SELECT {DISTINCT} *|列名… FROM 表名 别名,表名 1 别名 {WHERE 限制条件 ORDER BY 排序字段 ASC|DESC…}-
范例:查询员工表和部门表
我们发现产生的记录数是 56 条,我们还会发现 emp 表是 14 条, dept 表是 4 条, 56 正是 emp 表和 dept 表的记录数的乘积,我们称其为笛卡尔积。
如果多张表进行一起查询而且每张表的数据很大的话笛卡尔积就会变得非常大,对性能造
成影响,想要去掉笛卡尔积我们需要关联查询。 在两张表中我们发现有一个共同的字段是 depno, depno 就是两张表的关联的字段,我们可 以使用这个字段来做限制条件,两张表的关联查询字段一般是其中一张表的主键,另一张表的 外键。关联之后我们发现数据条数是 14 条,不在是 56 条。 多表查询我们可以为每一张表起一个别名
-
查询出雇员的编号,姓名,部门的编号和名称,地址
-
范例:查询出每个员工的上级领导
分析: emp 表中的 mgr 字段是当前雇员的上级领导的编号,所以该字段对 emp 表产生了自身关联,可以使用 mgr 字段和 empno 来关联 -
范例:在上一个例子的基础上查询该员工的部门名称
-
范例:查询出每个员工编号,姓名,部门名称,工资等级和他的上级领导的姓名,工资等级
select e.empno,e.ename, decode(s.grade, 1,'一级', 2,'二级', 3,'三级', 4,'四级', 5,'五级') grade, d.dname,e1.empno,e1.ename, decode(s1.grade, 1,'一级', 2,'二级', 3,'三级', 4,'四级', 5,'五级') gradefrom emp e, emp e1, dept d, salgrade s, salgrade s1where e.mgr = e1.empnoand e.deptno = d.deptnoand e.sal between s.losal and s.hisaland e1.sal between s1.losal and s1.hisal
---笛卡尔积select * from emp e, dept d;---等值连接select *from emp e, dept dwhere e.deptno=d.deptno;---内连接select *from emp e inner join dept don e.deptno = d.deptno;
二、外连接(左右连接)
-
右连接
当我们在做基本连接查询的时候,查询出所有的部门下的员工,我们发现编号为 40 的部门下没有员工,但是要求把该部门也展示出来,我们发现上面的基本查询是办不到的使用(+)表示左连接或者右连接,当(+)在左边表的关联条件字段上时是左连接,如果是在右 边表的关联条件字段上就是右连接。
-
范例:查询出所有员工的上级领导
分析:我们发现使用我们以前的做法发现 KING 的上级领导没有被展示,我们需要使用左右连接把他查询出来
---查询出所有部门,以及部门下的员工信息。【外连接】select *from emp e right join dept don e.deptno=d.deptno;---查询所有员工信息,以及员工所属部门select *from emp e left join dept don e.deptno=d.deptno;---oracle中专用外连接select *from emp e, dept dwhere e.deptno(+) = d.deptno;select * from emp;---查询出员工姓名,员工领导姓名---自连接:自连接其实就是站在不同的角度把一张表看成多张表。select e1.ename, e2.enamefrom emp e1, emp e2where e1.mgr = e2.empno;------查询出员工姓名,员工部门名称,员工领导姓名,员工领导部门名称select e1.ename, d1.dname, e2.ename, d2.dnamefrom emp e1, emp e2, dept d1, dept d2where e1.mgr = e2.empnoand e1.deptno=d1.deptnoand e2.deptno=d2.deptno;
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月31日 00时02分48秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
mcrypt加密以及解密过程
2021-05-09
mysql连续聚合
2021-05-09
go等待N个线程完成操作总结
2021-05-09
消息队列 RocketMQ 并发量十万级
2021-05-09
ReactJs入门教程-精华版
2021-05-09
乐观锁悲观锁应用
2021-05-09
简单说说TCP三次握手、四次挥手机制
2021-05-09
.net Core 使用IHttpClientFactory请求
2021-05-09
多线程之旅(准备阶段)
2021-05-09
Python 之网络式编程
2021-05-09
MySql5.5安装步骤及MySql_Front视图配置
2021-05-09
springmvc Controller详解
2021-05-09
mybatis #{}和${}区别
2021-05-09
Java Objects工具类重点方法使用
2021-05-09
Java内存模型(JMM)
2021-05-09
AQS相关
2021-05-09