「这是我参与2022首次更文挑战的第27天,活动详情查看:2022首次更文挑战」
在上篇文章中:使用SELECT的WHERE条件查询数据——MySQL数据库学习笔记(四),我们学会了通过使用DISTINCT关键字对数据去重,以及各种常用运算符的应用:
本篇文章将介绍更多SELECT语句查询数据的更多用法,比如多重条件查询、对查询结果进行排序、使用聚合函数汇总数据等。
多重条件查询
查询计算系年龄在20岁以下的学生姓名
SELECT Sname FROM Student WHERE Sdept = '计算机系' AND Sage < 20;
查询计算机系和信息系年龄大于20岁的学生信息
SELECT * FROM Student WHERE (Sdept = '计算机系' OR Sdept = '信息系') AND Sage >= 20;
也可以使用IN语句
SELECT * FROM Student WHERE Sdept IN ('计算机系', '信息系') AND Sage >= 20;
对查询结果进行排序
有时,我们希望对查询的结果进行排序,比如按照考试成绩从高到低来对学生进行排序。SQL语句可以对一个列得值进行排序,也可以按多个列的值进行排序,排序可以是从小到大(升序:ASC),也可以是从大到小(降序:DESC),请看下面的语法:
ORDER BY <列名> [ASC | DESC] [, ...n]
将学生按年龄的升序排列
SELECT * FROM Student ORDER BY Sage ASC;
查询选修了“c02”号课程的学生的学号以及其成绩,查询结果按成绩降序排列
SELECT Sno, Grade FROM SC WHERE Cno='c02' ORDER BY Grade DESC;
查询所有学生的信息,查询结果按所在系的系名升序排列,同一系的学生按年龄降序排列
SELECT * FROM Student ORDER BY Sdept ASC, Sage DESC;
使用聚合函数汇总数据
聚合函数也成为集合函数或统计函数,它用来对一组值进行计算并返回单个值。SQL提供的聚合函数有:
- COUNT(*):统计表中的数据条数。
- COUNT([DISTINCT] <列名>):统计本列非空列值个数,DISTINCT表示不包括列的重复值。
- SUM(<列名>):计算列值总和(列必须是数值型)
- AVG(<列名>):计算列值平均值(列必须是数值型)
- MAX(<列名>):求列值最大值
- MIN(<列名>):求列值最小值
统计学生总人数
SELECT COUNT(*) FROM Student;
统计选修了课程的学生人数
SELECT COUNT(DISTINCT Sno) FROM SC;
计算“9512101”学生的选课门数和考试总成绩
SELECT COUNT(*) AS 选课门数, SUM(Grade) AS 总成绩 FROM SC WHERE Sno = '9512101';
计算“c01”课程的考试平均成绩
SELECT AVG(Grade) AS 平均成绩 FROM SC WHERE Cno = 'c01';
查询“c01”课程的考试最高分和最低分
SELECT MAX(Grade) AS 最高分, MIN(Grade) AS 最低分 FROM SC WHERE Cno = 'c01';
查询“9512101”学生的选课门数、已开始课程门数以及考试最高分、最低分和平均分。
SELECT COUNT(*) AS 选课门数, COUNT(Grade) AS 考试门数,
MAX(Grade) AS 最高分, MIN(Grade) AS 最低分,
AVG(Grade) AS 平均分
FROM SC WHERE Sno = '9512101';
结尾
下篇文章将学习SQL的GROUP BY分组查询。