例:查询年龄在20-23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage NOT BETWEEN 20 AND 23;
例:查询计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名和性别SELECT Sname,Ssex
FROM Student
WHERE Sdept IN('CS','MA','IS')
(三)ORDER BY子句
用户可以用ORDER BY子句对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排序,缺省值为升序
例:查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列SELECT Sno,Grade
FROM SC
WHERE Cno='3'
ORDER BY Grade DESC;
(四)聚集函数
COUNT([DISTINCT | ALL]*) 统计元组个数
COUNT([DISTINCT | ALL] ) 统一一列中值的个数
SUM([DISTINCT | ALL] ) 计算一列值的总和(此列必须是数值型)
A VG([DISTINCT | ALL] ) 计算一列值的平均值(此列必须是数值型)
MAX([DISTINCT | ALL] ) 求一列值中的最大值
MIN([DISTINCT | ALL] ) 求一列值中的最小值
例:查询选修1号课程的学生最高分数
SELECT MAX(Grade)
FROM SC
WHERE Cno='1'
在聚集函数遇到空值时,除COUNT(*)外,都跳过空值而只处理非空值。注意:WHERE 子句中是不能用聚集函数作为条件表达式的。
(五)GROUP BY 子句
GROUP BY子句将查询结果按某一列或多列的值分组,值相等的为一组。对查询结果分组的目的是为了细化聚集函数的作用对象。
例1:求各个课程号及相应的选课人数
SELECT Cno,COUNT(Sno)
FROM SC
GROUP BY Cno;
例2:查询选修了三门以上课程的学生学号
SELECT Sno
FROM SC
GROUP BY Sno
HA VING COUNTV(*)>3;
WHERE子句与HA VING短语的区别在于:1.作用对象不同
2.WHERE子句作用于基本表或视图,从中