珠科人何苦为难珠科人
都刷到了不如点个赞再走呗
第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.课程编号;
我现在大部分关卡都停在第二关,能过的我都会发出来
代码不对记得私信