Oracle数据库三张表连接查询实例(oracle 三张表连接)
Oracle数据库三张表连接查询实例
连接查询是数据库查询操作中常见的一种方式,它可以将多张表中的数据连接起来,便于进行复杂的数据分析和查询操作。在Oracle数据库中,连接查询有两种方式:内连接和外连接。本文将介绍三张表的连接查询实例,帮助读者掌握Oracle数据库中的连接查询操作。
步骤一:创建三张表
为了演示连接查询实例,我们需要创建三张表:学生表(students)、课程表(courses)和成绩表(scores)。三张表的设计如下:
CREATE TABLE students (
id INT PRIMARY KEY, name VARCHAR2(50),
gender VARCHAR2(10), age INT,
class VARCHAR2(20));
CREATE TABLE courses ( id INT PRIMARY KEY,
name VARCHAR2(50));
CREATE TABLE scores ( id INT PRIMARY KEY,
student_id INT, course_id INT,
score FLOAT, CONSTRNT fk_student FOREIGN KEY(student_id) REFERENCES students(id),
CONSTRNT fk_course FOREIGN KEY(course_id) REFERENCES courses(id));
步骤二:插入数据
为了使本文的演示更加生动,我们需要往三张表中插入一些数据。三张表的数据如下:
学生表(students):
INSERT INTO students(id, name, gender, age, class) VALUES(1, '张三', '男', 18, '三年一班');
INSERT INTO students(id, name, gender, age, class) VALUES(2, '李四', '女', 17, '三年二班');INSERT INTO students(id, name, gender, age, class) VALUES(3, '王五', '女', 19, '三年三班');
课程表(courses):
INSERT INTO courses(id, name) VALUES(1, '数学');
INSERT INTO courses(id, name) VALUES(2, '英语');
成绩表(scores):
INSERT INTO scores(id, student_id, course_id, score) VALUES(1, 1, 1, 90);
INSERT INTO scores(id, student_id, course_id, score) VALUES(2, 1, 2, 85);INSERT INTO scores(id, student_id, course_id, score) VALUES(3, 2, 1, 95);
INSERT INTO scores(id, student_id, course_id, score) VALUES(4, 2, 2, 80);INSERT INTO scores(id, student_id, course_id, score) VALUES(5, 3, 1, 88);
INSERT INTO scores(id, student_id, course_id, score) VALUES(6, 3, 2, 78);
步骤三:内连接查询
在Oracle数据库中,使用INNER JOIN操作符可以进行内连接查询。内连接查询是指,只查询两张表中都存在的数据,并将它们连接起来。例如,我们可以通过内连接查询,查看每个学生所选的课程和对应的成绩。以下是内连接查询的示例代码:
SELECT students.name, courses.name, scores.score
FROM studentsINNER JOIN scores ON students.id = scores.student_id
INNER JOIN courses ON scores.course_id = courses.id;
执行以上查询语句后,会得到以下结果:
名称 课程 分数
-------------------张三 数学 90
张三 英语 85李四 数学 95
李四 英语 80王五 数学 88
王五 英语 78
步骤四:左连接查询
左连接查询是指,将左表(左数据源)中的所有数据都查询出来,而右表(右数据源)中与左表匹配的数据也会查询出来。如果右表中没有与左表匹配的数据,则查询结果中会用NULL值填充。在Oracle数据库中,使用LEFT JOIN操作符可以进行左连接查询。例如,我们可以通过左连接查询,查看每门课程的选修人员和对应的成绩。以下是左连接查询的示例代码:
SELECT courses.name, students.name, scores.score
FROM coursesLEFT JOIN scores ON courses.id = scores.course_id
LEFT JOIN students ON scores.student_id = students.id;
执行以上查询语句后,会得到以下结果:
课程 学生 分数
------------------数学 张三 90
数学 李四 95数学 王五 88
英语 张三 85英语 李四 80
英语 王五 78
步骤五:右连接查询
右连接查询是左连接查询的反向操作,它考虑的是右表是不是存在匹配,而不是左表。在Oracle数据库中,使用RIGHT JOIN操作符可以进行右连接查询。例如,我们可以通过右连接查询,查看每个学生的选修情况和对应的成绩。以下是右连接查询的示例代码:
SELECT students.name, courses.name, scores.score
FROM studentsRIGHT JOIN scores ON students.id = scores.student_id
RIGHT JOIN courses ON scores.course_id = courses.id;
执行以上查询语句后,会得到以下结果:
学生 课程 分数
------------------张三 数学 90
李四 数学 95王五 数学 88
张三 英语 85李四 英语 80
王五 英语 78NULL 物理 95
NULL 化学 80
总结:
连接查询在数据库操作中起着重要作用。本文介绍了Oracle数据库中的内连接查询、左连接查询和右连接查询,并以三张表的连接查询实例为例,帮助读者掌握Oracle数据库中的连接查询操作。