1、 查询是查询是AccessAccess数据库的对数据库的对象之一,使用查询对象可以象之一,使用查询对象可以将查询命令预先保存,在需将查询命令预先保存,在需要时只要运行查询对象即可要时只要运行查询对象即可自动执行查询中规定的查询自动执行查询中规定的查询命令,从而大大方便用户进命令,从而大大方便用户进行查询操作。行查询操作。退出退出4.1 4.1 查询概述查询概述4.2 4.2 创建选择查询创建选择查询4.3 4.3 查询的运行和修改查询的运行和修改4.4 4.4 查询条件的设置查询条件的设置4.5 4.5 设置查询的计算设置查询的计算4.6 4.6 交叉表查询交叉表查询4.7 4.7 参数查询参
2、数查询4.8 4.8 操作查询操作查询4.9 SQL4.9 SQL查询查询 在在 Access 数据库中,表是存储数据的最基本的数据数据库中,表是存储数据的最基本的数据库对象,而查询则是对表中的数据进行检索、统计、分析、库对象,而查询则是对表中的数据进行检索、统计、分析、查看和更改的又一个非常重要的数据库对象。查看和更改的又一个非常重要的数据库对象。一个查询对象实际上是一个查询命令,实质上它是一一个查询对象实际上是一个查询命令,实质上它是一个个SQL 语句。运行一个查询对象实质上就是执行该查询中语句。运行一个查询对象实质上就是执行该查询中规定的规定的SQL 命令。命令。简单来说,表是将数据(根
3、据规范化的要求)进行了简单来说,表是将数据(根据规范化的要求)进行了分割,而查询则是从不同的表中抽取数据并组合成一个动分割,而查询则是从不同的表中抽取数据并组合成一个动态数据表。查询可以从多个表中查找到满足条件的记录组态数据表。查询可以从多个表中查找到满足条件的记录组成一个动态数据表,并以数据表视图的方式显示。成一个动态数据表,并以数据表视图的方式显示。查询结果仅仅是一个临时的动态数据表,查询结果仅仅是一个临时的动态数据表,当关闭查询的数据表视图时,保存的是查询的当关闭查询的数据表视图时,保存的是查询的结构,并不保存该查询结果的动态数据表。结构,并不保存该查询结果的动态数据表。表和查询都是查询
4、的数据源,表和查询也表和查询都是查询的数据源,表和查询也是窗体、报表的数据源。是窗体、报表的数据源。建立查询之前,一定要先建立表与表之间建立查询之前,一定要先建立表与表之间的关系。的关系。在在 Access 中,提供有如下五种类型的中,提供有如下五种类型的 查询:查询:选择查询选择查询 参数查询参数查询 交叉表查询交叉表查询 操作查询操作查询 SQL 查询查询 选择查询是最常见的查询类型,它从一个或多个表选择查询是最常见的查询类型,它从一个或多个表中检索数据,并且在中检索数据,并且在“数据表视图数据表视图”中显示结果。也可以中显示结果。也可以使用选择查询来对记录进行分组,并且对记录作合计、计使
5、用选择查询来对记录进行分组,并且对记录作合计、计数、平均值等计算。查询结果仅仅是一个临时的动态数据数、平均值等计算。查询结果仅仅是一个临时的动态数据表。表。例例4-1 在在“学生管理系统学生管理系统”数据库的数据库的“学生学生”表里,表里,查找出查找出1986年后(含年后(含1986)出生的女学生)出生的女学生的姓名、性别的姓名、性别和出生日期和出生日期。使用查询的。使用查询的“设计视图设计视图”创建出该查询,创建出该查询,其设计视图如图其设计视图如图4-1所示。当运行该查询时,以所示。当运行该查询时,以“数据表数据表视图视图”方式显示出该查询的结果,如图方式显示出该查询的结果,如图4-2所示
6、。所示。图图4-2 查询结果查询结果图图4-1 “设计视图设计视图”2 2参数查询参数查询 使用交叉表查询可以计算并重新组织数据的结构,这样使用交叉表查询可以计算并重新组织数据的结构,这样可以更加方便地分析数据。交叉表查询可以对记录作合计、可以更加方便地分析数据。交叉表查询可以对记录作合计、平均值、计数等计算,这种数据可分为两组信息:一类在数平均值、计数等计算,这种数据可分为两组信息:一类在数据表左侧排列,另一类在数据表的顶端。据表左侧排列,另一类在数据表的顶端。例例4-3 在在“学生管理系统学生管理系统”数据库的数据库的“学生学生”表中,统表中,统计出各班男、女学生的人数。使用查询的计出各班
7、男、女学生的人数。使用查询的“设计视图设计视图”创建创建出该查询,当运行查询时,以出该查询,当运行查询时,以“数据表视图数据表视图”方式显示出该方式显示出该交叉表查询的结果。交叉表查询的结果。操作查询是这样一种查询,使用这种查询操作查询是这样一种查询,使用这种查询只需进行一次操作就可对许多记录进行更改和只需进行一次操作就可对许多记录进行更改和移动。有如下四种操作查询移动。有如下四种操作查询:生成表查询生成表查询 追加查询追加查询 更新查询更新查询 删除查询。删除查询。SQL查询是用户使用查询是用户使用 SQL 语句创建的查询。可以用结构化语句创建的查询。可以用结构化查询语言查询语言(SQL)来
8、查询、更新和管理来查询、更新和管理 Access 这样的关系数据这样的关系数据库。在查询的库。在查询的“设计视图设计视图”中创建查询时,中创建查询时,Access 将在后台构将在后台构造等效的造等效的 SQL 语句。语句。可以在可以在“SQL 视图视图”中查看和编辑中查看和编辑 SQL 语句。但是,在语句。但是,在对对 SQL 视图中的查询做更改之后,查询可能无法以以前在视图中的查询做更改之后,查询可能无法以以前在“设设计视图计视图”中所显示的方式进行显示。中所显示的方式进行显示。有一些有一些 SQL 查询,称为查询,称为“SQL 特定查询特定查询”,无法在,无法在“设设计视图计视图”的设计网
9、格中进行创建,如传递查询、数据定义查询的设计网格中进行创建,如传递查询、数据定义查询和联合查询,都必须直接在和联合查询,都必须直接在“SQL 视图视图”中创建中创建 SQL 语句。语句。图图4-5 例例4-1查询查询的的“SQL视图视图”在在“创建创建”选项卡上的选项卡上的“查询查询”组中有组中有“查查询向导询向导”和和“查询设计查询设计”两个按钮,如图两个按钮,如图4-6所示,所示,可用于创建查询。单击可用于创建查询。单击“查询向导查询向导”按钮,则显出按钮,则显出“新建查询新建查询”对话框对话框。图图4-6“创建创建”选项卡上的选项卡上的“查询查询”组组图图4-7“新建查询新建查询”对话框
10、中对话框中四种创建查询向导四种创建查询向导 选择查询的功能是从一个或多个表中选择查询的功能是从一个或多个表中检索数据,并且在检索数据,并且在“数据表视图数据表视图”中显示中显示结果。查询结果仅仅是一个临时的动态数结果。查询结果仅仅是一个临时的动态数据表。据表。Access提供了向导功能以帮助用户方便快速创建简提供了向导功能以帮助用户方便快速创建简单的查询对象。使用向导创建查询对象的步骤如例单的查询对象。使用向导创建查询对象的步骤如例4-4 和例和例4-5 所述。所述。单击单击“创建创建”选项卡上的选项卡上的“查询查询”组中的组中的“查询向查询向导导”按钮,显出按钮,显出“新建查询新建查询”对话
11、框。对话框。例例4-4 在在“学生管理系统学生管理系统”数据库中,用数据库中,用“学生学生”表创建一个名为表创建一个名为“例例4-4学生高考总分查询学生高考总分查询”的查询。的查询。该查询只要求显示学号、姓名、性别和高考总分四个字该查询只要求显示学号、姓名、性别和高考总分四个字段。段。例例4-5 在在“学生管理系统学生管理系统”数据库中,用数据库中,用“学生学生”表创建一个名为:表创建一个名为:“例例4-5男女学生平均高考总分查询男女学生平均高考总分查询”的查询。的查询。单击单击“创建创建”选项卡上的选项卡上的“查询查询”组中的组中的“查询查询设计设计”按钮,打开查询按钮,打开查询“设计视图设
12、计视图”。查询的查询的“设计视图设计视图”分为上、下两部分,上半部分为上、下两部分,上半部分称为分称为“字段列表字段列表”区,显示所选定的数据源表或查区,显示所选定的数据源表或查询(注意:查询也可作为查询的数据源)的所有字段。询(注意:查询也可作为查询的数据源)的所有字段。下半部分称为下半部分称为“设计网格设计网格”区,用于确定查询结果动区,用于确定查询结果动态集所拥有的字段、排序和检索条件等。态集所拥有的字段、排序和检索条件等。在在“设计网格设计网格”中需要设置如下内容:中需要设置如下内容:(1)字段:设置查询所涉及的字段。)字段:设置查询所涉及的字段。(2)表:)表:字段所属的表。字段所属
13、的表。(3)排序:查询的排序准则(如升序或降序)。)排序:查询的排序准则(如升序或降序)。(4)显示:当复选框选中时,字段将在查询结果中显出,否则,在查询结果中)显示:当复选框选中时,字段将在查询结果中显出,否则,在查询结果中不显出。不显出。(5)条件:设置检索记录的条件(也称为准则)。)条件:设置检索记录的条件(也称为准则)。(6)或:)或:设置检索记录的条件(也称为准则)。设置检索记录的条件(也称为准则)。例例4-6 在在“学生管理系统学生管理系统”数据库中,使用数据库中,使用“设计视图设计视图”创创建一个名为建一个名为“例例4-6查询高考总分查询高考总分750分以上的女生分以上的女生”的
14、查询。查的查询。查询要求是:对询要求是:对“学生学生”表,检索高考总分表,检索高考总分750分以上(含分以上(含750)的)的女学生的记录,并要求按高考总分降序进行排序,仅要求显示学女学生的记录,并要求按高考总分降序进行排序,仅要求显示学号、姓名、班级号、性别和高考总分五个字段。号、姓名、班级号、性别和高考总分五个字段。运行查询实际上就是打开该查询的运行查询实际上就是打开该查询的“数据表数据表视图视图”,以表格形式显出该查询结果的动态集记,以表格形式显出该查询结果的动态集记录数据。录数据。修改查询实际上就是打开该查询的修改查询实际上就是打开该查询的“设计视设计视图图”,对查询所涉及的字段及条件
15、等进行设计修,对查询所涉及的字段及条件等进行设计修改。改。运行查询的六种基本方法:运行查询的六种基本方法:(1)打开某查询的)打开某查询的“设计视图设计视图”,单击,单击“查询工具查询工具”下的下的“设计设计”选项卡的选项卡的“结果结果”组中的组中的“运行运行”按钮。按钮。(2)打开某查询的)打开某查询的“设计视图设计视图”,单击,单击“查询工具查询工具”下的下的“设计设计”选项卡的选项卡的“结果结果”组中的组中的“视图视图”(默认是(默认是“数据表视图数据表视图”)按)按钮。钮。(3)打开某查询的)打开某查询的“设计视图设计视图”,右击该,右击该“设计视图设计视图”中的空白中的空白处,弹出快
16、捷菜单,单击该快捷菜单中的处,弹出快捷菜单,单击该快捷菜单中的“数据表视图数据表视图”。(4)双击)双击“导航窗格导航窗格”上的查询对象列表中要运行的查询名称。上的查询对象列表中要运行的查询名称。(5)右击)右击“导航窗格导航窗格”上的查询对象列表中要运行的查询名称,上的查询对象列表中要运行的查询名称,弹出快捷菜单,单击该快捷菜单中的弹出快捷菜单,单击该快捷菜单中的“打开打开”。此外此外还有其他的运行查询方法,如在还有其他的运行查询方法,如在“宏宏”中运行查询的方法中运行查询的方法。右击右击“导航窗格导航窗格”上查询对象列表中的某个查询,上查询对象列表中的某个查询,弹出快捷菜单,单击该快捷菜单
17、中的弹出快捷菜单,单击该快捷菜单中的“设计视图设计视图”,打,打开该查询的开该查询的“设计视图设计视图”,便可,便可对对该该查询的结构设计进查询的结构设计进行各种更改行各种更改。如果所需的数据不在查询中,可以添加一个表或查如果所需的数据不在查询中,可以添加一个表或查询,或者如果决定不需要某个表或查询,也可以将其删询,或者如果决定不需要某个表或查询,也可以将其删除。添加了所需的表或查询后,就可以在除。添加了所需的表或查询后,就可以在“设计网格设计网格”中添加要使用的字段,在决定不需要这些字段时可以将中添加要使用的字段,在决定不需要这些字段时可以将其删除。可对字段排序分别进行排序设置。也可通过把其
18、删除。可对字段排序分别进行排序设置。也可通过把鼠标指针移到某字段鼠标指针移到某字段“列选定器列选定器”的右边界,使鼠标指的右边界,使鼠标指针变成双箭头时拖动鼠标的方法来调整查询的列宽等等。针变成双箭头时拖动鼠标的方法来调整查询的列宽等等。例例4-7 在在“学生管理系统学生管理系统”数据库中,对已经创建好的名为数据库中,对已经创建好的名为“例例4-6查询高考总分查询高考总分750分以上的女生分以上的女生”的查询对象进行的查询对象进行“复制复制”操作、操作、“粘贴粘贴”操作,产生出一个新的名为操作,产生出一个新的名为“例例4-7查询高考总分查询高考总分750分以上的学生分以上的学生”查询。然后对新
19、建的查询。然后对新建的“例例4-7查询高考总分查询高考总分750分以上的学生分以上的学生”查询的设计按如下要求进行修改,该查询要查询的设计按如下要求进行修改,该查询要求是:检索高考总分求是:检索高考总分750分以上(含分以上(含750)的学生记录,并要求按)的学生记录,并要求按“性别性别”升序、升序、“高考总分高考总分”降序对查询结果的记录进行排序降序对查询结果的记录进行排序(即先按(即先按“性别性别”字段值升序排序,当字段值升序排序,当“性别性别”字段值相同时再字段值相同时再按按“高考总分高考总分”字段值降序排序),并要求显示学号、姓名、班字段值降序排序),并要求显示学号、姓名、班级名称、性
20、别和高考总分五个字段。级名称、性别和高考总分五个字段。提示:提示:对于要求显示对于要求显示“班级名称班级名称”字段,故需要先在该查询的字段,故需要先在该查询的“设计视图设计视图”中添加中添加“班级班级”表,然后,在表,然后,在“设计网格设计网格”区,把区,把原来的原来的“学生学生”表的表的“班级号班级号”字段更改为字段更改为“班级班级”表的表的“班级班级名称名称”字段。其他更改按查询要求进行相应的设置。字段。其他更改按查询要求进行相应的设置。修改前修改前修改后修改后 创建查询时,通过对字段添加限制条创建查询时,通过对字段添加限制条件,使查询结果中只包含满足查询条件的件,使查询结果中只包含满足查
21、询条件的数据。数据。在查询的在查询的“设计视图设计视图”中,若要对中,若要对“设计网格设计网格”区中区中的某个字段指定条件,就可在该字段的的某个字段指定条件,就可在该字段的“条件条件”单元格中单元格中直接输入一个表达式。直接输入一个表达式。表达式是运算符、常数、函数和字段名称等的任意组表达式是运算符、常数、函数和字段名称等的任意组合。表达式可执行计算,其计算结果为单个值。对于较复合。表达式可执行计算,其计算结果为单个值。对于较复杂的表达式,当光标处于该字段的杂的表达式,当光标处于该字段的“条件条件”单元格时,单单元格时,单击击“查询工具查询工具”下的下的“设计设计”选项卡中的选项卡中的“查询设
22、置查询设置”组组上的上的“生成器生成器”按钮按钮,打开表达式生成器,在表达式生成,打开表达式生成器,在表达式生成器中构造表达式,如图器中构造表达式,如图4-31所示。在输入表达式时,除了所示。在输入表达式时,除了汉字以外,其他所有字符必须是在英文输入法状态下输入。汉字以外,其他所有字符必须是在英文输入法状态下输入。图图4-31 表达式生成器示例表达式生成器示例 对于比较运算符来说,要比较的数据的数对于比较运算符来说,要比较的数据的数据类型必须匹配。也就是说,文本只能与文本据类型必须匹配。也就是说,文本只能与文本比较,数字只能与数字比较,等等。可以使用比较,数字只能与数字比较,等等。可以使用函数
23、临时将数据转换为其他数据类型,然后再函数临时将数据转换为其他数据类型,然后再作比较。比较运算符的含义、示例等信息如表作比较。比较运算符的含义、示例等信息如表4-1所示。所示。表表4-1 比较运算符比较运算符 运算符运算符含义含义SQL 视图窗口示例视图窗口示例Not 条件的逻辑否条件的逻辑否 SELECT*FROM 学生学生 WHERE NOT(性别性别=女女);And 必须同时满足两个条件必须同时满足两个条件 SELECT*FROM 学生学生 WHERE 性别性别=女女 AND 班级号班级号=3;Or 满满 足一个条件即可足一个条件即可 SELECT 学号学号,课程代码课程代码,成绩成绩 F
24、ROM 修课成绩修课成绩 WHERE 成绩成绩 90;运算符运算符含义含义设计网格区示例设计网格区示例SQL 视图窗口示例视图窗口示例 IN测试某值是否出测试某值是否出现在值的列现在值的列表中。表中。或或测试某值是否出测试某值是否出现在一个子现在一个子查询的结果查询的结果集内。集内。In(足球足球,篮球篮球)In(SELECT 学号学号 FROM 修课成绩修课成绩 WHERE 成绩成绩 60)SELECT*FROM 学生学生 WHERE 特长特长 In(足球足球,篮球篮球);SELECT 姓名姓名 FROM 学生学生 WHERE 学号学号 In(SELECT 学号学号 FROM 修课成绩修课成
25、绩 WHERE 成绩成绩=18SELECT 学号学号,姓名姓名,性别性别,出生日期出生日期FROM 学生学生WHERE Year(Date()Year(出生日期出生日期)=18;Time()返回当前系统返回当前系统时间。时间。Hour(time)返回返回 0 和和 23 之之间的整数(表间的整数(表示一天中某个示一天中某个小时)。小时)。4.4.7 4.4.7 设置查询的组合条件设置查询的组合条件 在查询的在查询的“设计视图设计视图”中的中的“设计网格设计网格”区,区,“条件条件”行、行、“或或”条件行以及条件行以及“或或”行下边紧接着的若干空白行行下边紧接着的若干空白行的单元格,均可用来设置
26、查询条件的表达式。的单元格,均可用来设置查询条件的表达式。在查询的在查询的“设计网格设计网格”区,用户可以在多个字段的区,用户可以在多个字段的“条件条件”单元格(包括单元格(包括“条件条件”行的单元格和行的单元格和“或或”条件条件行的单元格等)中设置查询条件的表达式。对于多个字段行的单元格等)中设置查询条件的表达式。对于多个字段的的“条件条件”单元格中的表达式,单元格中的表达式,Access数据库管理系统会数据库管理系统会自动使用自动使用 And 运算符或者运算符或者 Or 运算符去组合这些不同单元运算符去组合这些不同单元格中的表达式,构成一个组合条件,以满足复杂查询的需格中的表达式,构成一个
27、组合条件,以满足复杂查询的需要。要。1 1用用And And 运算符组合条件运算符组合条件 在查询的在查询的“设计网格设计网格”区,如果仅在同一条件行区,如果仅在同一条件行的不同单元格中设置了条件的表达式,表示这些在不的不同单元格中设置了条件的表达式,表示这些在不同单元格中设置的条件都必须要同时满足的。同单元格中设置的条件都必须要同时满足的。Access自动用自动用 And 运算符去组合这一条件行运算符去组合这一条件行中的不同单元格中的条件表达式,构成一个组合条件,中的不同单元格中的条件表达式,构成一个组合条件,表示要筛选满足该条件行所有(设置了条件的)单元表示要筛选满足该条件行所有(设置了条
28、件的)单元格的条件的记录。格的条件的记录。例例4-9 4-9(用用And And 运算符组合条件运算符组合条件例子)例子)例例4-9 查询高考总分查询高考总分750分以上(含分以上(含750)的男学)的男学生的生的学号、姓名、性别和高考总分学号、姓名、性别和高考总分。用用And 运算符组合条件运算符组合条件SQL视图视图设计视图设计视图2 2用用Or 运算符组合条件运算符组合条件 在查询的在查询的“设计视图设计视图”的的“设计网格设计网格”区,如果在每区,如果在每一条件行中仅有一个字段的一条件行中仅有一个字段的“条件条件”单元格(包括单元格(包括“条件条件”行的单元格和行的单元格和“或或”条件
29、行的单元格等)设置了查询条件条件行的单元格等)设置了查询条件的表达式,那么,对于这些条件行来说,的表达式,那么,对于这些条件行来说,Access数据库数据库管理系统会自动使用(一个或多个)管理系统会自动使用(一个或多个)Or 运算符去组合这运算符去组合这些不同条件行的表达式,构成一个组合条件,表示筛选只些不同条件行的表达式,构成一个组合条件,表示筛选只要满足任一条件行的要满足任一条件行的“条件条件”单元格条件的记录。单元格条件的记录。注意,注意,在查询的在查询的“设计视图设计视图”的的“设计网格设计网格”区,可区,可以在任一字段的以在任一字段的“条件条件”行单元格设置条件的表达式,也行单元格设
30、置条件的表达式,也可以在任一字段的可以在任一字段的“或或”条件行单元格设置条件的表达式,条件行单元格设置条件的表达式,还可以在任一字段的还可以在任一字段的“或或”行下边紧接着的若干空白行的行下边紧接着的若干空白行的单元格设置条件的表达式。单元格设置条件的表达式。例例4-10 4-10(用用 Or 运算符组合条件运算符组合条件例子例子 )例例4-10 查询高考总分查询高考总分690分以下以及分以下以及780分以上分以上(含(含780)的学生的学号、姓名、性别和高考总分。)的学生的学号、姓名、性别和高考总分。图图4-35 在同一个字段的不同条件行的条件单元格中设置查询条件在同一个字段的不同条件行的
31、条件单元格中设置查询条件设计视图设计视图用用 Or 运算符组合条件运算符组合条件SQL视图视图例例4-114-11(用用 Or 运算符组合条件运算符组合条件例子例子 )例例4-11 查询高考总分查询高考总分750分以上(含分以上(含750)的学)的学生以及全部女学生的学号、姓名、性别和高考总分。生以及全部女学生的学号、姓名、性别和高考总分。图图4-36 在两个不同字段的不同条件行(一字段一条件行)的条件单元格中设置查询条件在两个不同字段的不同条件行(一字段一条件行)的条件单元格中设置查询条件 设计视图设计视图用用 Or 运算符组合条件运算符组合条件SQL视图视图3 3用用And And 和和O
32、r Or 两个运算符组合条件两个运算符组合条件 在查询的在查询的“设计网格设计网格”区,如果对于若干不同字区,如果对于若干不同字段的不同条件行的段的不同条件行的“条件条件”单元格(包括单元格(包括“条件条件”行行的单元格和的单元格和“或或”条件行的单元格),设置了查询条条件行的单元格),设置了查询条件的表达式,件的表达式,Access数据库管理系统会自动使用数据库管理系统会自动使用(一个或多个)(一个或多个)And 运算符和(一个或多个)运算符和(一个或多个)Or 运运算符去组合这些不同字段的不同条件行的算符去组合这些不同字段的不同条件行的“条件条件”单单元格的表达式,构成一个组合条件,表示筛
33、选只要满元格的表达式,构成一个组合条件,表示筛选只要满足任何一条件行的所有足任何一条件行的所有“条件条件”单元格条件的记录。单元格条件的记录。例例4-12 4-12(用(用And And 和和Or Or 两个运算符组合条件)两个运算符组合条件)例例4-12 查询高考总分查询高考总分690分以下的男学生以及分以下的男学生以及780分以上(含分以上(含780)的女学生的学号、姓名、性别和高考)的女学生的学号、姓名、性别和高考总分。总分。图图4-38 在两个字段的两条件行的条件单元格中设置查询条件在两个字段的两条件行的条件单元格中设置查询条件 设计视图设计视图用用 Or 运算符组合条件运算符组合条件
34、用用 And 运算符组合条件运算符组合条件用用 And 运算符组合条件运算符组合条件SQL视图视图4.5 4.5 设置查询的计算设置查询的计算 要在查询中执行计算,可以在查询设计中使用要在查询中执行计算,可以在查询设计中使用“预定义计算预定义计算”或或“自定义计算自定义计算”形式来对查询中需形式来对查询中需要的计算进行相应的设置。要的计算进行相应的设置。预定义计算是预定义计算是Access 通过聚合函数对查询中的通过聚合函数对查询中的分组记录或全部记录进行分组记录或全部记录进行“总计总计”计算,比如求合计、计算,比如求合计、平均值、计数、最小值、最大值、标准偏差或方差等。平均值、计数、最小值、
35、最大值、标准偏差或方差等。计算中可用的聚合函数全都可以在查询的计算中可用的聚合函数全都可以在查询的“设设计视图计视图”的的“设计网格设计网格”区的区的“总计总计”行的任一单元行的任一单元格的下拉列表中选择到。格的下拉列表中选择到。4.5.1 4.5.1 设置查询的总计计算设置查询的总计计算(例(例4-13 4-13)例例4-13 在在“学生管理系统学生管理系统”数据库中创建一个查询,数据库中创建一个查询,统计全校学生人数。统计全校学生人数。分析:分析:本查询的运行结果实际上就是要统计出本查询的运行结果实际上就是要统计出“学生学生”表中的全部记录个数。表中的全部记录个数。在该查询的在该查询的“设
36、计视图设计视图”,单击单击“查询工具查询工具”下的下的“设计设计”选项卡的选项卡的“显示显示/隐藏隐藏”组中的组中的“汇总汇总”按钮,在按钮,在“设计网格设计网格”区显出区显出“总计总计”行行。例例4-134-13(续)(续)图图4-44“姓名姓名”的的“字段属性字段属性”对话对话框框 图图4-45 字段改标题后的查询结果字段改标题后的查询结果 图图4-43 字段改名前的查询结果字段改名前的查询结果 修改该字段标题修改该字段标题 4.5.2 4.5.2 设置查询的分组总计计算设置查询的分组总计计算(例(例4-14 4-14)例例4-14 在在“学生管理系统学生管理系统”数据库中创建一个数据库中
37、创建一个查询,统计全校男学生的高考总分的平均分和女学生查询,统计全校男学生的高考总分的平均分和女学生的高考总分的平均分。的高考总分的平均分。分析:本查询的运行结果实际上就是要分别统计出分析:本查询的运行结果实际上就是要分别统计出“学生学生”表中的表中的“性别性别”字段的值为字段的值为“男男”的高考总分的平均分和的高考总分的平均分和“性别性别”字段的值为字段的值为“女女”的高考总分的平均分。实际上就的高考总分的平均分。实际上就是要把是要把“学生学生”表中的全部记录按表中的全部记录按“性别性别”字段的值进行分字段的值进行分组,将全部组,将全部“性别性别”为为“男男”的学生记录分为一组并统计出的学生
38、记录分为一组并统计出该组的高考总分的平均分,将全部该组的高考总分的平均分,将全部“性别性别”为为“女女”的学生的学生记录分为一组并统计出该组的高考总分的平均分。记录分为一组并统计出该组的高考总分的平均分。例例4-144-14 (续(续)图图4-47 查询结果查询结果 图图4-46 “设计网格设计网格”区查询条件设置区查询条件设置 4.5.2 4.5.2 设置查询的分组总计计算(续)例设置查询的分组总计计算(续)例4-154-15 例例4-15 在在“学生管理系统学生管理系统”数据库中创建一数据库中创建一个查询,统计每一个学生已修的学分数。对于每个学个查询,统计每一个学生已修的学分数。对于每个学
39、生来说,某门课程的成绩大于等于生来说,某门课程的成绩大于等于60分才能计算该分才能计算该门课程的学分(若不及格,就不计算该门课程的学分门课程的学分(若不及格,就不计算该门课程的学分数)。要求在查询结果中显出数)。要求在查询结果中显出“学号学号”、“姓名姓名”和和“学分学分”。分析:分析:“学生学生”表中有表中有“学号学号”和和“姓名姓名”两两个字段,在个字段,在“修课成绩修课成绩”表中才有表中才有“成绩成绩”字段,在字段,在“课程课程”表中才有表中才有“学分学分”字段,故在创建该查询时字段,故在创建该查询时要添加要添加“学生学生”、“修课成绩修课成绩”和和“课程课程”三个表。三个表。例例4-1
40、5 4-15(续)(续)运行查询结果运行查询结果设计视图设计视图4.5.3 4.5.3 设置查询的自定义计算设置查询的自定义计算 自定义计算是指使用一个或多个字段中的自定义计算是指使用一个或多个字段中的数据在每个记录上执行数值、日期或文本计算。数据在每个记录上执行数值、日期或文本计算。在在“设计视图设计视图”中,对于自定义计算,可中,对于自定义计算,可直接在设计网格中创建新的计算字段。直接在设计网格中创建新的计算字段。创建计算字段的方法是:将表达式输入创建计算字段的方法是:将表达式输入到查询设计网格中的空到查询设计网格中的空“字段字段”单元格中。单元格中。4.5.3 4.5.3 设置查询的自定
41、义计算设置查询的自定义计算(例(例4-164-16)例例4-16 在在“学生管理系统学生管理系统”数据库中创建一个查询,计数据库中创建一个查询,计算每一个学生每一已修课程成绩的绩点数。对于每个学生来说,算每一个学生每一已修课程成绩的绩点数。对于每个学生来说,某一课程的成绩大于等于某一课程的成绩大于等于60分才能计算该门课程成绩的绩点分才能计算该门课程成绩的绩点数(若不及格,就不计算该门课程成绩的绩点数)。要求在查数(若不及格,就不计算该门课程成绩的绩点数)。要求在查询结果中显出询结果中显出“学号学号”、“课程名称课程名称”、“成绩成绩”和和“绩点绩点”,并按学号、课程代码排序并按学号、课程代码
42、排序。绩点的计算公式为:。绩点的计算公式为:成绩成绩/10-5。分析:分析:在在“修课成绩修课成绩”表中有表中有“学号学号”字段、字段、“课程代码课程代码”字段和字段和“成绩成绩”字段。在字段。在“课程课程”表中有表中有“课程名称课程名称”字段,字段,在任何表中都没有在任何表中都没有“绩点绩点”字段,故要添加一个计算字段,即字段,故要添加一个计算字段,即在在“设计网格设计网格”区的空白的区的空白的“字段字段”单元格输入:单元格输入:绩点绩点:成绩成绩/10-5 另外,另外,“课程代码课程代码”字段不需显示,在此例中添加进来仅字段不需显示,在此例中添加进来仅是为了排序用途。是为了排序用途。例例4
43、-164-16(续)(续)运行查询结果运行查询结果输入输入绩点绩点:成绩成绩/10-5设置不显示设置不显示设计视图设计视图4.6 4.6 交叉表查询交叉表查询 使用交叉表查询可以计算并重新组织数使用交叉表查询可以计算并重新组织数据的结构,这样可以更加方便地分析数据。据的结构,这样可以更加方便地分析数据。交叉表查询可以按分类对记录数据作合计、交叉表查询可以按分类对记录数据作合计、平均值、计数等计算平均值、计数等计算,这种数据可分为两组,这种数据可分为两组信息:一类在数据表左侧排列,另一类在数信息:一类在数据表左侧排列,另一类在数据表的顶端。据表的顶端。4.6.4.6.1 1 使用向导创建交叉表查
44、询使用向导创建交叉表查询(例例4-174-17 )例例4-17 在在“学生管理系统学生管理系统”数据库中,对数据库中,对“学生学生”表创建的交表创建的交叉表查询,计算各班级的男、女学生的人数。该查询的名称为:叉表查询,计算各班级的男、女学生的人数。该查询的名称为:例例4-17 班级男女学生人数班级男女学生人数交叉表查询。交叉表查询。单击单击“创建创建”选项卡的选项卡的“查询查询”组上的组上的“查询向导查询向导”按钮,按钮,显出显出“新建查询新建查询”对话框对话框,单击单击“交叉表查询向导交叉表查询向导”。图图4-54 选定行标题选定行标题(班级号)(班级号)图图4-55 选定列标题选定列标题(
45、性别)(性别)例例4-14-17 7 (续)(续)在在“请确定为每个列和行的交叉点计算出什么数字:请确定为每个列和行的交叉点计算出什么数字:”的的“交叉表查询向导交叉表查询向导”对话框中,单击选择对话框中,单击选择“函数函数”列表框中的列表框中的“Count”。图图4-56 指定计数函数指定计数函数Count 图图4-58 查询运行结果查询运行结果 4.6.4.6.2 2 使用设计视图创建交叉表查询使用设计视图创建交叉表查询 例例4-18 在在“学生管理系统学生管理系统”数据库中,对数据库中,对“修课成绩修课成绩”表创建交叉表查询,计算各学生各学年度的修课数。该查表创建交叉表查询,计算各学生各
46、学年度的修课数。该查询的名称为:例询的名称为:例4-18查询学生各学年的修课数查询学生各学年的修课数交叉表。交叉表。单击单击“查询工具查询工具”下的下的“设计设计”选项卡中的选项卡中的“查询类查询类型型”组上的组上的“交叉表交叉表”按钮,立即在该查询的按钮,立即在该查询的“设计网格设计网格”区添加上了区添加上了“总计总计”行和行和“交叉表交叉表”行,如图行,如图4-59所示。所示。“字段”单元格下拉按钮添加“总计”行和“交叉表”行4.6.2 4.6.2 使用设计视图创建交叉表查询使用设计视图创建交叉表查询(续例(续例4-18 4-18)选选“学号学号”为行标题为行标题选选“学年度学年度”为列标
47、题为列标题选选“计数计数”选选“值值”运行查询结果运行查询结果4.7 4.7 参数查询参数查询 参数查询是这样一种查询,它在运行时显示参数查询是这样一种查询,它在运行时显示“输输入参数值入参数值”的对话框,提示用户输入信息,用户可在的对话框,提示用户输入信息,用户可在该对话框中输入不同的条件参数值,即可检索该对话框中输入不同的条件参数值,即可检索到满足到满足条件的记录内容条件的记录内容。可以设计参数查询来提示输入条件,检索要满可以设计参数查询来提示输入条件,检索要满足该条件值的记录,例如,可设计参数查询来提示输足该条件值的记录,例如,可设计参数查询来提示输入一个入一个“班级号班级号”等。可以设
48、计多个参数查询来提示等。可以设计多个参数查询来提示更多的内容,例如,设计两个参数的查询来提示输入更多的内容,例如,设计两个参数的查询来提示输入两个日期,当运行时,检索出这两个日期之间的所有两个日期,当运行时,检索出这两个日期之间的所有记录。记录。4.7.4.7.1 1 在设计视图中创建单个参数的查询在设计视图中创建单个参数的查询 例例4-19 在在“学生管理系统学生管理系统”数据库中,创建数据库中,创建一个单个参数的查询,根据提示输入某一个一个单个参数的查询,根据提示输入某一个“班级班级号号”,检索出该班级的成绩不及格的,检索出该班级的成绩不及格的“班级号班级号”、“学号学号”、“姓名姓名”、
49、“课程名称课程名称”和和“成绩成绩”字段。字段。该查询的名称为:例该查询的名称为:例4-19按班级号查询成绩不及格的按班级号查询成绩不及格的学生名单。学生名单。分析:分析:“学生学生”表中有表中有“班级号班级号”、“学号学号”和和“姓名姓名”三个字段,在三个字段,在“修课成绩修课成绩”表中才有表中才有“成成绩绩”字段,在字段,在“课程课程”表中才有表中才有“课程名称课程名称”字段,字段,故在创建该查询时一定要添加故在创建该查询时一定要添加“学生学生”表、表、“修课成修课成绩绩”表和表和“课程课程”表等三个表。表等三个表。例例4-194-19(续)(续)图图4-63 含单个参数的查询的含单个参数
50、的查询的“设计视图设计视图”的设置的设置在在“班级号班级号”字段的字段的“条件条件”行单元格行单元格中输入:中输入:请输入要查询的班级号请输入要查询的班级号 例例4-194-19(续)(续)图图4-64“输入参数值输入参数值”对话框对话框 图图4-65 参数查询结果参数查询结果 当运行该查询时显出:当运行该查询时显出:运行查询结果运行查询结果4.7.4.7.2 2 在设计视图中创建多个参数的查询在设计视图中创建多个参数的查询 例例4-20 在在“学生管理系统学生管理系统”数据库中,创建一数据库中,创建一个含有两个参数的查询,提示输入两个日期,然后检个含有两个参数的查询,提示输入两个日期,然后检