Oracle之多表查询

首先,新建测试表

表A:


表B:


一.连接查询

1.左外连接

left join即以左表记录为基础,左表记录完全显示,右表只显示满足条件的记录,记录不足的地方将显示null

SELECT* from A a LEFT JOIN B b ON a.ID=b.ID;

结果:


92语法:用+实现,+写在哪个表后面,那个表就是匹配表,此处左连接,A为基表,B为匹配表

SELECT* from A a,B b WHERE a.ID=b.ID(+);

2.右外连接

right join即以右表为基础,右表记录完全显示,左表只显示满足条件的记录,记录不足的地方将显示null

SELECT* from A a RIGHT JOIN B b ON a.ID=b.ID;

92语法:

SELECT* from A a,B b WHERE a.ID(+)=b.ID;

3.全外连接

full join 两表都不做限制,记录不足的地方都显示null

SELECT* from A a full join B b ON a.ID=b.ID;


4.内连接

join/inner join 只显示满足条件的结果,与多表查询结果一样

SELECT* from A a INNER JOIN B b ON a.ID=b.ID;

自然连接(natural join):也相当于内连接的一种,可以使用using子句选择需要用到的自然连接的列,使用using可以在多个列满足条件时选择

如:

表A:


表B:


SELECT* from A a natural join B b ;

5.自连接

只有一个表自己连接自己

新建EMP表:


需求:找出员工的管理者

分析:2是一个员工同时也是1的管理者,此时,需要用到自连接

SELECT EM.NAME employee,MAN.NAME manager from EMP em,EMP man WHERE EM.EMP_ID=MAN.MANAGER_ID; 

二.多表查询

语法:

select t1.column1,t2.column2...from
t1,t2 where t1.column=t2.column;

在where子句中写入连接条件

SELECT* from A a,B b WHERE a.ID=b.ID;



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值