Oracle多表查询(自连接、内连接、外连接)

本文详细介绍了SQL中的四种主要连接类型:自连接、内连接、外连接及多表连接。通过具体的SQL语句示例,展示了如何查询不同表之间的关联数据,帮助读者更好地理解和运用SQL连接技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 自连接

将一张表作为两张表看待进行的连接

FROM table t1 JOIN table t2 ON t1.col = t2.col

1.1 查询整个员工表select * from emp;

1.2 查询员工的姓名和他对应的管理者的姓名

select w.ename,m.ename from emp w join emp m on w.mgr = m.empno;

2. 内连接

在每个表中找出符合条件的共有记录。[x inner join y on...]

FROM table t1 INNER JOIN table t2 ON t1.col = t2.col

select ename,d.deptno,dname from emp INNER join dept d on emp.deptno = d.deptno;

3. 外连接

使用空行匹配非匹配行的连接

FROM table1 [<LEFT | RIGHT | FULL> OUTER] JOIN table2ON t1.col = t2.col

3.1 查询整个部门表select * from dept;

3.2 右外连接:右边表全部显示,左边的表用空行匹配没有匹配的行。

select ename,d.deptno,dname from emp right outer join dept d on emp.deptno = d.deptno       

3.3 ​左外连接:左边的表全部显示,右边的表用空行匹配没有匹配的行。

select ename,d.deptno,dname from emp left outer join dept d on emp.deptno = d.deptno

3.4 完全外连接:两边的表都会用空行匹配非匹配的行。

select ename,d.deptno,dname from emp full outer join dept d on emp.deptno = d.deptno

4. 连接更多表

FROM table1 JOIN table2 ON t1.col = t2.col

                     JOIN table3 ON t1. col= t3.col

select ename,dept.deptno,dname,grade
from emp join dept on emp.deptno = dept.deptno
         join salgrade on sal BETWEEN losal AND hisal;

 

 

 

 

    

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值