Oracle三表求交集获得共同数据(oracle三张表交集)

Oracle三表求交集:获得共同数据

在Oracle数据库中,我们常常需要对多个表进行联合查询,以获得更完整的数据。而当我们需要从三个或更多的表中获得共同数据时,就需要用到交集查询。

交集查询是指,选取两个或多个表中相同的行,返回结果集中包含这些行的数据。在Oracle中,我们可以使用INNER JOIN语句实现三表求交集。

下面以三张学生表、课程表、成绩表为例,演示如何使用INNER JOIN语句实现三表求交集:

创建学生表

CREATE TABLE students

(

student_id NUMBER(10) PRIMARY KEY,

student_name VARCHAR2(50) NOT NULL,

student_age NUMBER(3),

student_gender VARCHAR2(10)

);

插入学生数据

INSERT INTO students VALUES (1, ‘小明’, 18, ‘男’);

INSERT INTO students VALUES (2, ‘小芳’, 19, ‘女’);

INSERT INTO students VALUES (3, ‘小李’, 20, ‘男’);

INSERT INTO students VALUES (4, ‘小红’, 18, ‘女’);

创建课程表

CREATE TABLE courses

(

course_id NUMBER(10) PRIMARY KEY,

course_name VARCHAR2(50) NOT NULL,

course_teacher VARCHAR2(50)

);

插入课程数据

INSERT INTO courses VALUES (1, ‘数学’, ‘张老师’);

INSERT INTO courses VALUES (2, ‘语文’, ‘王老师’);

INSERT INTO courses VALUES (3, ‘英语’, ‘李老师’);

INSERT INTO courses VALUES (4, ‘物理’, ‘赵老师’);

创建成绩表

CREATE TABLE scores

(

score_id NUMBER(10) PRIMARY KEY,

student_id NUMBER(10) NOT NULL,

course_id NUMBER(10) NOT NULL,

score NUMBER(3)

);

插入成绩数据

INSERT INTO scores VALUES (1, 1, 1, 90);

INSERT INTO scores VALUES (2, 1, 2, 80);

INSERT INTO scores VALUES (3, 1, 3, 70);

INSERT INTO scores VALUES (4, 1, 4, 60);

INSERT INTO scores VALUES (5, 2, 1, 85);

INSERT INTO scores VALUES (6, 2, 2, 75);

INSERT INTO scores VALUES (7, 2, 3, 65);

INSERT INTO scores VALUES (8, 2, 4, 55);

INSERT INTO scores VALUES (9, 3, 1, 95);

INSERT INTO scores VALUES (10, 3, 2, 85);

INSERT INTO scores VALUES (11, 3, 3, 75);

INSERT INTO scores VALUES (12, 3, 4, 65);

INSERT INTO scores VALUES (13, 4, 1, 70);

INSERT INTO scores VALUES (14, 4, 2, 60);

INSERT INTO scores VALUES (15, 4, 3, 50);

INSERT INTO scores VALUES (16, 4, 4, 40);

现在,我们需要从这三个表中获得选修了数学课程的学生信息和成绩。我们可以使用以下SQL语句实现:

SELECT students.student_name, students.student_age, scores.score

FROM students

INNER JOIN scores ON students.student_id = scores.student_id

INNER JOIN courses ON scores.course_id = courses.course_id

WHERE courses.course_name = ‘数学’;

运行以上SQL语句,我们可以得到以下结果:

| student_name | student_age | score |

|————–|————-|——-|

| 小明 | 18 | 90 |

| 小芳 | 19 | 85 |

| 小李 | 20 | 95 |

| 小红 | 18 | 70 |

通过以上SQL语句,我们可以从三个表中获取选修了数学课程的学生信息和成绩。在INNER JOIN语句中,我们连接了学生表、成绩表和课程表。接下来,在WHERE子句中,我们筛选出课程名为“数学”的记录行。我们从结果集中选取了学生名字、年龄和成绩三列,并将它们作为查询结果呈现。

可以看出,使用INNER JOIN语句可以帮助我们快速实现跨多个表的联合查询,从而获得更为完整的数据。同时,我们也应该注意掌握如何合理运用WHERE子句,以便从结果集中筛选出我们所需要的记录行。


数据运维技术 » Oracle三表求交集获得共同数据(oracle三张表交集)