Oralce中各种连接的使用

最常用的几种连接的使用:内连接,外连接,左(外,内)连接,右(外,内)连接,全(不分左右)连接,交叉连接(笛卡尔集),自连接(同一个表的权级结构)。连接一般用于多表之间复杂的查询。

内连接,即相等连接,等值连接,如右两张表 dept ,employee。
dept里有字段deptid,deptname,employee有字段empno,deptid,ename,sal,age等
那连接查询语句如下:select A.* ,B.* from dept A,employee B where A.deptid=B.deptid
一般出现这种情况的是一张是主表,另一张是子表,主表的主键作为子表的外键,显示结果按照子表的显示, 内连接简单,不多说。

 外连接在oralce里用(+)表示被补充的一方。
右连接指的是右边是主表,左连接指的是左边是主表。
01右外连接。例子:
select empno,ename,sal,emp.deptno,dept.deptno from emp,dept where emp.deptno(+) =dept.deptno;
02左外连接。例子:
select empno,ename,sal,emp.deptno,dept.deptno from emp,dept where dept.no=emp.deptno(+)

两个查询显示的查询结果是一样的,记忆方法:(+)出现查询条件的左边即右连接(右边为主),出现在右边即左连接(左边为主)。也就是说左右是指主表的左右,而不是(+)代表的从表或者称作被补充的那个表的左右。
因为
左右是相对的,右联结A、B表的结果和左联结B、A的结果是一样的,也就是说:
Select A.name B.name From A Left Join B On A.id=B.id
和Select A.name B.name From B Right Join A on B.id=A.id执行后的结果是一样的。

03全外关联:FULL OUTER JOIN
SELECT e.last_name, e.department_id, d.department_name 
FROM employees e 
FULL OUTER JOIN departments d 
ON (e.department_id = d.department_id); 
结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录和没有任何员工的部门记录。 (只要是查询中提到了的表的字段都会取出,无论是否符合联结条件,因此最好记忆)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值