Access SQL语句课件.ppt
文本预览下载声明
第14章 SQL语句;14.3 SQL中的数据查询语句;14.3.2 选择查询; 举例:;14.3.3 排序查询;14.3.4 使用聚合函数; 上述例子中使用了聚合函数,我们还可以加上GROUP BY 子句,通常一个聚合函数的范围是满足WHERE子句指定的条件的所有记录。在加上GROUP BY 子句后,SELECT命令把查询结果按指定列分成集合组。当一个聚合函数和一个GROUP BY 子句一起使用时,聚合函数的范围变为每组的所有记录。换句话说,一个结果是由组成一组的每个记录聚合产生的。
使用HAVING子句可以对这些组进一步加以控制。用这一子句定义这些组所必须满足的条件,便将其包含在结果中。
当WHERE子句、GROUP BY 子句和HAVING子句同时出现在一个查询中时,SELECT的执行顺序如下:;1、执行WHERE子句,从表中选取行
2、由GROUP BY 对选取的行进行分组
3、执行聚合函数
4、执行HAVING子句选取满足条件的分组
例:显示学生考试成绩平均分高于60分的学生的学号。
SELECT 学号 FROM 学生选课及成绩表 GROUP BY 学号 HAVING AVG([考试成绩])60
例:显示学生的考试成绩的最低分大于60,最高分小于95的学生的学号。
SELECT 学号
FROM 学生选课及成绩表
GROUP BY 学号
HAVING MIN ([考试成绩])=60 AND MAX ([考试成绩]) =95;14.3.5 表的连接查询;例:显示所有学生的课程名称和考试成绩字段。
SELECT 课程表.课程名称,学生选课及成绩表.考试成绩
FROM 课程表,学生选课及成绩表
WHERE 课程表.课程号=学生选课及成绩表.课程号
SELECT为了简化输入,允许在查询中使用表的别名,以缩写表名,我们可以在SELECT子句中为表定义一个临时别名,然后在查询中引用。
例:显示所有学生的课程名称和考试成绩字段。
SELECT a.课程名称,b.考试成绩
FROM 课程表 a,学生选课及成绩表 b
WHERE a.课程号=b.课程号;如果涉及到更多的数据表该怎么做呢?
例:显示所有学生的姓名、课程名称和考试成绩字段。
SELECT 学生信息表.姓名,课程表.课程名称,学生选课及成绩表.考试成绩
FROM 学生信息表,课程表,学生选课及成绩表
WHERE 学生信息表.学号=学生选课及成绩表.学号 and 课程表.课程号=学生选课及成绩表.课程号
;例:显示每门课程的考试成绩的平均分。
SELECT 学生选课及成绩表.课程号, AVG(学生选课及成绩表.考试成绩) AS 平均分
FROM 学生信息表, 学生选课及成绩表
WHERE 学生信息表.学号=学生选课及成绩表.学号 GROUP BY 学生选课及成绩表.课程号
或
例:显示每门课程的考试成绩的平均分。
SELECT Y.课程号, AVG(Y.考试成绩) AS 平均分
FROM 学生信息表 X, 学生选课及成绩表 Y
WHERE X.学号=Y.学号 GROUP BY Y.课程号;例:显示“计算机应用”班所选课程的考试成绩平均分。
SELECT 学生选课及成绩表.课程号, AVG(学生选课及成绩表.考试成绩) AS 平均分
FROM 学生信息表, 学生选课及成绩表
WHERE 学生信息表.学号=学生选课及成绩表.学号 AND 学生信息表.所在班级=计算机应用
GROUP BY 学生选课及成绩表.课程号
或
例:显示“计算机应用”班所选课程的考试成绩平均分。 SELECT Y.课程号, AVG(Y.考试成绩) AS 平均分
FROM 学生信息表 X, 学生选课及成绩表 Y
WHERE X.学号=Y.学号 AND X.所在班级=“计算机应用”
GROUP BY Y.课程号
;9.3.6 子查询;9.3.7 其他查询
在进行嵌套查询(子查询)时还可以使用有关的IN和NOT IN运算符。
例:查询显示存在有85分以上考试成绩的课程,显示课程号字段。
select 课程号 from 学生选课及成绩表 where 考试成绩 in(select 考试成绩 from 学生选课及成绩表 where 考试成绩85)
显示全部