Access_SQL语句教程.ppt
文本预览下载声明
SQL语句;SQL中的数据查询语句;2 选择查询;举例:;3 排序查询;4 使用聚合函数;举例; 上述例子中使用了聚合函数,我们还可以加上GROUP BY 子句,通常一个聚合函数的范围是满足WHERE子句指定的条件的所有记录。在加上GROUP BY 子句后,SELECT命令把查询结果按指定列分成集合组。当一个聚合函数和一个GROUP BY 子句一起使用时,聚合函数的范围变为每组的所有记录。换句话说,一个结果是由组成一组的每个记录聚合产生的。
例: 查询软件工程专业学生人数,输出专业名称和总人数。
SELECT 专业, COUNT([专业]) AS 人数
FROM 学生表
WHERE 专业=软件工程
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;5 表的连接查询;例:显示所有学生的课程名称和成绩字段。
SELECT 课程表.课程名称,选课表.成绩
FROM 课程表,选课表
WHERE 课程表.课程号=选课表.课程号;
SELECT为了简化输入,允许在查询中使用表的别名,以缩写表名,我们可以在SELECT子句中为表定义一个临时别名,然后在查询中引用。
例:显示所有学生的课程名称和成绩字段。
SELECT a.课程名称,b.成绩
FROM 课程表 a,选课表 b
WHERE a.课程号=b.课程号;
;例:显示每门课程的课程号及平均成绩。
SELECT 选课表.课程号, AVG(选课表.成绩) AS 平均分
FROM 学生表, 选课表
WHERE 学生表.学号=选课表.学号
GROUP BY 选课表.课程号;
或
例:显示每门课程的课程名称及平均成绩。
SELECT X.课程名称, AVG(Y.成绩) AS 平均分
FROM 课程表 X, 选课表 Y
WHERE X.课程号=Y.课程号
GROUP BY X.课程名称;;如果涉及到更多的数据表该怎么做呢?
例:显示所有成绩高于90分(包括90)的优秀学生的姓名、课程名称和成绩字段。
SELECT 学生表.姓名,课程表.课程名称,选课表.成绩
FROM 学生表,课程表,选课表
WHERE 学生表.学号=选课表.学号 and 课程表.课程号=选课表.课程号 and 选课表.成绩=90;
;例:显示“网络工程”专业学生的平均成绩。
SELECT 选课表.课程号, AVG(选课表.成绩) AS 平均分
FROM 学生表, 选课表
WHERE 学生表.学号=选课表.学号 AND 学生表.专业=“网络工程
GROUP BY 选课表.课程号;
例:显示“网络工程”专业学生姓名及所选的课程名称与成绩。
SELECT X.姓名,Y.课程名称, Z.成绩
FROM 学生表 X, 课程表 Y,选课表 Z
WHERE X.学号=Z.学号 AND X.专业=“网络工程”
AND Y.课程号 = Z.课程号;
;6 子查询;7 其他查询
在进行嵌套查询(子查询)时还可以使用有关的IN和NOT IN运算符。
例:查询显示存在有85分以上成绩的课程,显示课程号字段。
select 课程号 from 选课表 where 成绩 in(select 成绩 from 选课表 where 成绩85);
显示全部