如果想要从一个或多个源中选择特定数据,可使用选择查询。 选择查询可帮助仅检索所需数据,还可帮助合并来自多个数据源的数据。 可使用表和其他选择查询作为某个选择查询的数据源。 本主题提供选择查询的概述,并提供使用查询向导或在 设计视图 中创建选择查询所需的步骤。
如果要使用 Northwind 示例数据库深入了解查询的工作原理,请参阅文章查询简介。
本文内容
概述
需要使用数据时,很少会使用一个表中的所有数据。 例如,如果要使用“联系人”表中的数据,通常会查看某条特定记录,或者只查看电话号码。 有时会需要合并多个表中的数据,如将客户信息与订单信息合并。 要选择所需数据,可以使用选择查询。
选择查询是一种在 数据表视图 中显示信息的数据库对象。 查询不存储数据,它显示存储在表中的数据。 查询可显示来自一个或多个表的数据、来自其他查询的数据,或来自表和查询的数据组合。
使用查询的优势
查询让你可以:
-
仅查看感兴趣的字段中的数据。 打开表时,将看到所有字段。 查询是保存选定字段的便捷方式。
注意: 查询仅指向数据,而不存储数据。 保存查询时,并非是在保存数据的副本。
-
组合多个数据源中的数据。 表通常只显示其存储的数据。 查询让你可以选取并选择来自各种源的字段,并指定合并信息的方式。
-
使用表达式作为字段。 例如,可以将 Date 函数用作字段,或者将 Format 函数与字段配合使用,来控制该字段中的数据在查询结果中的格式设置方式。
-
查看满足所指定条件的记录。 打开表时,将看到所有记录。 查询是保存选定记录的便捷方式。
创建选择查询的基本步骤
可以通过使用“查询向导”或设计视图来创建选择查询。 使用向导时可能有一些设计元素不可用,但可通过使用设计视图添加这些元素。 尽管这两种方法彼此稍有不同,但基本步骤实质上是相同的:
-
选择要用作数据源的表或查询。
-
指定要从数据源中包括的字段。
-
(可选)指定条件,限制查询返回的记录。
创建选择查询后,运行它以查看结果。 若要运行选择查询,请在数据表视图中将其打开。 如果保存查询,则可在需要时重复使用它,例如作为窗体、报表或其他查询的数据源使用。
使用查询向导创建选择查询
可使用查询向导自动创建选择查询。 在使用向导时,将对查询设计的细节有更少的控制,但查询的创建速度通常比不使用向导更快。 此外,向导还可以捕获一些简单的设计错误,并提示你执行不同操作。
开始之前
如果使用来自彼此不相关的数据源的字段,则查询向导会询问是否要创建关系。 向导将打开“关系”窗口,如果编辑了任何关系,则必须重启向导。 因此,运行向导前,请考虑创建查询所需要的任何关系。
有关创建表关系的详细信息,请参阅文章表关系指南。
使用“查询向导”
-
在“创建”选项卡的“查询”组中,单击“查询向导”。
-
在“新建查询”对话框中,单击“简单查询向导”,然后单击“确定”。
-
接下来,添加字段。 可以最多添加来自 32 个表或查询的 255 个字段。
对于每个字段,请执行以下两个步骤:
-
在“表/查询”下,单击包含字段的表或查询。
-
在“可用字段”下,双击该字段以将其添加到“所选字段”列表。 如果要将所有字段都添加到查询中,请单击带双右箭头的按钮 (>>)。
-
添加所有所需字段后,请单击“下一步”。
-
-
如果没有添加任何数字字段(包含数值数据的字段),则直接跳到步骤 9。 如果你添加了任何数字字段,向导将询问你希望该查询返回详细信息还是汇总数据。
执行下列操作之一:
-
如果你要查看单个记录,请单击“详细信息”,然后单击“下一步”。 直接跳到步骤 9。
-
如果你要查看汇总数值数据,例如平均值,请单击“汇总”,然后单击“汇总选项”。
-
-
在“汇总选项”对话框中,指定要汇总的字段和汇总数据的方式。 仅将列出数字字段。
对于每个数字字段,请选择下列函数之一:
-
和 查询返回字段的所有值的总和。
-
Avg 查询返回字段值的平均值。
-
Min 查询返回字段的最小值。
-
Max 查询返回字段的最大值。
-
-
如果你希望查询结果包含数据源中记录的计数,请选择相应的复选框“对数据源名称中的记录进行计数”。
-
单击“确定”以关闭“汇总选项”对话框。
-
如果没有将日期/时间字段添加到查询,可直接跳到步骤 9。 如果向查询中添加了日期/时间字段,则查询向导将询问你希望如何对日期值进行分组。 例如,假定你向查询添加了一个数字字段(“价格”)和一个日期/时间字段(“交易时间”),然后在“汇总选项”对话框中指定要查看数字字段“价格”的平均值。 因为包括了日期/时间字段,所以你可计算每个独立日期/时间值(每日、每月、每季度或每年)的汇总值。
选择要用于对日期/时间值进行分组的时间段,然后单击“下一步”。
注意: 在设计视图中,你可使用表达式来按所需的任意时间段进行分组,但向导只提供上述选项。
-
在向导的最后一页,为查询提供标题,指定是要打开还是修改查询,然后单击“完成”。
如果选择打开查询,该查询将在数据表视图中显示所选数据。 如果选择修改查询,该查询将在设计视图中打开。
在设计视图中创建查询
你可以使用设计视图手动创建选择查询。 使用设计视图时,可以更好地控制查询设计的细节,但更容易犯设计错误,耗时也比使用向导更长。
创建查询
步骤 1:添加数据源
使用“设计”视图时,若要添加数据源,请通过单独的步骤添加数据源和字段。 但是,你始终可以在以后需要时添加更多数据源。
-
在“创建”选项卡上的“查询”组中,单击“查询设计”。
-
双击要使用的每个数据源或选择每个数据源,然后单击“ 添加”。
自动联接
当你添加数据源时,如果源之间已存在定义的关系,这些关系将自动作为联接添加到查询中。 联接指定应如何合并来自相关源的数据。 如果两个表具有包含兼容数据类型的字段且其中某个字段为 主键,则 Access 还会自动创建两个表之间的联接。
你可能想要调整 Access 创建的联接。 Access 根据联接表示的关系来确定要创建的联接类型。 如果 Access 创建一个联接但没有任何已定义的关系,则 Access 将创建一个 内部联接。
如果 Access 在你添加数据源时自动创建了正确的联接,则你可以跳到步骤 3:添加输出字段。
多次使用相同的数据源
在某些情况下,你会想要联接同一个表或查询的两个副本,这称为 自联接,当联接的字段中存在匹配值时,它会合并来自同一个表中的记录。 例如,假设你有一个“员工”表,其中每个员工记录的“汇报对象”字段中将显示其经理 ID 而非经理姓名。 你可以使用自联接,转而在每个员工的记录中显示经理姓名。
第二次添加数据源时,Access 会在第二个实例的名称中追加 _1。 例如,如果两次添加“员工”表,则第二个实例将命名为“员工_1”。
步骤 2:联接相关数据源
如果添加到查询中的数据源已具有关系,则 Access 会为每个关系自动创建内联。 如果实施了 引用完整性,Access 还会在联接行上方显示“1”以指示哪个表在 一对多关系 的“一”端,显示无穷符号 (∞) 以指示哪个表在“多”端。
如果向查询添加查询,并且尚未创建这些查询之间的关系,则 Access 不会自动创建这些查询之间或不相关的查询和表之间的关系。 添加数据源时,如果 Access 不创建联接,则通常应该自行手动添加。 未联接其他任何数据源的数据源可导致查询结果出现问题。
你可能还会想要将联接类型从内联更改为 外部联接,以便查询可包含更多记录。
添加联接
-
若要添加联接,请将一个数据源中的字段拖动到另一数据源中的对应字段中。
Access 将在两个字段之间显示一条线,表明已创建了联接。
更改联接
-
双击要更改的联接。
将显示“联接属性”对话框。
-
查看“联接属性”对话框中的 3 个选项。
-
单击要使用的选项,然后单击“确定”。
联接准备就绪后,便可添加输出字段(想要在查询结果中包含的具有数据的字段)。
步骤 3:添加输出字段
可以轻松添加来自步骤 1 中添加的任何数据源中的字段。
-
若要添加字段,请将字段从查询设计窗口的上窗格中的数据源中向下拖动到查询设计窗口底部窗格的设计网格的“字段”行中。
通过这种方式添加字段时,Access 会自动填充设计网格的“表”行,以反映字段的数据源。
提示: 如果要快速向下添加所有字段,直至到达查询设计网格的“字段”行,请双击上窗格中的表或查询名称以突出显示该源中的所有字段,然后同时将其向下拖动到设计网格中。
使用表达式作为输出字段
如果要执行计算或使用函数生成查询输出,可使用 表达式 作为输出字段。 表达式可以使用任意查询数据源中的数据,以及 Format 或 InStr 等函数,还可包含常量和算术运算符。
-
在查询设计网格的空白列中,右键单击“字段”行,然后单击快捷菜单上的“缩放”。
-
在“缩放”框中,键入或粘贴表达式。 以要用于表达式输出的名称作为表达式的开头,后跟冒号。 例如,要对表达式添加“上次更新时间”标签,请以此开始表达式:上次更新时间:。
注意: 可以使用表达式执行各种操作。 对表达式的全面介绍超出了本文范围。 有关创建表达式的详细信息,请参阅构建表达式一文。
步骤 4:指定条件
此步骤为可选。
可使用条件来限制查询返回的记录,这以字段值是否满足指定的条件为基础。
指定输出字段的条件
-
在查询设计网格中,在包含要限制的值的字段的“条件”行中,键入字段值必须满足才能包括在结果中的表达式。 例如,如果要限制查询使得只出现“城市”字段值为拉斯维加斯的记录,则需在该字段下的“条件”行中键入“拉斯维加斯”。
有关各种数据类型的查询条件的多个示例,请参阅查询条件示例一文。
-
在“条件”行下的“Or”行中指定任何备选条件。
如果指定替代条件,字段值可以满足列出的任一条件,便可包含在查询结果中。
多个字段条件
可以使用具有多个字段的条件。 如果这样做,那么给定的“条件”或“或”行中的所有条件都必须为 true 才能包括记录。
通过使用不希望输出的字段来指定条件
可以向查询设计添加字段,且在查询输出中不包括该字段的数据。 如果想要使用字段的值限制查询结果,但不想看到字段值,则可实施这一操作。
-
向设计网格添加字段。
-
清除字段的“显示”行中的复选框。
-
像为输出字段那样指定条件。
步骤 5:汇总数据
此步骤为可选。
你可能希望汇总数据,尤其当数据为数字时。 例如,想要查看平均价格或总销售额。
若要汇总查询中的数据,需使用“汇总”行。 默认情况下,设计视图中不显示“汇总”行。
-
在 “设计 ”视图中打开查询后,在“ 查询设计 ”选项卡上的“ 显示/隐藏 ”组中,单击“ 总计”。
Access 将在查询设计网格中显示“汇总”行。
-
对于要汇总的每个字段,从“汇总”行的列表中选择要使用的函数。 可用的功能取决于字段的数据类型。
若要详细了解查询中的汇总行功能,请参阅 使用汇总行在数据表中显示列总计一文。
步骤 6:查看结果
若要查看查询结果,请在“ 查询设计 ”选项卡上单击“ 运行”。 Access 将在数据表视图中显示查询结果。
若要对查询进一步更改,请单击“开始”>“视图”>“设计视图”以切换回设计视图。
更改字段、表达式或条件,然后重新运行查询,直至其返回所需数据。