目录
第1关:内连接查询
任务描述
本关任务:使用内连接查询数据表中学生姓名和对应的班级。
相关知识
为了完成本关任务,你需要掌握: 1.什么是内连接查询; 2.如何使用内连接查询。
内连接查询
-
仅将两个表中满足连接条件的行组合起来作为结果集,称为内连接;
-
关键字:
[inner] join ... on。
语法:
表1 [inner] join 表2 on 表1.字段=表2.字段
语法解释:
从表1中取出每一条记录,去表2中与所有的记录进行匹配,匹配必须是某个条件在表1中与表2中相同,最终才会保留结果,否则不保留。inner 关键字可省略不写;on 表示连接条件:条件字段就是代表相同的业务含义(如下面两张表中的 employee.dept_id 和 department.id),大多数情况下为两张表中的主外键关系。
内连接查询的使用
现在我们有两张表,数据如下: employee表数据:
| id | name | dept_id |
|---|---|---|
| 1 | Nancy | 4 |
| 2 | Tod | 2 |
| 3 | Carly | 1 |
| 4 | Allen | 2 |
| 5 | Mary | (null) |
department表数据:
| id | name |
|---|---|
| 1 | 开发部 |
| 2 | 测试部 |
| 3 | 运维部 |
| 4 | 销售部 |
现在想要查询出员工姓名以及其对应的部门名称,我们就使用内连接来进行查询。
- 我们可以将关联查询思路分为三步:
1.确定所连接的表, 2.确定所要查询的字段, 3.确定连接条件与连接方式。 示例:
select emp.name as empname,dept.name as deptname from department as dept inner join employee as amp on dept.id=emp.dept_id;
结果:
| empname | deptname |
|---|---|
| Carly | 开发部 |
| Tod | 测试部 |
| Allen | 测试部 |
| Nancy | 销售部 |
其中,没有部门的员工和部门没有员工的部门都没有被查出来,这就是内连接的特点,只查询在连接表中有对应的记录,其中dept.id=emp.dept_id是连接条件。
编程要求
在右侧编辑器补充代码,查询数据表中学生姓名以及对应的班级名称,将其对应的列名分别另命名为studentName和className。
我们为你提供了两张表,内容如下:
tb_student表数据:
| id | name | class_id |
|---|---|---|
| 1 | Emma | 2 |
| 2 | Mary | 4 |
| 3 | Allen | (null) |
| 4 | Kevin | 1 |
| 5 | Rose | 2 |
| 6 | James | 1 |
tb_class表数据:
| id | name |
|---|---|
| 1 | 软件1631 |
| 2 | 软件1632 |
| 3 | 测试1631 |
| 4 | 测试1632 |
测试说明
平台会对你编写的代码进行测试:
--########## 查询数据表中学生姓名和对应的班级 ##########
--#请在此处添加实现代码
--########## Begin ##########
SELECT
tb_student.name AS "studentname",
tb_class.name AS "classname"
FROM
tb_student
JOIN tb_class ON tb_class.id = tb_student.class_id;
--########## End ##########

本文详细介绍了OpenGauss数据库中的连接查询,包括内连接和外连接的使用,以及IN、ANY、ALL等关键字在子查询中的应用。此外,还讲解了如何进行分页子查询,特别是在大数据量下的优化策略。
最低0.47元/天 解锁文章
792

被折叠的 条评论
为什么被折叠?



