当前位置:   article > 正文

Oracle学习XIII —— Oracle连接查询_oracle的join菜鸟

oracle的join菜鸟

Oracle连接查询

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

内连接

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

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

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

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

----内联接方法一
select a.stuid,
       a.stuname,
       a.classno,
       b.classno,
       b.classname,
       b.monitorid,
       b.monitorname,
       b.classaddress
  from stuinfo a, class b
 where a.classno = b.classno;

--内联接方法二
select a.stuid,
       a.stuname,
       a.classno,
       b.classno,
       b.classname,
       b.monitorid,
       b.monitorname,
       b.classaddress
  from stuinfo a
 inner join class b on a.classno = b.classno;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

结果如下:
内联接查询结果

外联接

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

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

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

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

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

left join(左联接)

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

结果如下:
左联接查询结果

right join(右联接)

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

结果如下:
右联接查询结果

full join(全外联接)

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

结果如下:
全外联接查询结果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/189064
推荐阅读
相关标签
  

闽ICP备14008679号