Oracle多表查询(1)

一、多表连接类型
1.第一种分类:内外分
内连接:inner(等值连接、非等值连接、自连接)
外连接:左外链接、右外链接、完全外连接
比较生成的集合体:内连接生成的集合体,是两张表或者是多张表中相等的记录。
外连接:外连接生成的集合体:两张表或者是多张表中相等的记录;两张表中不等的记录。
左外链接:两张表或者是多张表中相等的记录;左表中不等的记录。
表1:emp 表 2: dept
empno ename deptno deptno dname
1 2 10 10 4
5 6 10 10 8
9 10 10
    30
左外连接的结果:(10,30)-------->相等的deptno加左表中不等的deptno
右外链接:两张表或者是多张表中相等的记录,右表中不等的记录。
表1:emp 表 2: dept
empno ename deptno deptno dname
1 2 10 10 4
5 6 10 20 8
9 10 10
    30
右外连接的结果:(10,20)-------->相等的deptno加右表中不等的deptno
完全外连接:两张表或者是多张表哦中相等的记录,两表中不等的记录。
表1:emp 表 2: dept
empno ename deptno deptno dname
1 2 10 10 4
5 6 10 20 8
9 10 10
    30
完全外连接的结果:(10,20,30)-------->相等的deptno加两表中不等的deptno
例如:查找员工信息和全部的部门信息
a.假设不是全部:
select e.ename,d.dname,d.deptno
from emp e,dept d
where e.deptno=d.deptno;
b.全部:
select e.ename,d.dname,d.deptno
from emp e,dept d
where e.deptno(+)=d.deptno;
2.第二种分类:是否有连接条件(where)
有条件:如果连接语句中带着where子句
无条件(笛卡尔积):如果连接与剧中不带where子句
表1 * 表2
sno sname cno cname
1 2 3 4
5 6 7 8
9 10
1234,1278,5634,5678,91034,91078
将多个数据表中记录数做乘积运算,就生成了笛卡尔积集合体。
笛卡尔积只有在做软件测试的时候,压力测试,模拟大数据集合体。
例如: 做emp 数据表和dept数据表的笛卡尔积
select emp.,dept. from dept,emp;
3.第三种分类:看连接条件
等值链接:如果连接条件使用的是"="运算符
例如:查询10部门员工的部门名称
selectc emp.ename,dept.dname from emp,dept where emp.deptno=dept.deptno and dept.deptno=10;
例如:根据SALGRADE表中的数据查询雇员的工资等级
select e.ename,e.sal,s.grade from emp e,salgrade s where e.sal between s.losal and s.hisal;
非等值链接:如果连接条件使用的不是=运算符
第四种分类:看做的连接数据表的数量
多表连接(两个以上的表)和自连接(自己连接自己)
例如:查找每个员工的上级主管人员
select e.ename,m.ename
from emp e,emp m
where e.mgr=m.empno;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值