课程表

Oracle 基础教程

Oracle 进阶教程

Oracle PL/SQL

Oracle OEM

Oracle 备份和恢复

Oracle RAC

工具箱
速查手册

Oracle 连接查询

当前位置:免费教程 » 数据库/运维 » Oracle

Oracle连接查询,包含内关联(inner jion )和外关联(outer join),其中外关联又分为左外关联(left outer join)、右外关联(right outer join)和全外关联(full outer join)其中外关联可以使用(+)来表示。

内连接

Oracle内连接:两张表通过某个字段进行内关联,查询结果是通过该字段按关系运算符匹配出的数据行。其中可以包括:

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

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

案例所需表结构:学生信息系统

案例1、查询学生信息表(stuinfo)的学生信息,关联查询该学生的班级信息(class)。

代码如下:

  1. select a.stuid,
  2.        a.stuname,
  3.        a.classno,
  4.        b.classno,
  5.        b.classname,
  6.        b.monitorid,
  7.        b.monitorname,
  8.        b.classaddress
  9.   from stuinfo a, class b
  10.  where a.classno = b.classno;

结果如下:

1.jpg


外连接:

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

1、left join(左联接)等价于(left outer join)返回包括左表中的所有记录和右表中联结字段相等的记录。

2、right join(右联接)等价于(right outer join)返回包括右表中的所有记录和左表中联结字段相等的记录。

3.、full join (全连接)等价于(full outer join)查询结果等于左外连接和右外连接的和。

下面案例利用学生信息表(stuinfo)和之前的备份表(stuinfo_2018)做案例解析:

stuinfo表数据:

2.jpg

stuinfo_2018表数据:

3.jpg

案例2、left join(左联接)

代码:

  1. --左外连接(stuinfo表中数据都存在,stuinfo_2018不在stuinfo中存在的学生相关字段为null值)
  2. select a.*, b.stuid, b.stuname
  3.   from stuinfo a
  4.   left join stuinfo_2018 b
  5.     on a.stuid = b.stuid;
  6. --左外连接(利用(+)在右边)另外一种写法
  7. select a.*, b.stuid, b.stuname
  8.   from stuinfo a,stuinfo_2018 b 
  9.   where a.stuid=b.stuid(+);

结果如下:

4.jpg

案例3、right join(右连接)

代码:

  1. --右外连接(stuinfo_2018表中数据都存在,stuinfo不在stuinfo_2018存在的学生相关字段为null值)
  2. select a.*, b.stuid, b.stuname
  3.   from stuinfo a
  4.   right join stuinfo_2018 b
  5.     on a.stuid = b.stuid;
  6. --右外连接(利用(+)在左边)另外一种写法
  7. select a.*, b.stuid, b.stuname
  8.   from stuinfo a,stuinfo_2018 b 
  9.   where a.stuid(+)=b.stuid;

结果如下:

5.jpg

案例4、full join(全外连接)

代码:

  1.  --(全外连接(stuinfostuinfo_2018表中数据都存在,
  2.  --stuinfo不在stuinfo_2018存在的学生相关字段为null值,
  3.  --stuinfo_2018不在stuinfo存在的学生相关字段为null值)
  4. select a.*, b.stuid, b.stuname
  5.   from stuinfo a
  6.   full join stuinfo_2018 b
  7.     on a.stuid = b.stuid;

结果如下:

6.jpg

转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号