
5.1 查询概述
查询是一种非常强大而灵活的定位特定记录的方式。通过查询,可以执行自定义搜索、应用自定义筛选器以及对记录进行排序。
5.1.1 查询的作用
查询是依据一定的查询条件对数据库中的数据进行查找的一种方式。它与表一样都是数据库的对象。
另外,查询是数据库中一种强大的数据管理功能,可以按照用户所指定的准则(条件)来查询数据。查询操作一般可满足以下需求:
□ 指定要查询的表(一个或者多个)及准则来限制结果集中显示的记录。
□ 指定结果集中显示的字段及记录的排序方式。
□ 对结果集中的记录进行计算或者生成一个新表。
□ 通过结果集建立窗体、报表以及图表等。
□ 对结果集进行查询或者查找指定条件的记录。
通过上述描述查询的作用,用户可以理解查询所完成的功能。查询与前面介绍的筛选看起来非常相似,可是结果却有所不同。
查询与筛选都是从一个表或另一个查询中检索出记录的子集。但是查询不必打开表就可以对数据进行检索操作,而筛选必须打开表才能检索表中的数据。
查询与筛选的区别如下表所示。

5.1.2 查询的类型
任何数据库,不管是自动的还是人工的,其主要作用是在数据表中保存数据,并能够在需要的时候按照一定的条件将数据从数据表中提取出来。Access为用户提供了选择查询、参数查询、交叉表查询、操作查询等查询方法。
1. 选择查询
选择查询就是从一个或多个相互关联的表中将满足要求的数据提取出来,并把这些数据显示在新的查询数据表中。
选择查询具有以下特点:
□ 从一个表或多个表中按照指定的准则(条件)进行查找,并显示其结果集。
□ 选择查询对记录进行分组,并且对记录做总计、计数、平均以及其他类型的计算。
□ 重复项查询可以在数据库的表中查找具有相同字段信息的重复记录。
□ 不匹配查询是在表中查找与指定的条件不相符的记录。
2. 参数查询
参数查询是一种特殊的查询,在执行时显示对话框提示用户输入信息,比如准则。
在这种查询中,用户以交互方式指定一个或多个条件值。参数查询不是一个单独种类的查询,而是扩展了查询的灵活性。
用户可以通过创建窗体来收集参数值,参数查询使用窗体可以提供以下控件和功能:
□ 使用特定于数据类型的控件。
□ 启用参数值的持久性。
□ 提供组合框控件。
□ 使用窗体中可用的其他控件。
3. 交叉表查询
使用交叉表查询计算和重构数据,可以简化数据分析。交叉表查询是一种选择查询,其结果显示在一个数据表中,并且该数据表的结果不同于其他类型的数据表。
交叉表主要用来计算数据的总和、平均值、计数或其他类型的总计值。
4. 操作查询
操作查询用于对表执行全局数据管理操作。用户可以通过操作查询完成某种操作,例如更新或删除表中的记录。
虽然其他查询也可以进行某些操作,但是每次只能修改一个记录,而操作查询能够通过单一的操作同时完成多个记录的修改。操作查询包括以下类型:
□ 更新查询。对一个或多个表中的一组记录进行全局更改。
□ 追加查询。把一个或多个表的一组记录添加到一个或多个表的末尾。
□ 删除查询。从一个或多个表中删除特定的一组记录。
□ 生成表查询。用一个或多个表中的数据创建一个新表。
5. SQL查询
所有查询其实都对应着SQL语句,但是SQL查询是由程序设计语言构造的,而不是像其他查询类型那样用设计网格构成。SQL查询包括以下类型:
□ 联合查询。该查询使用UNION运算符来合并两个或更多个选择查询的结果。
□ 传递查询。该查询可以用于直接向ODBC数据库服务器发送命令。通过使用传递查询,可以直接使用服务器上的表,而不用让Microsoft Jet数据库引擎处理数据。
□ 数据定义查询。该查询包含数据定义语言(DDL)语句的SQL特有查询。这些语句可用来创建或更改数据库中的对象。
□ 子查询。该查询是在另一个选择查询或操作查询内的SELECT语句。
5.1.3 查询条件
查询条件是一种规则,用来标识要包含在查询结果中的记录。并非所有查询都必须包含条件,如果要查看表中的相关记录,则必须在查询过程中添加条件。
1. 查询条件简介
查询条件类似于公式,是由字段引用、运算符和常量组成的字符串。在Access中,查询条件也称为表达式。下表显示了某些查询条件的示例及说明。

一般条件很简单,只使用基本运算符和常量。而有些条件很复杂,不仅使用函数、特殊运算符,还包含字段引用。
例如,首先在【查询1】窗体中,添加【出货单】表,并选择需要查询的字段。然后,在条件文本框中设置“出货日期”在一个月之前的表达式,同时将【出货ID】的条件设置为“=3”。

最后,执行【查询工具】|【结果】|【运行】命令,即可显示查询结果。

在使用条件时,用户需要注意以下几点:
□ 如果条件是临时的或者经常更改,则可以筛选查询结果,而不是频繁修改查询条件。
□ 如果条件字段不变,但是值需要频繁更改,则可以创建参数查询。参数查询会提示用户提供字段值,然后使用这些值创建查询条件。
提示
如果条件语句是二选一(即“或”操作),则可以将条件分别输入到【条件】文本框和【或】文本框。
2. 文本、备注和超链接字段的条件
在查询过程中,一般可以对不同类型的数据查询不同的结果集。下表是文本查询使用条件的示例。

3. 数字、货币和自动编号字段的条件
除了对文本、备份等类型字段进行查询外,一般较常用的是对数字、货币等数据的查询。下表是此类查询条件的示例。

4. 日期/时间字段的条件
用户可以通过查询来查找指定日期出货的情况等,也可以查看某些货物的入库时间。下表是日期/时间字段查询的条件示例。
