头歌数据库表的查询 答案

珠科人何苦为难珠科人

都刷到了不如点个赞再走呗

第1关:基本查询

任务描述

本关任务:完成基本数据的查询。

相关知识

select 语句

答案:

use studb;
-- 1、在student表中,查询每个学生的学号、姓名、年龄信息。
SELECT 学号,姓名,年龄 FROM student; 
-- 2、查询student表学号为0002的学生的姓名和家庭住址。
SELECT 姓名,家庭住址 FROM student  WHERE 学号='0002';
-- 3、查询student表所有年龄大于17岁以后的女同学的姓名和年龄。
SELECT 姓名,年龄 FROM student  WHERE 年龄>=17 and 性别='女';
 

第2关:条件查询

任务描述

本关任务:根据条件查询数据。

相关知识

条件查询相关的关键字

答案:

use studb;
-- 1、在grade表中查询分数在70-80范围内的学生的学号、课程编号和成绩。
SELECT * FROM grade WHERE 分数 BETWEEN 70 AND 80;
-- 2、在grade表中查询课程编号为0002的学生的平均成绩。
SELECT AVG(分数) 平均分 FROM grade WHERE 课程编号='0002';
-- 3、在grade表中查询选修课程编号为0003的人数和该课程有成绩的人数。
SELECT COUNT(*) 选课人数,COUNT(分数) 有成绩人数 FROM grade WHERE 课程编号='0003';
-- 4、查询student表的姓名和年龄,查询结果按年龄从大到小排序。
SELECT 姓名,年龄 FROM student ORDER BY 年龄 DESC;
-- 5、查询所有姓名“张”的学生的学号和姓名。
SELECT 学号,姓名 FROM student WHERE 姓名 LIKE '张%';

第3关:排序

任务描述

本关任务:查询结果先按照要求进行排序。

相关知识

ORDER BY 排序

答案:

use studb;
-- 对student表,查询学生的学号、姓名、性别、年龄及家庭住址,查询结果先按照性别升序排序,性别相同的再按学号降序排序。
SELECT 学号,姓名,性别,年龄,家庭住址 FROM student  ORDER BY 性别 ASC,学号 DESC;
 

第4关:分组

任务描述

本关任务:使用 GROUP BY 子句进行分组查询。

相关知识

GROUP BY

use studb;

SELECT 学号,AVG(分数) 平均成绩 FROM grade GROUP BY 学号;

第5关:UNION 运算符

任务描述

本关任务:查询中使用UNION运算符。

相关知识

UNION 运算符

答案:

use studb;
SELECT 学号,姓名 FROM student  WHERE 姓名 LIKE '刘%'
UNION
SELECT 学号,姓名 FROM student  WHERE 姓名 LIKE '张%';

第6关:嵌套查询

任务描述

本关任务:嵌套查询。

相关知识

嵌套查询

答案:

use studb;
-- 1、在student表中查找与“刘东”性别相同的所有学生的姓名、年龄。
SELECT 姓名,年龄 FROM student WHERE 性别=
(SELECT 性别 FROM student  WHERE 姓名='刘东'); 
-- 2、使用IN子查询查找所修课程编号为0002、0005的学生学号、姓名、性别。
SELECT 学号,姓名,性别 FROM student  WHERE 学号 IN
(SELECT 学号 FROM grade WHERE 课程编号 IN ('0002','0005'));  
-- 3、使用ANY子查询查找学号为0001的学生的分数比0002号的学生的最低分数高的课程编号和分数。
SELECT 课程编号,分数 FROM grade WHERE 学号='0001' and 分数>ANY
(SELECT 分数 FROM grade WHERE 学号='0002');
-- 4、使用ALL子查询查找学号为0002的学生的分数比学号为0001的学生的最高成绩还要高的课程编号和分数。
SELECT 课程编号,分数 FROM grade WHERE 学号='0002' and 分数>ALL
(SELECT 分数 FROM grade WHERE 学号='0001');
 

第7关:连接查询

任务描述

本关任务:嵌套查询。

相关知识

连接查询

答案:

use studb;
-- 1、查询分数在80-90范围内的学生的学号、姓名、分数。
SELECT s.学号,姓名,分数 FROM student s,  grade g
   WHERE s.学号=g.学号 and 分数 BETWEEN 80 AND 90;
-- 2、使用INNER JOIN连接方式查询学习“数据库原理及应用”课程的学生学号、姓名、分数。
SELECT s.学号,姓名,分数 FROM student s INNER JOIN grade g ON s.学号=g.学号 
INNER JOIN course c ON g.课程编号=c.课程编号 WHERE c.课程名称='数据库原理及应用';
-- 3、使用左外连接查询每个学生的总成绩,要求列出学号、姓名、总成绩,没有选修课程的学生的总成绩为空。
SELECT s.学号,姓名,SUM(分数) 总成绩 
FROM student s LEFT OUTER JOIN grade g  ON s.学号=g.学号
GROUP BY s.学号;   
-- 4、使用右外连接查询所有课程的选修情况,要求列出课程编号、课程名称、选修人数,course表中没有的课程列值为空。
SELECT g.课程编号,课程名称,count(*) 选修人数 
FROM course c RIGHT OUTER JOIN grade g ON g.课程编号=c.课程编号
GROUP BY g.课程编号; 

我现在大部分关卡都停在第二关,能过的我都会发出来

代码不对记得私信

  • 19
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值