EXISTS子查询的语法
问题:如何用sql语句检测temp表是否已经创建?
方法一:这句话的意思是如果这个表存在,就删除
DROP TABLE IF EXISTS temp;
方法二:子查询的语法
语法:SELECT …… FROM 表名 WHERE EXISTS(子查询);
子查询有返回结果:exists 子查询结果为True
子查询无返回结果:exists 子查询结果为FALSE,外层查询不执行
题目:检查“Logic Java”课程最近一次考试成绩
如果有 80分以上的成绩,显示分数排在前5名的学员学号和分数
分析:采用EXISTS检测是否有人考试成绩达到80分以上
如果有,使用SELECT语句按成绩从高到低排序,显示前5名学员学号和成绩
题目:检查“Logic Java”课程最近一次考试成绩
如果全部未通过考试(60分及格),认为本次考试偏难,计算的该次考试平均分加5分
子查询的注意事项:
任何允许使用表达式的地方都可以使用子查询
嵌套在父查询SELECT语句的子查询可包括
SELECT子句
FROM子句
WHERE子句
GROUP BY子句
HAVING子句
只出现在子查询中而没有出现在父查询中的列不能包含在输出列中
题目:为每个学生制作在校期间每门课程的成绩单,
要求每个学生参加每门课程的最后一次考试成绩作为该生本课程的最终成绩
成绩单的数据项 学生姓名 课程所属的年级名称 课程名称 考试日期 考试成绩
分组查询用法
语法:SELECT …… FROM <表名> WHERE …… GROUP BY ……
题目:
统计每门课程平均分各是多少?
学号 课程编号 成绩
10000 1 71
10001 1 60
10004 1 93
10000 2 46
10002 2 60
10007 2 95
10001 3 83
10003 3 95