Oracle数据库的多表查询

    在说明多表查询之前,需要先介绍笛卡尔积。

    什么是笛卡尔积?

    笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成 员而第二个对象是Y的所有可能有序对的其中一个成员。下图可以说明两个数据表之间的笛卡尔积:

                        

 

   

这个结果是没有意义的,因为部门id都不同,所以要筛选条件

 

emp.deptno = dept.deptno;

笛卡尔积(多表查询)的几种筛选方式:

1、等值连接:查询员工信息以及员工号,姓名,月薪,部门

	select e.id,e.name,e.salary,e.dept from emp e,dept d where e.deptno = e.deptno;	

2、不等值连接:查询员工信息以及员工号,姓名,月薪,等级

	select e.id,e.name,e.salary,s.grade from emp e,salgrade s where e.salary  between s.losal and s.histal;	

3、外连接:把某些不成立的记录仍然包含在最后的结果中(where ...=...不成立的记录)

 

    (1)左外连接:当where A = B 不成立的时候,等号左边的表仍然被包含在最后的结果中

where A = B(+);

    (2)右外连接:当where A = B 不成立的时候,等号右边的表仍然被包含在最后的结果中

 

where A(+) = B;

4、自连接:对同一张表的多个关联字段进行查询(假设有多张表)

select * from  A a1,A a2 where a1.aid = a2.bid;

  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BoringError

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值