1、基于Access数据库的计算查询教学实例翻开文本图片集查询作为Access数据库六大对象之一,是Access数据库中最重要的应用查询可以对数据进行检索、处理,数据处理中经常会涉及到数据的计算。创立计算查询是整个查询对象的重难点之一,几种方式容易混淆,计算查询在Access全国计算机等级二级考试中也是必考知识点。本文对计算查询中涉及到的查询种类以及适用场合用具体的实例做了详细分析。【关键词】Access数据库 查询设计 计算查询1 引言Access数据库对象有表、查询、窗体、报表、宏、模块。从数据库最典型的应用来说,查询是Access数据库中最重要的对象之一。它不仅可以能够快速从不同的数据表中检
2、索中符合条件的记录,还能对检索结果进行分析和处理。数据处理包括对数据进行计算、统计,这类查询统称计算查询。2 计算查询作用分析在数据库操作中,数据的统计、计算与检索在日常工作中占很大的比例。近年来,计算查询在每年的全国计算机等级二级Access考试中成为了必考知识点。Access查询分为选择查询、参数查询、交叉表查询、操作查询、SQL查询五种类型,有关计算的查询没有单独归类。其中参数查询是一种特殊的选择查询,只是在选择查询的条件行上用方括号处理。操作查询可以对数据表中的原始数据进行修改,包括生成一张新表、向现有表中追加数据、更新现有表中的数据以及删除现有表中的数据,这几种操作查询都没有涉及到计
3、算查询。SQL查询是通过Select语句来创立各种查询包括计算查询在内,Select语句在本文中不做介绍。本文只介绍在查询设计视图中涉及的计算查询:选择查询和交叉表查询。3 计算查询分类与实例分析3.1 计算查询分类计算查询分为两大类:一是利用表达式计算出新字段的查询;二是利用总计行进行分组计算的查询。下面就通过具体的教学实例来详细分析这两种计算查询。本文所有实例均使用“学生管理系统数据库来完成,该数据库中有六张数据表:“学生信息表、“学生成绩表、“课程表、“班级表、“教师表、“授课表,各表都已经按照相关字段建立了数据库表间关系。各表结构如下:學生信息表学号,姓名,性别,出生年月,政治面貌,生
4、源地,班级编号,联系;学生成绩表学号,课程号,成绩;课程表课程编号,课程名称;班级表班级编号,班级名称,所在系;教师表教师号,姓名,性别,出生年月,政治面貌,参加工作时间,职称,工资,所在系,联系;授课表教师号,课程号,班级编号,学期3.2 表达式计算出新字段的查询利用表达式构造新字段的计算查询,这类查询适用于要查询的内容在原始数据表中并不存在该字段,但是我们可以通过已经存在的相关字段加以计算而得出。具体实例如下:实例一:创立计算学生年龄的查询,要求结果显示学号,姓名,年龄内容。分析:所需数据表为“学生信息表;所需字段为学号、姓名,年龄字段并不存在,但是通过对出生日期计算可以得到年龄;年龄的计
5、算方法分析当前年份减去出生年份,相应表达式为:yeardate-year出生年月操作步骤:1翻开查询设计器;2添加“学生信息表;3选择“学号、“姓名字段;4在“姓名字段的后一个字段列输入年龄:yeardate-year出生年月;5运行;6保存。注意:本实例的关键是年龄字段的构造,利用正确的表达式计算出年龄的值。如果表达式中出现了数据表中的字段名,那么字段名一定要放在英文半角的方括号中。在“学生管理系统数据库中还有“教师表,可以利用相似的表达式来计算教师的工龄。在“图书管理系统的图书表中还可以利用图书入库量字段减去出库量字段得到图书库存量。3.3 总计行进行分组计算的查询总计行的分组计算查询分为
6、两种:1利用选择查询中的汇总按钮计算;2利用交叉表查询中的总计行计算。两种总计行中的选项一样,常用主要有Group By、合计、平均值、最大值、最小值、计数六个选项。Group By是本计算查询中的分组项,可以是字段也可以是表达式。下面通过具体实例来分析两种总计行分组计算查询的适用场合及用法。操作对象使用本文的“学生管理系统数据库。3.3.1 选择查询中的汇总实例二:统计各班人数要求结果中出现班级名称、总人数。分析:所需表“学生信息表、“班级表;所需字段“班级表中的“班级名称,“学生信息表中的“学号;分组项为“班级名称字段,“学号字段进行计数计算。操作步骤:1翻开查询设计器;2添加“学生信息表
7、、班级表;3选择“班级名称、“学号字段;4单击汇总按钮,在总计行设置“班级名称为Group By,“学号为计数,并且在“学号的字段行更改“学号之计数为“总人数。5运行;6保存。运行结果如图1。实例三:统计不同职称的教师工资要求结果中出现职称、平均工资。分析:所需表“教师表;所需字段“职称、“工资;分组项为“职称字段,“工资字段进行平均值计算。操作步骤:1翻开查询设计器;2添加“教师表;3选择“工资、“职称字段;4单击汇总按钮,在总计行设置“职称为Group By,“工资为平均值,并且在“工资的字段行更改“工资之平均值为“平均工资。5运行;6保存;注意:平均值在计算时经常会出现小数位数过多的情况
8、,可以把“工资字段列更改成表达式:ROUNDAVG工资来完成只保存整数局部,小数局部四舍五入。也可以把四舍五入ROUND函数换成INT直接取整。实例四:统计所有课程的总分、平均分、最高分、最低分要求结果中出现课程名称及四个统计结果分析:所需表“课程表、“学生成绩表;所需字段“课程名称、“成绩;分组项为“课程名称字段,“成绩字段进行四次计算分别为总计、平均值、最大值、最小值,在这里要特别注意“成绩字段要选四次分别计算。操作步骤:1翻开查询设计器;2添加“课程表、“学生成绩表;3选择“课程名称、“成绩字段;4单击汇总按钮,在总计行设置“课程名称为Group By,四个“成绩字段分别为总计、平均值、
9、最大值、最小值,并更改四個“成绩的字段行标题“总分、“平均分、“最高分、“最低分。5运行;6保存。运行结果如图2。3.3.2 交叉表查询交叉表查询是表中的记录按照不同的字段进行几次分组,分组字段分行标题和列标题两种,行标题位于数据表左侧,列标题位于数据表顶端,行列标题交叉点是分组计算的某个字段的计算结果。交叉表查询在很多教材中都是通过向导创立的,只用了很少的篇幅一带而过。交叉表查询向导只能创立数据源来自一个表或查询的字段,对涉及到多表的查询通常需要使用查询设计视图来创立。初学者理解起来比拟困难,笔者通过几个实例详细分析交叉表查询的创立过程及本卷须知。交叉表查询在创立之前除了选定数据源表或查询之
10、外,还要确定三项数据:一是行标题;二是列标题;三是行列交叉处的字段,以及该字段需要什么总计方式。在这里要说明的是:无论是行标题还是列标题都是分组项,一个交叉表查询最少要有一个行标题、一个列标题、一个值。最多行标题的数目可以是三个,列标题还是一个,值还是一个。交叉表查询最少要有两个分组字段,最多可以四个分组字段,值始终都只能是一个,列标题字段的字段名不出现,只出现字段值。例如选取“性别字段作列标题,那么结果顶端只显示“男、“女两个值作为列标题。实例五:统计各班的男女生人数。结果显示“班级名称,“男,“女分析:此题中的数据源为“学生信息表、“班级表;所需分组字段为“学生信息表的“性别为列标题,“班
11、级表中的“班级名称为行标题;所需统计字段为“学生信息表的“学号作计数计算。两张表是通过“班级编号创立的一对多的关系。操作步骤:1翻开查询设计器;2添加“学生信息表、“班级表;3选择“班级名称、“性别、“学号三个字段;4单击查询类型的“交叉表按钮,在总计行设置“班级名称为Group By,“性别为Group By,“学号为计数,并且在交叉表行设置“班级名称为行标题,“性别为列标题,“学号为值。5运行;6保存。运行结果如图3。本实例也可以使用选择查询中汇总来完成。运行结果如图4。实例六:统计学生每门课程成绩,要求使用交叉表查询。分析:所需数据源表“课程表、“学生成绩表、“学生信息表;所需分组字段为
12、“学生成绩表中的“学号作行标题,“学生信息表中的“姓名作行标题,“课程表中的“课程名称为列标题,“学生成绩表中的“成绩作值。这里“成绩的总计行选“总计、“平均值、“最大值、“最小值都可以,因为每个学生每门课程只有一个值,它无论以上四种计算结果都一样。操作步骤:1翻开查询设计器;2添加“学生信息表、“学生成绩表、“课程表;3选择“学号、“姓名、“课程名称、“成绩四个字段;4单击查询类型的“交叉表按钮,在总计行设置“学号为Group By,“姓名为Group By,“课程名称为Group By,“成绩为“总计、“平均值、“最大值、“最小值四个中的任意一个,并且在交叉表行设置“学号为行标题,“姓名为
13、行标题,“课程名称为列标题,“成绩为值。5运行;6保存。4 总结基于Access的计算查询第一种构造新字段查询,关键在于如何利用已经存在的字段,书写正确的能计算出符合要求表达式;第二种分组统计查询是使用交叉表查询还是选择查询中的汇总,要根据实际情况来确定。综上所述,如表1结论。在实际创立统计查询时,有时以上两种方式都可以完成例如本文的实例五,但统计结果在清晰度上有一定的差异,需要查询设计者自己体会,选择最适宜的查询方式。希望本文能够对于设计者创立计算查询有所帮助。参考文献1李雁翎.Access 2003数据库技术及应用M.高等教育出版社,2023.2张成叔.Access 2023数据库技术及应用第四版M.中国铁道出版社,2023.3屈武江.耿青松.Access数据库技术与应用工程人教程M.大连理工出版社,2023.