等价于:SELECT Sname, Ssex
FROM Students
WHERE Sdept='自动化' OR Sdept='数学' OR
Sdept='计算机';
例3.21 查询既不是信息系、数学系、也不是计算机系的学生的姓名(Sname)和性别(Ssex)。其命令为: SELECT Sname, Ssex FROM Students
WHERE Sdept NOT IN ('自动化', '数学', '计算机'); 例3.22 查询所有姓刘的学生的姓名(Sname)、学号(Sno)和性别(Ssex)。其命令为: SELECT Sname, Sno, Ssex FROM Students
WHERE Sname LIKE '刘%';
例3.23 查询姓“刘”且全名为4个汉字的学生的姓名(Sname)和所在系(Sdept)。其命令为: SELECT Sname, Sdept FROM Students
WHERE Sname LIKE '刘____';
例3.24 查询所有不姓刘的学生姓名(Sname)和年龄(Sage)。
SELECT Sname, Sage
16
FROM Students
WHERE Sname NOT LIKE '刘%';
例3.25 查询课程名为“DB_设计”的课程号(Cno)和学分(Credits)。其命令为: SELECT Cno, Credits FROM Courses
WHERE Cname LIKE 'DB\\_设计' ESCAPE '\\';
例3.26 查询以\开头,且倒数第2个汉字字符为“设”的课程的详细情况。其命令为: SELECT * FROM Courses
WHERE Cname LIKE 'DB\\_%设__'ESCAPE'\\';
例3.27 假设某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。试查询缺少成绩的学生的学号(Sno)和相应的课程号(Cno)。其命令为: SELECT Sno, Cno FROM Reports
WHERE Grade IS NULL;
例3.28 查询所有有成绩的学生学号(Sno)和课程号(Cno)。其命令为: SELECT Sno, Cno FROM Reports
17
WHERE Grade IS NOT NULL; 3 查询结果排序
例3.29 查询选修了C03号课程的学生的学号(Sno)和成绩(Grade),并按成绩降序排列。其命令为: SELECT Sno, Grade FROM Reports WHERE Cno='C03' ORDER BY Grade DESC;
例3.30 查询全体学生情况,查询结果按所在系的系名(Sdpet)升序排列,同一系中的学生按年龄(Sage)降序排列。其命令为: SELECT * FROM Students
ORDER BY Sdept, Sage DESC; 4 集函数的使用
例3.31 查询学生总人数。其命令为: SELECT COUNT(*) FROM Students;
例3.32 查询选修了课程的学生人数。其命令为: SELECT COUNT(DISTINCT Sno) FROM Reports;
18
例3.33 计算选修C01号课程的学生平均成绩。其命令为:
SELECT AVG(Grade) FROM Reports WHERE Cno='C01';
例3.34 查询选修C01号课程的学生最高分数。其命令为:
SELECT MAX(Grade) FROM Reports WHERE Cno='C01'; 5 查询结果分组
例3.35 求各个课程号(Cno)及相应的选课人数。其命令为:
SELECT Cno , COUNT(Sno) CntSno FROM Reports GROUP BY Cno;
例3.36 查询选修了3门或3门以上课程的学生学号(Sno)。其命令为: SELECT Sno FROM Reports GROUP BY Sno HAVING COUNT(Cno)>
19
20