Oracle中内连接查询(inner join),自然连接查询(natural join),自连接查询,外连接查询(outer join),左外连接(left join),右外连接(right joi

内连接查询(inner join)

内连接查询:列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。

语法:           

select 列名1,.. from 表1 [inner] join 表2on 条件where 条件;

 内连接分2种:

(1)等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。

查询出每一位雇员所有信息及所在部门信息

select  *  fromemp e  join  dept  d  on  e.deptno=d.deptno

(2)不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。

         select * from emp e inner join dept d one.deptno>d.deptno;

自然连接查询(natural join)

自然连接是在笛卡尔积R×S中选出同名属性上符合相等条件元组,再进行投影,去掉重复的同名属性,组成新的关系。

语法:

select 列名1,.. from 表1 natural  join 表2  where 条件;

示例:

查询出每一位雇员所有信息及所在部门信息

select *from emp natural join dept;


自连接查询

如果在一个连接查询中,涉及到的两个表都是同一个表,这种查询称为自连接查询。

示例:

查询所有员工名字及其上级的名字。


select e1.ename,e2.ename manager from emp e1,emp e2 wheree1.mgr=e2.empno;

查询'FORD'的上级信息

select e2.* from emp e1,emp e2 where e1.mgr=e2.empno ande1.ename=’FORD’;

外连接查询(outer join)

外连接指返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接或左连接))、右表(右外连接或右连接)或两个边接表(全外连接)中的所有数据行。

外连接分为三种:左外连接、右外连接和完全外连接。

下面示例以该表为基础:


左外连接(leftjoin)

概念:返回包括左表中的所有记录和右表中联结字段相等的记录。

语法:

select 列名1,列名2,.. from 表1 left[outer] join 表2 on 条件;

或者

select列名1,列名2,.. from 表1,表2 where 条件1=条件2(+);

示例:

查询所有人的成绩,如果没有成绩,也要显示该人的姓名和id号,成绩显示为空

select stu.id,name,grade from stu left join examon stu.id=exam.id;

select stu.id,name,grade from stu,exam wherestu.id=exam.id(+);

右外连接(rightjoin)

概念:返回包括右表中的所有记录和左表中联结字段相等的记录;

语法:

select 列名1,列名2,.. from 表1 right [outer]join 表2 on 条件;

或者

select列名1,列名2,.. from 表1,表2 where 条件1(+)=条件2;

示例:

查询所有成绩,如果没有名字匹配,显示空。

select stu.id,name,grade from stu right join examon stu.id=exam.id;

select stu.id,name,grade from stu,exam wherestu.id(+)=exam.id;

完全外连接(fulljoin)

概念:返回查询结果等于左外连接和右外连接的和。

语法:

select 列名1,列名2,.. from 表1 full [outer]join 表2 on 条件;

示例:

查询所有成绩,如果没有名字匹配,显示空。

select stu.id,name,grade from stu full join examon stu.id=exam.id;


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值