头歌平台MySQL数据库--连接查询进阶

第1关:连接查询——多表联合查询

任务描述

本关任务:使用联合查询实现对多数据表的查询操作。

相关知识

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

########## 查询选修了编号为'c01'课程的学生学号、姓名和成绩 ##########

select s.sno,sname,score from s,sc where sc.cno='c01' and s.sno=sc.sno;

########## 查询与'刘伟'在同一个系学习的学生学号、姓名及所在院系 ##########

select sno,sname,dept from s where dept=(select dept from s where sname='刘伟') and sname !='刘伟';

########## 查询选修了'数据结构'课程且成绩大于等于90的学号、姓名和成绩 ##########

select s.sno,s.sname,sc.score from s,c,sc where c.cname='数据结构' and sc.score>=90 and s.sno=sc.sno and c.cno=sc.cno;

########## 查询选修编号为'c01'或'c02'课程的学生姓名 ##########

select s.sname from s,sc where s.sno=sc.sno and sc.cno='c01' or sc.sno='c02';

第2关:连接查询——内连接查询

任务描述

本关任务:使用内连接查询实现对多数据表的查询操作。

相关知识

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

########## 查询与'张乐乐'出生年份相同的学生学号、姓名、所在院系和年龄(别名age,使用TimeStampDiff()函数计算到2023年4月1日的年龄) ##########

select sno,sname,dept,timestampdiff(year,dob,'2023-4-1') as age from s where extract(year from dob)=2000 and sname !='张乐乐';

########## 查询每个学生的学号、姓名、选修课程号、课程名及成绩 ##########

select s.sno,sname,c.cno,cname,sc.score from s,c,sc where s.sno=sc.sno and c.cno=sc.cno;
 

########## 查询选修课程数大于等于2门的学生学号、姓名及平均成绩(别名avg),查询结果按平均成绩降序输出 ##########

select s.sno,sname,avg(sc.score) as avg from s,sc group by sc.sno having count(sc.sno)>=2 and s.sno=sc.sno;

第3关:连接查询——左外连接查询

任务描述

本关任务:使用左外连接查询实现对多数据表的查询操作。

相关知识

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

########## 查询所有学生的选课情况(包括选课和未选课的学生),要求显示学号、姓名、课程号和成绩 ##########

select s.sno,sname,sc.cno,score from s left outer join (c left join sc on c.cno=sc.cno) on s.sno=sc.sno;

第4关:连接查询——右外连接查询

任务描述

本关任务:使用右外连接查询实现对多数据表的查询操作。

相关知识

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

########## 查询所有课程的被选情况(包括从未被选修的课程),要求显示选课的学生学号、课程编号、课程名和成绩 ##########

select s.sno,c.cno,cname,score from s right join (c left join sc on c.cno=sc.cno) on s.sno=sc.sno;

第5关:连接查询——交叉连接查询

任务描述

本关任务:使用交叉连接查询实现对多数据表的查询操作。

相关知识

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

########## 查询所有学生的可能选课组合,结果集包括学号、姓名、课程号及课程名 ##########

select s.sno,sname,c.cno,cname from s cross join c; 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值