OpenGauss数据库-F.连接查询与子查询

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

目录

第1关:内连接查询

任务描述

相关知识

内连接查询

内连接查询的使用

编程要求

测试说明

第2关:外连接查询

任务描述

相关知识

外连接查询

外连接查询的使用

编程要求

测试说明

第3关:IN、ANY、ALL嵌套子查询

任务描述

相关知识

ALL关键字

ANY和SOME关键字

IN关键字

编程要求

测试说明

第4关:分页子查询

任务描述

相关知识

什么是分页查询

limit 和 offset 实现的分页查询

大数据量下分页查询优化

编程要求

测试说明


第1关:内连接查询

任务描述

本关任务:使用内连接查询数据表中学生姓名和对应的班级。

相关知识

为了完成本关任务,你需要掌握: 1.什么是内连接查询; 2.如何使用内连接查询。

内连接查询
  • 仅将两个表中满足连接条件的行组合起来作为结果集,称为内连接;

  • 关键字:[inner] join ... on

语法:

 
  1. 表1 [inner] join 表2 on 表1.字段=表2.字段

语法解释:

 
  1. 从表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.确定连接条件与连接方式。 示例:

 
  1. 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是连接条件。

编程要求

在右侧编辑器补充代码,查询数据表中学生姓名以及对应的班级名称,将其对应的列名分别另命名为studentNameclassName

我们为你提供了两张表,内容如下:

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 ##########
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小柒_02

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值