1.分组统计
1.COUNT( )函数
任务描述
本关任务:使用 COUNT()
函数统计学生总人数。
相关知识
为了完成本关任务,你需要掌握:如何使用 COUNT()
函数。
编程要求
根据提示,在右侧编辑器 Begin-End
处补充代码:
求学生总人数。
代码如下:select count(*)
from student;
第2关:COUNT( )函数2
任务描述
本关任务:求选修了课程的学生人数,输出列的别名为“选修人数”。
相关知识
在统计中使用distinct去掉重复行。
编程要求
根据提示,在右侧编辑器补充代码,求选修了课程的学生人数,输出列的别名为“选修人数”。
代码如下:
select count( distinct sno)'选修人数'
from score;
第3关:AVG( )函数、MAX函数和MIN函数
任务描述
本关任务:求选修各门课程的最高、最低与平均成绩。
相关知识
为了完成本关任务,你需要掌握:如何使用AVG()
、MAX()
、MIN()
函数。
编程要求
根据提示,在右侧编辑器Begin-End
处补充代码。 求选修各门课程的最高、最低与平均成绩。
代码如下:
select cno,AVG(grade),MAX(grade),MIN(grade)
from score
group by cno;
第4关:分组查询
任务描述
本关任务:求学生人数不足3人的系及其相应的学生数。
相关知识
为了完成本关任务,你需要掌握: 1.GROUP BY
与聚合函数的结合使用; 2.GROUP BY
中SELECT
指定的字段限制; 3.使用having进行分组后的筛选。
编程要求
根据提示,在右侧编辑器Begin-End
处补充代码。
求学生人数不足3人的系及其相应的学生数。
代码如下:
select distinct sdept ,COUNT(*)
from student
group by sdept
having COUNT(*)<3;
第5关:排序
任务描述
本关任务:求计算机系中各班的学生人数,结果按班级人数倒序排列。
相关知识
1.使用order by 进行排序,asc选项为升序,desc 选项为降序; 2.排序时可以按多个字段进行排序,但总的顺序按第一个字段排。 3.第一个字段值相同的情况下,按第二个字段排序。
编程要求
根据提示,在右侧编辑器补充代码,求计算机系中各班的学生人数,结果按班级人数倒序排列。
select sdept,sclass,COUNT(*)
from student
WHERE SDEPT='计算机'
group by sclass
order by COUNT(*) desc;
2.基本查询
第1关:选择列查询
任务描述
本关任务:求2000年出生的学生的学号、姓名, 结果列别名为汉字。
相关知识
为了完成本关任务,你需要掌握: 1.如何获取数据表中指定字段的数据; 2.如何获取日期型字段中的年份:如 year(日期变量); 3.如何进行时期型值的比较:如birthday>='2000-01-01'。
编程要求
根据提示,在右侧编辑器 Begin-End
处补充代码:
求2000年出生的学生的学号、姓名, 结果列别名为汉字。
代码如下:
select sno'学号',sname'姓名'
from student
where birthday>='2000-01-01'and birthday<='2001-01-01';
第2关:去除重复结果
任务描述
本关任务:求选修了课程的学生学号,结果表中学号显示唯一。
相关知识
为了完成本关任务,你需要掌握:
1.如何使用关键字 DISTINCT
检索数据表中不重复的内容。 2.成绩表的表结构如下: CREATE TABLE score ( sno CHAR(5) COMMENT '学号', cno CHAR(3) COMMENT '课程号', tno CHAR(6) COMMENT '教师号', grade DECIMAL(5,1) COMMENT '成绩', PRIMARY KEY(sno,cno,tno) COMMENT '主键约束', CONSTRAINT fk_sno FOREIGN KEY(sno) REFERENCES student(sno) COMMENT '外键约束', CONSTRAINT fk_cno FOREIGN KEY(cno) REFERENCES course(cno) COMMENT '外键约束', CONSTRAINT fk_tno FOREIGN KEY(tno) REFERENCES teach(tno) COMMENT '外键约束' );
编程要求
根据提示,在右侧编辑器 Begin-End
处补充代码:
求选修了课程的学生学号,结果表中学号显示唯一。
代码如下:
select distinct sno
from score;
第3关:范围查询
任务描述
本关任务:使用 BETWEEN AND
或者运算符进行范围查询。
相关知识
为了完成本关任务,你需要掌握: 1.如何使用关键字 BETWEEN AND
提取数据表中的指定数据内容。 2.课程表的表结构如下: CREATE TABLE course( cno CHAR(3) PRIMARY KEY COMMENT '课程号', cname VARCHAR(50) COMMENT '课程名', ctime DECIMAL(3,0) COMMENT '学时', credit DECIMAL(3,1) COMMENT '学分' );
编程要求
根据提示,在右侧编辑器 Begin-End
处补充代码:
求学时在 1-50 之间的课程信息。
代码如下:
select *
from course
where ctime between 1 and 50;
第4关:带IN关键字的查询
任务描述
本关任务:求不是计算机系或信息系学生。
相关知识
使用集合运算符in或not in
编程要求
根据提示,在右侧编辑器补充代码,求不是计算机系或信息系学生。
代码如下:
select *
from student
where sdept not in ('计算机','信息');
第5关:匹配查询
任务描述
本关任务:求姓名长度至少是三个汉字且倒数第三个汉字必须是“马”的学生。
相关知识
为了完成本关任务,你需要掌握: 1.如何使用通配符 %
和 _
模糊匹配数据内容。2.执行匹配查找的关键字就是 LIKE
。 3.下划线通配符 _
只能模糊匹配 1个
字符, %
匹配0至多个字符。
编程要求
根据提示,在右侧编辑器 Begin-End
处补充代码;
求姓名长度至少是三个汉字且倒数第三个汉字必须是“马”的学生。
代码如下:
select *
from student
where sname like '%马__';
第6关:多条件组合查询
任务描述
本关任务:求选修 052501
老师,成绩在 80 至 90 之间,学号为 96xxx
的学生的信息。
相关知识
这是一个多条件组合查询,要注意运算符的优先级别。
编程要求
根据提示,在右侧编辑器补充代码,求选修 052501
老师,成绩在 80 至 90 之间,学号为 96xxx
的学生的成绩信息。
代码如下:
select *
from score
where tno='052501'and grade between 80 and 90 and score.sno like'96%';
第7关:空值查询
任务描述
本关任务:求没有成绩的学生的学号和课程号。
相关知识
这是一个空值查询,空值查询的比较运算的格式为:<字段变量> is [not] null。
编程要求
根据提示,在右侧编辑器补充代码,求没有成绩的学生的学号和课程号。
代码如下:
select sno,cno
from score
where grade IS NULL;
如有错误,欢迎指出!谢谢。