查询数据不为空的数据_数据库多表连接查询

一、简介:

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

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

1、from a,b

2、inner join

3、left outer join

4、right outer join

二、例子:

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

两个表的deptno字段关联。

表结构如下:

(1)、dept(部门表)

f4cf9de67f5f10d0226188f2fe7de830.png

(2)、emp(雇员表)

356dab2a629c41c1284bb14001569683.png

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 bwhere a.deptno = b.deptno;

结果:

4795ad70a39cc9cee547ed3a1e9ac68b.png

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

结果:

a1a14abb4a67ad575a7ae2d05719fb8e.png

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

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

结果:

d383f08462d0973c09360f21e8e2a733.png

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

结果:

12f5bad63422db123a635bccca4dd745.png

4 、right outer join 

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

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

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

outer 可以省略.

实例和结果略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值