目录
一、本关任务:使用LIMIT关键字查询班级中第2名到第5名的学生信息,并根据学生成绩进行降序排序。
第1关 对查询结果进行排序
一、本关任务:以成绩的降序显示学生成绩表中所有信息。
对查询结果排序
我们知道在MySQL
中从数据表中读取数据都是使用SELECT
语句。
如果我们需要对读取的语句进行排序,我们就可以使用Order By
子句来设定你想要按照的字段进行排序并返回结果。
语法:
SELECT 字段名 FROM 表名 ORDER BY 字段名 [ASC[DESC]];
还可以根据自己的需求添加WHERE
、LIKE
子句来设置条件,再对结果过进行排序显示。
现有user
表数据如下:
id | name | age |
---|---|---|
1 | Tom | 32 |
2 | Nancy | 18 |
3 | Allen | 24 |
4 | Jason | 23 |
我们需要查询表中信息,要求按照年龄的升序进行排序:
指定排序方向
从上面的查询语句中我们并未看到有任何表示排序方向的关键字,在默认情况下,它是按升序排列的。
ASC
升序关键字DESC
降序关键字
二、编程要求
查询学生成绩表中1
班同学的所有信息并以成绩降序的方式显示结果。
学生成绩表:tb_score
表数据:
stu_id | class_id | name | score |
---|---|---|---|
1 | 2 | Jack | 81 |
2 | 1 | David | 74 |
3 | 1 | Mason | 92 |
4 | 2 | Ethan | 89 |
5 | 1 | Gina | 65 |
三、预期输出:
stu_id class_id name score
3 1 Mason 92
2 1 David 74
5 1 Gina 65
四、代码
USE School;
#请在此处添加实现代码
########## Begin ##########
########## 查询1班同学的所有信息以成绩降序的方式显示结果 ##########
SELECT*FROM tb_score WHERE class_id = 1 ORDER BY score DESC;
########## End ##########
第2关 分组查询
一、本关任务:对班级表中的班级名称进行分组查询。
分组查询的单独使用
分组查询的关键字是Group By
,查询的是每个分组中 首次出现的一条记录。
语法:
SELECT 字段名 FROM 表名 GROUP BY 字段名;
例如:
现有user
表数据:
id | name | sex |
---|---|---|
1 | Tom | 男 |
2 | Nancy | 女 |
3 | Allen | Null |
4 | Jason | 男 |
我们对表中数据的性别进行分组查询:
可以看出,返回了3
条记录,分别是sex
字段值为Null
、女、男的记录,查询结果按照sex
字段中不同的值进行了分类,只显示每个分组中的一条记录,意义不大,一般情况下,GROUP BY
都和聚合函数一起使用。
二、编程要求
对班级表中的班级名称进行分组查询。
班级表信息:tb_class
表数据:
stu_id | class_id | name |
---|---|---|
1 | 367 | Jack |
2 | 366 | David |
3 | 366 | Mason |
4 | 367 | Ethan |
5 | 366 | Gina |
三、预期输出:
stu_id class_id name
2 366 David
1 367 Jack
四、代码
USE School;
#请在此处添加实现代码
########## Begin ##########
########## 对班级名称进行分组查询 ##########
SELECT*FROM tb_class GROUP BY class_id;
########## End ##########
第3关 使用LIMIT限制查询结果的数量
一、本关任务:使用LIMIT
关键字查询班级中第2
名到第5
名的学生信息,并根据学生成绩进行降序排序。
LIMIT
的使用
在我们查询大量数据结果时,会返回很多条数据,有需要的记录可能就其中的一条或者几条。比如,实现分页功能,若每页显示10
条记录,每次查询就只需要10
条记录。
在MySQL
中,提供了LIMIT
关键字,用来限制查询结果的数量。
语法:
SELECT 字段名 FROM 表名 LIMIT [OFFSET,] 记录数;
参数说明:
-
第一个参数,
OFFSET
,可选参数,表示偏移量,如果不指定默认值为0
,表示从查询结果的第一条记录开始,若偏移量为1
,则从查询结果中的第二条记录开始,以此类推。 -
第二个参数,记录数,表示返回查询结果的条数。
现有employee
表数据如下:
id | name | age |
---|---|---|
1 | Tom | 23 |
2 | Allen | 45 |
3 | Nancy | 32 |
4 | Jack | 27 |
5 | Rose | 29 |
6 | Mary | 18 |
- 查询
employee
表中前4
条数据:
- 从第二条记录开始往后查看
4
条数据(不包含第二条):
二、编程要求
查询班级中第2
名到第5
名的学生信息,并根据学生成绩进行降序排序。
学生成绩表:tb_score
表数据:
id | name | score |
---|---|---|
1 | Jack | 89 |
2 | David | 73 |
3 | Mason | 62 |
4 | Ethan | 93 |
5 | Gina | 76 |
6 | Dorris | 98 |
7 | kain | 86 |
8 | Alice | 91 |
三、预期输出:
id name score
4 Ethan 93
8 Alice 91
1 Jack 89
7 kain 86
四、代码
USE School;
#请在此处添加实现代码
########## Begin ##########
########## 查询班级中第2名到第5名的学生信息 ##########
SELECT*FROM tb_score ORDER BY score DESC limit 1,4;
########## End ##########