当需要查询多个表中的数据时,就需要用到关联查询。本文将介绍如何用 Oracle 进行关联查询,并展示三张空表的创建过程。
我们需要创建三张空表:student、course 和 score,它们的结构如下:
“`sql
CREATE TABLE student (
id INTEGER PRIMARY KEY,
name VARCHAR2(50) NOT NULL,
gender VARCHAR2(10) NOT NULL
);
CREATE TABLE course (
id INTEGER PRIMARY KEY,
name VARCHAR2(50) NOT NULL,
credit FLOAT NOT NULL
);
CREATE TABLE score (
id INTEGER PRIMARY KEY,
student_id INTEGER NOT NULL,
course_id INTEGER NOT NULL,
score INTEGER NOT NULL,
FOREIGN KEY (student_id) REFERENCES student(id),
FOREIGN KEY (course_id) REFERENCES course(id)
);
以上代码会在 Oracle 数据库中创建三张空表。三张表的关系如下图所示:
![Oracle 关联查询:三张空表的关系图](https://cdn.jsdelivr.net/gh/YuemingQuan/image-repo/blog/2022/20220901135802.png)
以上三张表中,student 存储学生信息,course 存储课程信息,score 存储学生选课成绩信息。其中,student 和 course 表分别存储的是该表的主键 id,而 score 表则存储了两张表的外键 student_id 和 course_id,将学生和课程联系起来。
接下来,我们将向三张表中添加一些数据,以便进行关联查询。下面是向三张表中插入数据的代码:
```sql
INSERT INTO student (id, name, gender) VALUES
(1, '张三', '男'),
(2, '李四', '女'),
(3, '王五', '男');
INSERT INTO course (id, name, credit) VALUES
(1, '语文', 3),
(2, '数学', 4),
(3, '英语', 2.5);
INSERT INTO score (id, student_id, course_id, score) VALUES
(1, 1, 1, 85),
(2, 1, 2, 90),
(3, 2, 2, 88),
(4, 3, 1, 92),
(5, 3, 3, 83);
通过以上代码,我们向三张表中添加了一些数据,包括三个学生、三门课程、和五个学生成绩。我们可以通过以下代码来验证数据是否正确:
“`sql
SELECT * FROM student;
运行以上代码,我们将得到以下结果:
ID NAME GENDER
1 张三 男
2 李四 女
3 王五 男
同样的,我们查询 course 和 score 表可以得到以下结果:
```sql
SELECT * FROM course;
ID NAME CREDIT
1 语文 3
2 数学 4
3 英语 2.5
SELECT * FROM score;
ID STUDENT_ID COURSE_ID SCORE
1 1 1 85
2 1 2 90
3 2 2 88
4 3 1 92
5 3 3 83
以上代码验证了我们向三张表中添加数据的正确性。
接下来,我们来展示如何使用 Oracle 进行关联查询。我们通过以下代码,将三张表关联起来:
“`sql
SELECT s.name AS student_name, c.name AS course_name, score.score
FROM student s
JOIN score ON s.id = score.student_id
JOIN course c ON c.id = score.course_id;
运行以上代码,我们将得到以下结果:
STUDENT_NAME COURSE_NAME SCORE
张三 语文 85
张三 数学 90
李四 数学 88
王五 语文 92
王五 英语 83
以上代码将三张表关联起来,查询出了学生姓名、课程名称和对应成绩。其中,JOIN 关键字表示将两张表进行关联,ON 子句表示两张表之间的关联条件。
通过以上代码和说明,我们了解了 Oracle 关联查询的基本用法,并通过创建三张表和插入数据的过程进行了实际操作。在实际开发过程中,关联查询是经常用到的功能,通过本文的介绍,相信读者已经掌握了 Oracle 关联查询的基本原理和用法。