使用查询可以更轻松地查看、添加、删除或更改 Access 数据库中的数据。 使用查询的一些其他原因:
-
通过筛选特定条件 (条件) 快速查找特定数据
-
计算或汇总数据
-
自动执行数据管理任务,例如定期查看最新数据。
查询可帮助你查找和使用数据
在精心设计的数据库中,想要呈现在表单或报表中的数据通常位于多个表中。 查询可以从各种表中拉取信息,并将其组合在窗体或报表中显示。 查询可以是对数据库中的数据结果的请求,也可以是针对数据执行操作的请求,也可以是针对两者的请求。 查询可以提供简单问题的答案、执行计算、合并不同表中的数据、从数据库添加、更改或删除数据。 由于查询用途广泛,因此查询类型很多,因此可以根据任务创建一种查询类型。
主要查询类型 |
用途 |
---|---|
选择 |
用于从表中检索数据或进行计算。 |
动作 |
添加、更改或删除数据。 每项任务具有特定类型的动作查询。 |
创建选择查询
如果只想查看表中某些字段的数据,或者同时查看多个表中的数据,或者可能仅查看基于特定条件的数据,则选择选择查询类型。 有关详细信息,请参阅 创建简单的选择查询。
查看选定字段中的数据
例如,如果数据库有一个表,其中包含大量有关产品的信息,并且你希望查看产品及其价格列表,下面介绍如何创建选择查询以仅返回产品名称和相应价格:
-
打开数据库,然后在“ 创建 ”选项卡上,单击“ 查询设计”。
-
在“ 表 ”选项卡上,双击“ 产品 ”表。
-
在“产品”表中,假设你有“产品名称”和“标价”字段。 双击“ 产品名称” 和“ 标价 ”,将这些字段添加到查询 设计网格 。
-
在“ 查询设计 ”选项卡上,单击“ 运行”。 查询将运行,并显示产品及其价格的列表。
同时查看多个相关表中的数据
例如,如果你有一个用于销售食品商品的商店的数据库,并且你希望查看居住在特定城市的客户的订单。 假设有关订单的数据和有关客户的数据分别存储在名为 Customers 和 Orders 的两个表中。 如果每个表都有客户 ID 字段,则构成两个表之间 一对多关系 的基础。 可以使用以下过程创建一个查询,以返回特定城市(例如拉斯维加斯)的客户订单:
-
打开数据库。 在“ 创建 ”选项卡上的“ 查询 ”组中,单击“ 查询设计”。
-
在“ 表 ”选项卡上,双击“ 客户 和 订单”。
请注意 (名为联接) ,该行连接“客户”表中的“ID”字段和“订单”表中的“客户 ID”字段。 此行显示两个表之间的关系。
-
在“客户”表中,双击“公司和城市”,将这些字段添加到查询设计网格。
-
在查询设计网格的“城市”列中,清除“显示”行中的“检查”框。
-
在“城市”列的“条件”行中,键入“拉斯维加斯”。
清除“显示检查”框可阻止查询在其结果中显示城市,并在“条件”行中键入“拉斯维加斯”指定仅查看“城市”字段值为“拉斯维加斯”的记录。 在这种情况下,查询仅返回位于拉斯维加斯的客户。 无需显示字段就可以将其与条件一起使用。
-
在“订单”表中,双击“ 订单 ID ”和“ 订单日期 ”,将这些字段添加到查询设计网格的后续两列。
-
在“ 查询设计 ”选项卡上的“ 结果 ”组中,单击“ 运行”。 查询运行,然后显示拉斯维加斯客户的订单列表。
-
按 Ctrl+S 保存该查询。
创建参数查询
如果经常想要运行特定查询的变体,请考虑使用参数查询。 运行参数查询时,查询会提示输入字段值,然后使用你提供的值为查询创建条件。
从前面的示例继续学习创建一个返回位于拉斯维加斯的客户订单的选择查询,你可以修改选择查询,以提示你在每次运行查询时指定城市。 若要继续操作,请打开在上一示例中创建的数据库:
-
在导航窗格中,右键单击在上一部分) 创建的名为 “按城市 (排序 ”的查询,然后单击快捷菜单上的“ 设计视图 ”。
-
在查询设计网格的“城市”列的 “条件” 行中,删除 “拉斯维加斯”,然后键入 “[针对哪个城市?]”。
字符串 [For what city?] 是参数提示符。 方括号指示希望查询请求输入,在本例中,文本 (, 对于哪个城市?) 是参数提示显示的问题。
注意: 两个句点都 (。) 或感叹号 (!) 可用作参数提示中的文本。
-
选择“城市”列的“显示”行中的“检查”框,以便查询结果将显示城市。
-
在“ 查询设计 ”选项卡上的“ 结果 ”组中,单击“ 运行”。 该查询会提示输入 City 的值。
-
键入 “纽约”,然后按 Enter 查看纽约客户的订单。
如果不知道可以指定哪些值,该怎么办? 可以使用通配符作为提示的一部分:
-
在“开始”选项卡上的“视图”组中,单击“视图”,然后单击“设计视图”。
-
在查询设计网格中,在“城市”列的“条件”行中,键入“类似于 [适用于哪个城市?]&“*”。
在此参数提示符中,like 关键字 (keyword) 、与 (&) 以及用引号括起来的星号 (*) 允许用户键入字符(包括通配符)的组合以返回各种结果。 例如,如果用户键入 *,查询将返回所有城市;如果用户键入 L,则查询返回以字母“L;”开头的所有城市;如果用户键入 *s*,则查询将返回包含字母“s”的所有城市。
-
在“ 查询设计 ”选项卡上的“ 结果 ”组中,单击“ 运行”,然后在查询提示符下键入 “新建”,然后按 Enter。
查询运行,然后显示纽约客户的订单。
指定参数数据类型
还可以指定参数应接受的数据类型。 你可以为任何参数设置数据类型,但为数字、货币或日期/时间数据设置数据类型尤为重要。 在指定参数应该接受的数据类型后,如果用户输入错误类型的数据(例如,应该输入货币,但输入了文本),则会看到更有帮助的错误消息。
如果将参数设置为接受文本数据,则输入的任何内容都将被解释为文本,并且不会显示任何错误消息。
若要指定查询中参数的数据类型,请使用以下过程:
-
在“设计”视图中打开查询后,在“ 查询设计 ”选项卡上的“ 显示/隐藏 ”组中,单击“ 参数”。
-
在“查询参数”对话框中的“参数”列中,为您要为其指定数据类型的每个参数键入提示信息。 请确保每个参数都与您在查询设计网格的“条件”行中使用的提示信息相匹配。
-
在“数据类型”列中,选择每个参数的数据类型。
有关详细信息,请参阅 使用参数在运行查询时请求输入。
创建总计查询
数据表中的“总计”行非常有用,但对于更复杂的问题,请使用总计查询。 总计查询是一种选择查询,可用于对数据进行分组和汇总,例如,当你想要查看每个产品的总销售额时。 在总计查询中,可以使用 Sum 函数 (聚合函数) 来查看每个产品的总销售额。
使用以下过程修改在上一个示例中创建的“产品小计”查询,以便按产品汇总产品小计。
-
在“ 开始 ”选项卡上,单击“ 视图 > 设计视图”。
“产品分类汇总”查询将在“设计”视图中打开。
-
在“ 查询设计 ”选项卡上的“ 显示/隐藏 ”组中,单击“ 总计”。
“总计”行显示在查询设计网格中。
注意: 尽管它们具有相同的名称,但设计网格中的 “总计 ”行和数据表中的 “总计 ”行并不相同:
-
可以使用设计网格中的 “总计 ”行按字段值分组。
-
可以将数据表 Total 行添加到总计查询的结果。
-
在设计网格中使用 Totals 行时,必须为每个字段选择一个聚合函数。 如果不想对字段执行计算,可以按字段分组。
-
在设计网格的第二列中,在 “总计 ”行中,从下拉列表中选择“ 总和 ”。
-
在“ 查询设计 ”选项卡上的“ 结果 ”组中,单击“ 运行”。 查询运行,然后显示包含小计的产品列表。
-
按 Ctrl+S 保存该查询。 使查询保持打开状态。
有关详细信息,请参阅 使用汇总行在数据表中显示列总计。
根据数据进行计算
通常不会使用表来存储计算值(例如小计),即使它们基于同一数据库中的数据,因为如果计算值基于的值发生更改,则计算值可能会过时。 例如,你不会在表中存储某人的年龄,因为每年必须更新该值;相反,可以存储此人的出生日期,然后使用查询来计算此人的年龄。
例如,如果你有一个数据库,用于销售某些要销售的产品。 此数据库有一个名为“订单详细信息”的表,其中包含有关字段中的产品的信息,例如每个产品的价格和数量。 可以使用查询计算小计,该查询将每个产品的数量乘以该产品的单价,将每个产品的数量乘以该产品的单价和折扣,然后从总单价中减去总折扣。 如果在上一示例中创建了示例数据库,请将其打开并按照操作操作:
-
在“创建”选项卡上,单击“查询设计”。
-
在“ 表 ”选项卡上,双击“ 订单详细信息”。
-
在“订单详细信息”表中,双击“ 产品 ID ”,将此字段添加到查询设计网格的第一列。
-
在网格的第二列中,右键单击“ 字段” 行,然后单击快捷菜单上的“ 缩放 ”。
-
在 “缩放 ”框中,键入或粘贴以下内容: 小计: ([数量]*[单价]) - ([数量]*[单价]*[折扣])
-
单击“确定”。
-
在“ 查询设计 ”选项卡上,单击“ 运行”。 查询运行,然后显示每个订单的产品和小计列表。
-
按 Ctrl+S 保存查询,然后将查询命名为 “产品小计”。
有关详细信息,请参阅 使用汇总行在数据表中显示列总计。
显示汇总或聚合数据
使用表来记录事务或存储定期发生的数值数据时,能够查看聚合数据(如求和或平均值)非常有用。 在 Access 中,可以将汇总行添加到 数据表 。 Total row 是数据表底部的一行,可显示正在运行的总计值或其他聚合值。
-
运行之前创建的“产品分类汇总”查询,并在 数据表视图 中保持结果打开状态。
-
在“开始”选项卡上,单击“汇总”。 数据表底部会显示一个新行,第一列中有 “总计 ”一词。
-
单击数据表的最后一行中名为 Total 的单元格。
-
单击箭头以查看可用的聚合函数。 由于列包含文本数据,因此只有两个选项: “无” 和 “计数”。
-
选择“ 计数”。 单元格的内容从 Total 更改为列值的计数。
-
单击第二列) (相邻单元格。 请注意,单元格中会显示一个箭头。
-
单击箭头,然后单击“ 总和”。 字段显示列值的总和。
-
使查询在“数据表”视图中保持打开状态。
创建交叉表查询
现在假设你想要查看产品小计,但还希望按月聚合,以便每行显示产品的分类汇总,每列显示一个月的产品小计。 若要显示产品的分类汇总并显示一个月的产品小计,请使用 交叉表查询 。
可以再次修改产品小计查询,以便查询返回产品小计行和每月小计列。
-
在“开始”选项卡上的“视图”组中,单击“视图”,然后单击“设计视图”。
-
在 “查询设置” 组中,单击“ 添加表”。
-
双击“ 订单”,然后单击“ 关闭”。
-
在“ 查询设计 ”选项卡上的“ 查询类型 ”组中,单击“ 交叉表”。 在设计网格中, “显示 行”处于隐藏状态,并显示 “交叉表” 行。
-
在设计网格的第三列中,右键单击“ 字段” 行,然后单击快捷菜单上的“ 缩放 ”。 “ 缩放 ”框随即打开。
-
在 “缩放 ”框中,键入或粘贴以下内容 :“月”& DatePart (“m”,[订单日期])
-
单击“确定”。
-
在“交叉表”行中,从下拉列表中选择以下值:第一列的行标题,第二列的值,第三列的“列标题”。
-
在“ 查询设计 ”选项卡上的“ 结果 ”组中,单击“ 运行”。 查询运行,然后显示按月聚合的产品小计。
-
按 Ctrl+S 保存该查询。
有关交叉表查询的详细信息,请参阅 使用交叉表查询使摘要数据更易于阅读。
创建生成表查询
可以使用生成表查询根据存储在其他表中的数据创建新表。
例如,假设你想要将芝加哥订单的数据发送给使用 Access 准备报表的芝加哥业务合作伙伴。 你希望将发送的数据限制为特定于芝加哥订单的数据,而不是发送所有订单数据。
可以生成包含芝加哥订单数据的选择查询,然后使用选择查询通过以下过程创建新表:
-
打开上一示例中的示例数据库。
若要运行生成表查询,可能需要启用数据库内容。
注意: 如果在功能区下方看到有关启用数据库的消息,请单击“ 启用内容”。如果数据库已位于受信任位置,则不会看到消息栏。
-
在“ 创建 ”选项卡上的“ 查询 ”组中,单击“ 查询设计”。
-
双击“ 订单详细信息 ”和“ 订单”。
-
在 “订单” 表中,双击“ 客户 ID ”和“ 发货城市 ”,将这些字段添加到设计网格。
-
在“订单详细信息”表中,双击“订单 ID”、“产品 ID”、“数量”、“单价”和“折扣”,将这些字段添加到设计网格。
-
在设计网格的 “Ship City ”列中,清除 “显示 ”行中的框。 在 “条件 ”行中,键入 “Chicago” (包含单引号) 。 在使用查询结果创建表之前,请验证查询结果。
-
在“ 查询设计 ”选项卡上的“ 结果 ”组中,单击“ 运行”。
-
按 Ctrl + S 保存查询。
-
在“ 查询名称 ”框中,键入 Chicago Orders Query,然后单击“ 确定”。
-
在“开始”选项卡上的“视图”组中,单击“视图”,然后单击“设计视图”。
-
在“ 查询设计 ”选项卡上的“ 查询类型 ”组中,单击“ 创建表”。
-
在“ 生成表 ”对话框的“ 表名称 ”框中,键入 Chicago Orders,然后单击“ 确定”。
-
在“ 查询设计 ”选项卡上的“ 结果 ”组中,单击“ 运行”。
-
在确认对话框中,单击“ 是”,并查看导航窗格中显示的新表。
注意: 如果已有一个与指定名称相同的表,Access 会先删除该表,然后再运行查询。
有关使用生成表查询的详细信息,请参阅 创建生成表查询。
创建追加查询
可以使用追加查询从一个或多个表检索数据,并将该数据添加到另一个表。
例如,假设你创建了一个表来与芝加哥业务助理共享,但你意识到该关联也适用于密尔沃基地区的客户。 在与关联人员共享表之前,您希望将包含密尔沃基区域数据的行添加到表中。 可使用以下过程将密尔沃基区域数据添加到芝加哥订单表:
-
打开前面在设计视图中创建的名为“Chicago Orders Query”的查询。
-
在“ 查询设计 ”选项卡上的“ 查询类型 ”组中,单击“ 追加”。 此时会打开“ 追加 ”对话框。
-
在“ 追加 ”对话框中,单击“ 表名称 ”框中的箭头,从下拉列表中选择“ 芝加哥订单 ”,然后单击“ 确定”。
-
在设计网格的“Ship City”列的 “条件 ”行中,删除“芝加哥”,然后键入 “密尔沃基”。
-
在 “追加到 ”行中,为每个列选择相应的字段。
在此示例中, “追加到 ”行值应与 “字段 ”行值匹配,但不需要追加查询才能正常工作。
-
在“ 查询设计 ”选项卡上的“ 结果 ”组中,单击“ 运行”。
注意: 在运行返回大量数据的查询时,可能会收到错误消息,指示您将无法撤消查询。 请尝试将内存段限制增加到 3MB 以允许完成查询。
有关追加查询的详细信息,请参阅使用追加查询将记录添加到表。
创建更新查询
可以使用更新查询更改表中的数据,并使用更新查询输入条件来指定应更新的行。 通过更新查询,可以在执行更新之前查看更新的数据。
重要: 无法撤消操作查询。 应考虑使用更新查询备份要更新的任何表。
在前面的示例中,你向 Chicago Orders 表追加了行。 在“芝加哥订单”表中,“产品 ID”字段显示数字“产品 ID”。 若要使数据在报表中更有用,可以将产品 ID 替换为产品名称,请使用以下过程:
-
在“设计”视图中打开“芝加哥订单”表。
-
在“产品 ID”行中,将“数据类型”从 “数字 ”更改为 “文本”。
-
保存并关闭芝加哥订单表。
-
在“ 创建 ”选项卡上的“ 查询 ”组中,单击“ 查询设计”。
-
双击“ 芝加哥订单 和 产品”。
-
在“ 查询设计 ”选项卡上的“ 查询类型 ”组中,单击“ 更新”。
-
在设计网格中, “排序 ”和 “显示 行”消失,并显示 “更新到 ”行。
-
在“ 芝加哥订单” 表中,双击“ 产品 ID ”将此字段添加到设计网格。
-
在设计网格的“产品 ID”列的“更新到”行中,键入或粘贴以下内容:[Products].[产品名称]
提示: 可以使用更新查询在“更新到”行中使用空字符串 (“”) 或 NULL 来删除字段值。
-
在 “条件” 行中,键入或粘贴以下内容: [产品 ID] like ([Products].[ID])
-
可以通过在数据表视图中查看查询来查看更新查询将更改的值。
-
在“ 设计 ”选项卡上,单击“ 查看 > 数据表视图”。 该查询返回将更新的产品 ID 列表。
-
在“ 查询设计 ”选项卡上,单击“ 运行”。
打开“芝加哥订单”表时,会看到“产品 ID”字段中的数值已替换为“产品”表中的产品名称。
有关更新查询的详细信息,请参阅创建和运行更新查询。
创建删除查询
可以使用删除查询从表中删除数据,并使用删除查询输入条件来指定应删除的行。 通过删除查询,可以在执行删除之前查看要删除的行。
例如,假设在准备将上一个示例中的 Chicago Orders 表发送给芝加哥业务伙伴时,你注意到某些行包含许多空字段。 你决定在发送表之前删除这些行。 可以只打开表并手动删除行,但如果有许多行要删除,并且对应删除的行有明确的条件,则使用删除查询可能会有所帮助。
可以使用查询通过以下过程删除芝加哥订单表中没有订单 ID 值的行:
-
在“创建”选项卡上,单击“查询设计”。
-
双击“ 芝加哥订单”。
-
在“ 查询设计 ”选项卡上的“ 查询类型 ”组中,单击“ 删除”。 在设计网格中, “排序 和 显示 行”将消失,并显示 “删除” 行。
-
在 “芝加哥订单” 表中,双击“ 订单 ID ”将其添加到网格中。
-
在设计网格的“订单 ID”列的 “条件” 行中,键入 “为 Null”。
-
在“ 查询设计 ”选项卡上的“ 结果 ”组中,单击“ 运行”。
有关删除查询的详细信息,请参阅 创建并运行删除查询。