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

第1关:内连接查询

任务描述

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

--########## 查询数据表中学生姓名和对应的班级 ##########
--#请在此处添加实现代码
--########## Begin ##########
SELECT 
    s.name AS studentName,
    c.name AS className
FROM 
    tb_student s
INNER JOIN 
    tb_class c 
ON 
    s.class_id = c.id;
--########## End ##########

第2关:外连接查询

任务描述

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

--########## 使用左外连接查询所有学生姓名(学生全部显示,不管有没有班级)和对应的班级 ##########

--#请在此处添加实现代码
--########## Begin ##########
SELECT 
    s.name AS studentName,
    c.name AS className
FROM 
    tb_student s
LEFT JOIN 
    tb_class c 
ON 
    s.class_id = c.id;
--########## End ##########

--########## 使用右外连接查询所有学生姓名和对应的班级(班级全部显示,无论有没有学生) ##########

--#请在此处添加实现代码
--########## Begin ##########
SELECT 
    s.name AS studentName,
    c.name AS className
FROM 
    tb_student s
RIGHT JOIN 
    tb_class c 
ON 
    s.class_id = c.id;
--########## End ##########

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

任务描述

本关任务:根据要求使用关键字进行查询。

--#请在此处添加实现代码
--########## Begin ##########

--#1.使用 ALL 关键字进行查询
SELECT position, salary
FROM tb_salary
WHERE salary > (SELECT MAX(salary) FROM tb_salary WHERE position = 'Java');

--#2.使用 ANY 关键字进行查询
SELECT position, salary
FROM tb_salary
WHERE salary > (SELECT MIN(salary) FROM tb_salary WHERE position = 'Java');

--#3.使用 IN 关键字进行查询
SELECT position, salary
FROM tb_salary
WHERE position = 'Java';

--########## End ##########

第4关:分页子查询

任务描述

本关任务:能分页读取表中数据,针对大数据量进行简单优化。

--#请在此处添加实现代码
--########## Begin ##########

--#1.分页查询
SELECT prod_id
FROM products
ORDER BY prod_id ASC
LIMIT 5 OFFSET 5;


--#2.用子查询优化分页查询语句
SELECT prod_id
FROM products
WHERE prod_id >= (
    SELECT prod_id
    FROM products
    ORDER BY prod_id ASC
    LIMIT 1 OFFSET 10  -- OFFSET 10 表示获取第11行的prod_id(索引从0开始)
)
ORDER BY prod_id ASC
LIMIT 5; -- 取5行,即第11-15行

--########## End ##########

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

JzSt_Han

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

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

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

打赏作者

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

抵扣说明:

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

余额充值