Oracle三表联接查询实战(oracle3个表连接)

Oracle三表联接查询实战

在Oracle数据库中,通过使用联接的方式可以方便地获取多张表中的数据。在实际的应用中,三表联接查询也是非常常见的一种操作方式。本文将对Oracle三表联接查询进行详细地介绍和实战演示。

1.三表联接查询的概念和常见类型

三表联接查询,就是指同时使用三张及以上的表进行联接查询的操作。常见的三表联接查询分为左联接、右联接和内联接三种类型。其中,左联接是以左表为主,将左表中的数据与右表中匹配的数据进行合并;右联接则是以右表为主,将右表中的数据与左表中匹配的数据进行合并;内联接则是将匹配上的数据以一个新的表的形式进行呈现。

2. 实战演示

为了更好地理解三表联接查询的操作,我们在Oracle数据库中新建表并录入数据。

2.1 创建表并录入数据

创建学生表(Student)和成绩表(Score)。

create table student(
student_id number(5) primary key,
student_name varchar2(20),
student_sex varchar2(2),
student_age number(3),
student_major varchar2(20)
);

create table score(
score_id number(5) primary key,
student_id number(5),
course_name varchar2(20),
score number(3)
);

向学生表和成绩表中插入数据。

insert into student values(1,'张三','男',18,'计算机科学与技术');
insert into student values(2,'李四','女',19,'网络与新媒体');
insert into student values(3,'王五','男',20,'电子商务');
insert into score values(1,1,'Java',80);
insert into score values(2,1,'Oracle',75);
insert into score values(3,2,'Java',90);
insert into score values(4,2,'Oracle',85);
insert into score values(5,3,'Java',85);
insert into score values(6,3,'Oracle',90);

2.2 左联接查询

左联接查询是以左表(Student)为主,将左表中的数据与右表(Score)中匹配的数据进行合并的操作。在实际应用中,这种查询方式主要用于查询学生和成绩的对应情况。

使用以下代码实现左联接查询:

select *
from student left join score on student.student_id = score.student_id;

查询结果如下:

STUDENT_ID STUDENT_NAME STUDENT_SE STUDENT_AGE STUDENT_MAJOR SCORE_ID STUDENT_ID COURSE_NAME      SCORE
---------- ------------ ---------- ----------- ------------- -------- ---------- -------------------- ----------
1 张三 男 18 计算机科学与技术 1 1 Java 80
1 张三 男 18 计算机科学与技术 2 1 Oracle 75
2 李四 女 19 网络与新媒体 3 2 Java 90
2 李四 女 19 网络与新媒体 4 2 Oracle 85
3 王五 男 20 电子商务 5 3 Java 85
3 王五 男 20 电子商务 6 3 Oracle 90

6 rows selected.

2.3 右联接查询

右联接查询是以右表(Score)为主,将右表中的数据与左表(Student)中匹配的数据进行合并的操作。在实际应用中,这种查询方式主要用于查询成绩和对应学生的信息。

使用以下代码实现右联接查询:

select *
from student right join score on student.student_id = score.student_id;

查询结果如下:

STUDENT_ID STUDENT_NAME STUDENT_SE STUDENT_AGE STUDENT_MAJOR SCORE_ID STUDENT_ID COURSE_NAME      SCORE
---------- ------------ ---------- ----------- ------------- -------- ---------- -------------------- ----------
1 张三 男 18 计算机科学与技术 1 1 Java 80
1 张三 男 18 计算机科学与技术 2 1 Oracle 75
2 李四 女 19 网络与新媒体 3 2 Java 90
2 李四 女 19 网络与新媒体 4 2 Oracle 85
3 王五 男 20 电子商务 5 3 Java 85
3 王五 男 20 电子商务 6 3 Oracle 90

6 rows selected.

2.4 内联接查询

内联接查询是将匹配上的数据以一个新的表的形式进行呈现的操作。在实际应用中,这种查询方式主要用于查询学生和成绩的交叉情况。

使用以下代码实现内联接查询:

select *
from student inner join score on student.student_id = score.student_id;

查询结果如下:

STUDENT_ID STUDENT_NAME STUDENT_SE STUDENT_AGE STUDENT_MAJOR SCORE_ID STUDENT_ID COURSE_NAME      SCORE
---------- ------------ ---------- ----------- ------------- -------- ---------- -------------------- ----------
1 张三 男 18 计算机科学与技术 1 1 Java 80
1 张三 男 18 计算机科学与技术 2 1 Oracle 75
2 李四 女 19 网络与新媒体 3 2 Java 90
2 李四 女 19 网络与新媒体 4 2 Oracle 85
3 王五 男 20 电子商务 5 3 Java 85
3 王五 男 20 电子商务 6 3 Oracle 90

6 rows selected.

3.总结

三表联接查询在Oracle数据库中是一种实用性很高的操作方式,三种常见类型中的使用方法也各有不同。在实际应用中,根据不同的查询需求,可以选择合适的联接类型,并且借助Oracle数据库提供的联接语句实现对多张表的联接查询。


数据运维技术 » Oracle三表联接查询实战(oracle3个表连接)