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数据库提供的联接语句实现对多张表的联接查询。