第1关:单因素排序
任务描述
本关任务:在 TESTDB 数据库中查询指定数据。
相关知识
ORDER BY 子句简介
当使用 SELECT 语句查询表中的数据时,结果集中显示的行的顺序可能与您的预期不符。
在某些情况下,结果集中显示的行按其物理存储在表中的顺序排列。 但是,如果查询优化器使用索引来处理查询,则行记录将显示为它们以索引键顺序存储。 因此,结果集中的行顺序未确定或不可预测。
查询优化器是数据库系统中的内置软件组件,用于确定 SQL 语句查询请求数据的最有效方式。
要准确指定结果集中的行顺序,请在 SELECT 语句中添加使用 ORDER BY 子句,进行单因素排序如下所示:
SELECT <字段名1>, <字段名2>,...,
FROM <表名>
[WHERE 筛选条件]
ORDER BY <字段名> <排序方式>;
在此语法中,ORDER BY 子句放在 FROM 子句之后。 如果 SELECT 语句包含 WHERE 子句,则 ORDER BY 子句必须放在 WHERE 子句之后。
要对结果集进行排序,请指定要排序的列以及排序顺序的类型:
升序(使用:ASC 表示)
降序(使用:DESC 表示)
如果未指定排序顺序,则数据库系统通常默认按升序( ASC )对结果集进行排序。
当在 ORDER BY 子句中包含多个列时,数据库系统首先根据第一列对结果集进行排序,然后根据第二列对排序的结果集进行排序,依此类推。
编程要求
查询软件学院班级的班号、班级名和人数,并按人数升序排列。
注意:列顺序为班号、班级名、人数,行顺序如题意。
teacher(教师表):
tno(工号) tname(姓名) sex(性别) title(职称) birthday(出生日期)
0014 李欣 男 教授 1969-07-25
0078 张云 女 副教授 1975-11-25
0118 王立 男 高级工程师 1985-04-28
0193 赵玲 女 讲师 1992-09-26
0213 杨梅 女 副教授 1986-06-07
0030 覃刚 男 副教授 1980-02-15
course(课程表):
cno(课程号) cname(课程名) credit(学分) hours(学时) examination(考核方式)
G001 线性代数 3 48 考试
R003 数据结构 3 48 考试
R009 离散数学 3 48 考试
S023 嵌入式系统与编程实验 1 32 考察
G012 大学物理 4 64 考试
class(班级表):
gno(班级号) gname(班级名) grade(年级) dept(学院) gnum(班级人数)
0211801 软件18级1班 18级 软件 37
0211903 软件19级3班 19级 软件 35
0131901 机械19级1班 19级 机械 37
teaching(教师授课表):
cno(课程号) tno(工号) gno(班级号) term(开课学期) classroom(教室)
G001 0078 0211903 1 A101
G001 0078 0131901 1 A101
R003 0118 0211801 2 S001
R009 0213 0211903 2 S002
S023 0193 0211801 1 S001
G012 0030 0131901 2 B003
测试说明
平台会对你编写的代码进行测试,结果正确即可通关。
开始你的任务吧,祝你成功!
---------- BEGIN ----------
SELECT gno, gname,gnum
FROM class
WHERE dept='软件'
ORDER BY gnum ASC;
---------- END ----------
第2关:多因素排序
任务描述
本关任务:在 TESTDB 数据库中查询指定数据。
相关知识
ORDER BY 子句简介
当使用 SELECT 语句查询表中的数据时,结果集中显示的行的顺序可能与您的预期不符。
在某些情况下,结果集中显示的行按其物理存储在表中的顺序排列。 但是,如果查询优化器使用索引来处理查询,则行记录将显示为它们以索引键顺序存储。 因此,结果集中的行顺序未确定或不可预测。
查询优化器是数据库系统中的内置软件组件,用于确定 SQL 语句查询请求数据的最有效方式。
要准确指定结果集中的行顺序,请在 SELECT 语句中添加使用 ORDER BY 子句,进行多因素排序如下所示:
SELECT <字段名1>, <字段名2>,...,
FROM <表名>
[WHERE 筛选条件]
ORDER BY <字段名> <排序方式>,
<字段名> <排序方式>,...;
在此语法中,ORDER BY 子句放在 FROM 子句之后。 如果 SELECT 语句包含 WHERE 子句,则 ORDER BY 子句必须放在 WHERE 子句之后。
要对结果集进行排序,请指定要排序的列以及排序顺序的类型:
升序(使用:ASC 表示)
降序(使用:DESC 表示)
如果未指定排序顺序,则数据库系统通常默认按升序( ASC )对结果集进行排序。
当在 ORDER BY 子句中包含多个列时,数据库系统首先根据第一列对结果集进行排序,然后根据第二列对排序的结果集进行排序,依此类推。
编程要求
查询教师授课情况,结果先按学期升序排列,再按工号降序排列。
注意:查询列顺序请与下表中保持一致,行顺序如题意。
teacher(教师表):
tno(工号) tname(姓名) sex(性别) title(职称) birthday(出生日期)
0014 李欣 男 教授 1969-07-25
0078 张云 女 副教授 1975-11-25
0118 王立 男 高级工程师 1985-04-28
0193 赵玲 女 讲师 1992-09-26
0213 杨梅 女 副教授 1986-06-07
0030 覃刚 男 副教授 1980-02-15
course(课程表):
cno(课程号) cname(课程名) credit(学分) hours(学时) examination(考核方式)
G001 线性代数 3 48 考试
R003 数据结构 3 48 考试
R009 离散数学 3 48 考试
S023 嵌入式系统与编程实验 1 32 考察
G012 大学物理 4 64 考试
class(班级表):
gno(班级号) gname(班级名) grade(年级) dept(学院) gnum(班级人数)
0211801 软件18级1班 18级 软件 37
0211903 软件19级3班 19级 软件 35
0131901 机械19级1班 19级 机械 37
teaching(教师授课表):
cno(课程号) tno(工号) gno(班级号) term(开课学期) classroom(教室)
G001 0078 0211903 1 A101
G001 0078 0131901 1 A101
R003 0118 0211801 2 S001
R009 0213 0211903 2 S002
S023 0193 0211801 1 S001
G012 0030 0131901 2 B003
测试说明
平台会对你编写的代码进行测试,结果正确即可通关。
开始你的任务吧,祝你成功!
---------- BEGIN ----------
SELECT cno,tno,gno,term,classroom
FROM teaching
ORDER BY term ASC,
tno DESC;
---------- END ----------

382

被折叠的 条评论
为什么被折叠?



