oracle 多表连接查询 join(一)详解编程语言

一、简介:

多表连接查询通过表之间的关联字段,一次查询多表数据。

下面将依次介绍 多表连接中的如下方法:

1、from a,b

2、inner join

3、left outer join

4、right outer join

二、例子:

以下采用oracle的scott用户中的两张表dept和emp举例,

两个表的deptno字段关联。

表结构如下:

(1)、dept(部门表)

oracle 多表连接查询 join(一)详解编程语言

(2)、emp(雇员表)

oracle 多表连接查询 join(一)详解编程语言

1、from 表1,表2

语法:select a.x,b.y from a,b where a.id=b.id;

实例:

返回所有满足where条件的行

select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门 
  from scott.emp a, scott.dept b 
 where a.deptno = b.deptno;

结果:

oracle 多表连接查询 join(一)详解编程语言

2、inner join

语法:select a.x from a inner join b on a.id=b.id;

inner 可以省略.

实例:

select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门 
  from scott.emp a  join  scott.dept b 
 on a.deptno = b.deptno ;

结果同上。

3、left outer join

查询结果除了返回包含连接条件的行,还包含左表(a)中不满足连接条件的行,

其中不满足连接条件的行中b表的字段值将被置为空。

语法:select a.x from a inner left outer join b on a.id=b.id;

outer 可以省略.

实例:

 select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门 
  from scott.emp a left outer join  scott.dept b 
 on a.deptno = b.deptno

结果:

oracle 多表连接查询 join(一)详解编程语言

当查询中出现过滤条件时:

1)当连接条件后面有where条件时:

 select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门 
  from scott.emp a left outer join  scott.dept b 
 on a.deptno = b.deptno where b.dname like 'SALES'

解释:先根据连接条件a.deptno = b.deptno查询,再对查询结果按过滤条件查询。

结果:

oracle 多表连接查询 join(一)详解编程语言

2)当连接条件后面有and条件时:

 select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门 
  from scott.emp a left outer join  scott.dept b 
 on (a.deptno = b.deptno and b.dname like 'SALES')

解释:先对b表按过滤条件查询,再对结果执行左连接查询。

结果:

oracle 多表连接查询 join(一)详解编程语言

 

4 、right outer join 

查询结果除了返回包含连接条件的行,还包含右表(b)中不满足连接条件的行,

其中不满足连接条件的行中a表的字段值将被置为空。

语法:select a.x from a inner right outer join b on a.id=b.id;

outer 可以省略.

实例和结果略。

 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/13176.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论