欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > oracle 基础知识之 多表查询

oracle 基础知识之 多表查询

2025/9/20 19:56:48 来源:https://blog.csdn.net/qq_22201881/article/details/146306451  浏览:    关键词:oracle 基础知识之 多表查询

多表查询定义:当查询的数据并不是来源一个表时,需要使用多表连接操作完成查询。多表连接查询通过表之间的关联字段,一次查询出多个表的数据。多表查询包括了等值连接、左连接、右连接、完全连接。
1.等值连接
等值连接也称为简单连接(simple joins)或者内连接(inner join)。通过等号来判断连接条件中的数据值是否相匹配,具体格式如下:
Select table1_name.fieldname,
table2_name.fieldname
from table1_name, table2_name
Where 条件句

【例1】建立雇员表,包括字段编号,姓名,岗位名称。建立职工薪水表包括职工号,姓名,工资。需要查询出编号,姓名,岗位名称,薪水信息。具体代码如下:
create table EMPLOYEE
( id_1 VARCHAR2(20),
name_1 VARCHAR2(25),
station VARCHAR2(20)
)
create table SALARY
(
id_2 VARCHAR2(20),
name_2 VARCHAR2(25),
salary NUMBER(8,2)
)
insert into employee values(‘1’,‘lily’,‘工程师’);
insert into employee values(‘3’,‘lucy’,‘项目经理’);
insert into employee values(‘5’,‘william’,‘人事经理’);
insert into employee values(‘6’,‘demon’,‘行政人员’);
insert into employee values(‘7’,‘david’,‘人事专员’);
Commit;
insert into salary values(‘1’,‘lily’,5000);
insert into salary values(‘2’,‘tom’,8000);
insert into salary values(‘3’,‘lucy’,5500);
insert into salary values(‘4’,‘linda’,3500);
insert into salary values(‘5’,‘william’,6000);
Commit;

select a.id_1,a.name_1,a.station,b.salary
from employee a,salary b
where a.id_1=b.id_2
–也可以使用关键字inner join
select a.id_1,a.name_1,a.station,b.salary
from employee a
inner join salary b
on a.id_1=b.id_2

查询结果如图3-7所示:
在这里插入图片描述

图使用内连接的查询结果

从查询结果上可以看出查询了雇员表,薪水表中编号相同的数据。

2.外连接
(1)左外连接:使用关键字 left join,以左表为准,返回左表的所有数据,右表满足关联条件的数据会全部显示,否则用 null 值去填充。
【例2】使用左连接查询出编号,姓名,岗位名称,薪水信息,代码如下:
select a.id_1,a.name_1,a.station,b.salary
from employee a
Left join salary b
on a.id_1=b.id_2 and a.name_1=b.name_2
查询结果如图3-8所示:

在这里插入图片描述

图3-8使用左连接的查询结果
该查询的主表是employee,查询记录数与employee 一致,职工号全部是employee 数据。
(2)右外连接:和左外连接相反。使用关键 right join,以右表为准,返回右表的所有数据,左表满足 on 条件的数据会全部显示,否则用 null 值去填充。
【例3-5】使用右连接查询出编号,姓名,岗位名称,薪水信息,代码如下:

select a.id_1,a.name_1,a.station,b.salary
from employee a
right join salary b
on a.id_1=b.id_2 and a.name_1=b.name_2
查询结果如图3-9下:

图3-9使用右连接的查询结果
(2)完全连接:通过关键字 full join 连接两张表,返回左表和右表的所有数据,并使用 null 值填充缺失的数据。
【例3-6】使用完全连接查询出编号,姓名,岗位名称,薪水信息,代码如下:
select a.id_1,a.name_1,b.id_2,b.name_2,a.station,b.salary
from employee a
full join salary b
on a.id_1=b.id_2 and a.name_1=b.name_2
查询结果如图3-10所示:
在这里插入图片描述

图3-10使用完全连接的查询结果
最后结果为 表A,表b的所有数据。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词