利用Oracle中的表连接查询数据(oracle中不同表连接)

利用Oracle中的表连接查询数据

在数 据库查询中,表连接是一种主要的查询方式,常常被用来从多张表中获取数据。Oracle 数据库的表连接功能非常强大,支持多种不同的连接方式,使得我们能够快速、准确地查询所需要的数据。

在 Oracle 中,表连接有两种基本类型:内连接和外连接。内连接(或等值连接)通过比较两个或多个表之间的共同数据,建立表之间的联系。外连接则不仅包括内连接所包含的数据,还包括某个表中不匹配的数据。

下面我们来通过一个实例来学习如何在Oracle中使用表连接查询数据。

假设有两张表——学生信息表和学生课程成绩表——它们的数据如下:

学生信息表(student_info):

| 学生编号 | 学生姓名 | 学生性别 | 学生年龄 |

| ——– | ——– | ——– | ——– |

| 001 | 张三 | 男 | 18 |

| 002 | 李四 | 女 | 19 |

| 003 | 王五 | 男 | 20 |

| 004 | 赵六 | 女 | 21 |

学生课程成绩表(student_course):

| 学生编号 | 课程编号 | 课程名称 | 课程成绩 |

| ——– | ——– | ——– | ——– |

| 001 | 1001 | 数学 | 80 |

| 001 | 1002 | 英语 | 85 |

| 002 | 1001 | 数学 | 90 |

| 002 | 1002 | 英语 | 85 |

| 003 | 1001 | 数学 | 92 |

现在我们想要查询学生的所有信息以及他们所选的课程和成绩,我们就需要使用表连接。

我们需要使用 INNER JOIN 操作符将这两张表连接起来,并指定学生编号为连接条件。代码如下:

“`sql

SELECT *

FROM student_info

INNER JOIN student_course

ON student_info.学生编号 = student_course.学生编号;


该查询会返回下面的结果:

| 学生编号 | 学生姓名 | 学生性别 | 学生年龄 | 课程编号 | 课程名称 | 课程成绩 |
| -------- | -------- | -------- | -------- | -------- | -------- | -------- |
| 001 | 张三 | 男 | 18 | 1001 | 数学 | 80 |
| 001 | 张三 | 男 | 18 | 1002 | 英语 | 85 |
| 002 | 李四 | 女 | 19 | 1001 | 数学 | 90 |
| 002 | 李四 | 女 | 19 | 1002 | 英语 | 85 |
| 003 | 王五 | 男 | 20 | 1001 | 数学 | 92 |

从上面的结果中,我们可以看到学生信息表和学生课程成绩表已经成功地连接了起来,而且连接的条件是学生编号。

如果我们不仅要查询所有学生的信息,还要包括没有选课程的学生信息,那么我们需要使用外连接。外连接有两种类型:左外连接和右外连接。左外连接可以包括左边表(student_info)的所有数据,不匹配的数据值为空值;右外连接则可以包括右边表(student_course)的所有数据,不匹配的数据值也为空值。

现在,我们来使用左外连接查询所有学生信息以及他们的选课情况。代码如下:

```sql
SELECT *
FROM student_info
LEFT OUTER JOIN student_course
ON student_info.学生编号 = student_course.学生编号;

该查询返回的结果与 INNER JOIN 不同,它包含了所有学生信息,而不仅仅是选课的学生信息。在没有匹配的记录中,课程编号和课程成绩的值都是空值。代码执行后的结果如下:

| 学生编号 | 学生姓名 | 学生性别 | 学生年龄 | 课程编号 | 课程名称 | 课程成绩 |

| ——– | ——– | ——– | ——– | ——– | ——– | ——– |

| 001 | 张三 | 男 | 18 | 1001 | 数学 | 80 |

| 001 | 张三 | 男 | 18 | 1002 | 英语 | 85 |

| 002 | 李四 | 女 | 19 | 1001 | 数学 | 90 |

| 002 | 李四 | 女 | 19 | 1002 | 英语 | 85 |

| 003 | 王五 | 男 | 20 | 1001 | 数学 | 92 |

| 004 | 赵六 | 女 | 21 | NULL | NULL | NULL |

可以看到,结果中包括了所有学生的信息,不仅仅是选课的学生信息。

在 Oracle 中,表连接是一项非常强大的功能,它可以让我们在大量的数据中快速定位所需要的信息。同时,在查询过程中,我们也需要尽量避免使用过多的连接操作,因为过多的操作会导致查询效率下降,甚至可能会引起系统的崩溃。


数据运维技术 » 利用Oracle中的表连接查询数据(oracle中不同表连接)