编程技术文章分享与教程

网站首页 > 技术文章 正文

oracle 多表连接查询 join(一)(oracle多表联查效率优化)

hmc789 2024-11-16 20:54:50 技术文章 2 ℃

一、简介:

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

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

1、from a,b

2、inner join

3、left outer join

4、right outer join

二、例子:

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

两个表的deptno字段关联。

表结构如下:

(1)、dept(部门表)

(2)、emp(雇员表)

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;

结果:

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

结果:

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

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查询,再对查询结果按过滤条件查询。

结果:

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表按过滤条件查询,再对结果执行左连接查询。

结果:


4 、right outer join

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

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

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

outer 可以省略.

实例和结果略。

Tags:

标签列表
最新留言