查询简介

重要:  本文是由机器翻译的,请参阅免责声明。请在 此处 中查找本文的英文版本以便参考。

当您想要查看、 添加、 更改或删除您的数据库中的数据时,请考虑使用查询。

使用查询可以回答有关数据的特定问题,而这些问题通过直接查看表数据很难解决。您可以使用查询筛选数据、执行数据计算和汇总数据。您还可以使用查询自动执行许多数据管理任务,并在提交数据更改之前查看这些更改。

注意: 聚合查询函数,例如求和计数,不可用的 Web 查询。

使用查询更加轻松地完成许多数据库任务

本文内容

概述

查看表中的数据子集

同时查看多个表中的数据

通过使用参数提出问题的变体

根据数据进行计算

查看汇总或聚合数据

使用其他表中的数据创建新表。

将其他表中的数据添加到一个表

自动更改数据

自动删除数据

概述

本文提供了有关查询的基本信息,并提供了不同类型的查询的示例。

查询是对数据结果、数据操作或者这两者的请求。可以使用查询回答简单问题、执行计算、合并不同表中的数据,甚至添加、更改或删除表数据。用于从表中检索数据或进行计算的查询称为选择查询。用于添加、更改或删除数据的查询称为操作查询。

您还可以使用查询为窗体或报表提供数据。在设计良好的数据库中,要使用窗体或报表显示的数据通常位于多个不同的表中。通过使用查询,可以在设计窗体或报表之前组合要使用的数据。

有关使用查询为窗体或报表提供数据的详细信息,请参阅“另请参阅”部分中的链接或搜索“帮助”。

打开现有查询

如果不熟悉导航窗格,那么可能不知道如何打开已经存在的查询。导航窗格是一种功能,它取代了 Access 2007 之前的版本中的“数据库窗口”。可以在屏幕左侧看到导航窗格。

若要打开任何数据库对象,包括查询,可在导航窗格中双击该对象。

使用罗斯文数据库演练示例

注意: 本文中的示例使用了根据罗斯文 2010 数据库模板创建的数据库。

  1. 单击“文件”选项卡,然后单击“新建”

  2. 在中间窗格中的“可用模板”下,单击“样本模板”,然后单击“罗斯文”

  3. 在右窗格中,查看“文件名”框中的数据库文件名称,然后任意更改该名称。也可以单击文件夹图标,通过浏览找到其他文件位置。

  4. 单击“创建”

  5. 按照“罗斯文贸易”页(在“启动屏幕”对象选项卡上)上的说明打开数据库,然后关闭“登录对话框”窗口。

返回页首

查看表中的数据子集

有时您可能希望查看表中的所有数据,但有时您可能只希望查看某些字段中的数据,或者只希望在某些字段满足某些条件时查看数据。为了查看表中的某些数据,可使用选择查询。

假设您想要查看产品及其价格的列表。按照下列步骤,可以创建能够返回产品和价格信息的查询:

  1. 打开先前使用这些步骤设置的罗斯文数据库。

  2. “创建”选项卡上的“查询”组中,单击“查询设计”

  3. “显示表”对话框的“表”选项卡上,双击“产品”

  4. 关闭“显示表”对话框。

  5. 在“产品”表中,双击“产品名称”“列出价格”以将这些字段添加到查询设计网格中。

  6. “设计”选项卡上的“结果”组中,单击“运行”

    该查询将运行,然后显示产品及其价格的列表。

返回页首

同时查看多个表中的数据

精心设计的数据库中表之间存在逻辑相互关系。这些关系存在基于表共有的字段。当您想要查看相关表中的数据时,您可以使用的选择查询。

假设您要查看居住于特定城市的客户的订单。有关订单和客户的数据存储于同一数据库的两个表中。每个表都包含“客户 ID”字段,该字段构成这两个表之间的一对多关系的基础。按照下列步骤,可以创建查询以便返回特定城市(例如,天津)中客户的订单:

  1. 打开先前使用这些步骤设置的罗斯文数据库。

  2. “创建”选项卡上的“查询”组中,单击“查询设计”

  3. “显示表”对话框的“表”选项卡上,双击“客户”“订单”

  4. 关闭“显示表”对话框。

    请注意将“客户”表中的“ID”字段与“订单”表中的“客户 ID”字段连接起来的连线,它称为联接。该连线显示了两个表之间的关系。

  5. 在“客户”表中,双击“公司”“城市”,将这些字段添加到查询设计网格中。

  6. 在查询设计网格中,在城市列中,清除中的复选框 显示行中。

  7. “城市”列的“条件”行中,键入天津

    清除显示复选框将阻止查询在结果中,显示城市,并在条件行中键入拉斯维加斯指定您想要查看其中的城市字段的值是拉斯维加斯的记录。在这种情况下,该查询返回位于拉斯维加斯的客户 — 公司 L 和公司 AA。

    请注意,您不必显示某个字段就可以在条件中使用它。

  8. 在“订单”表中,双击“订单 ID”“订单日期”以便将这些字段添加到查询设计网格的后面两列中。

  9. “设计”选项卡上的“结果”组中,单击“运行”

    该查询将运行,然后显示天津的客户的订单列表。

  10. 按 Ctrl+S 保存该查询。

    将显示“另存为”对话框。

  11. “查询名称”框中,键入按城市显示订单,然后单击“确定”

返回页首

通过使用参数提出问题的变体

有时,您可能希望运行与现有查询略有差别的查询。您可以更改原来的查询以使用新条件,但是如果您经常希望运行特定查询的变体,请考虑使用参数查询。在运行参数查询时,查询将提示您提供字段值,然后使用您所提供的值创建查询条件。

上一示例中,您已创建了一个返回位于天津的客户的订单的查询。您可以通过下列步骤修改该查询,以便在您每次运行该查询时都提示您指定城市:

  1. 打开先前使用这些步骤设置的罗斯文数据库。

  2. 按 F11 显示导航窗格。

    注意: 如果已显示导航窗格,则不必执行该步骤。

  3. 在导航窗格中,右键单击名为“按城市显示订单”(在上一部分中创建)的查询,然后单击快捷菜单上的“设计视图”

  4. 在查询设计网格中,在条件行中的城市列中,删除天津,,然后键入[适用于哪些 city?]

    [适用于哪些 city?]的字符串是参数提示。方括号指示您希望查询要求输入和 (在本例中的文本 城市?)将参数提示中显示的问题。

    注意: 句号 (.) 和叹号 (!) 都不能用作参数提示信息中的文本。

  5. 选中“城市”列的“显示”行中的复选框,以使查询结果显示城市。

  6. “设计”选项卡上的“结果”组中,单击“运行”

    查询将提示您输入“城市”值。

  7. 键入深圳,然后按 Enter。

    该查询将运行,并且显示深圳客户的订单。

    但是,如果您不知道可以指定哪些值,该怎么办?为了使参数更加灵活,可以将通配符作为提示信息的一部分:

  8. “开始”选项卡上的“视图”组中,单击“视图”,然后单击“设计视图”

  9. 在查询设计网格的“城市”列的“条件”行中,键入 Like [请指定城市]&"*"

    在此参数提示,请Like关键字,与号 (&)、,然后星号 (*) 括在引号中允许用户键入的字符,包括通配符,以返回结果的各种组合。例如,如果用户键入*,该查询将返回所有城市;如果用户类型L,该查询返回所有以字母"L;"开头的城市,并且用户类型* s *,该查询返回所有城市包含字母"s"。

  10. “设计”选项卡上的“结果”组中,单击“运行”

    在出现查询提示时,键入,然后按 Enter。

  11. 该查询将运行,并且显示深圳客户的订单。

指定参数数据类型

您还可以指定参数应该接受的数据类型。可以设置任何参数的数据类型,但尤其重要的是设置数值、货币或日期/时间数据的数据类型。在指定参数应该接受的数据类型后,如果用户输入错误类型的数据(例如,应该输入货币,但输入了文本),则会看到更有帮助的错误消息。

注意: 如果将参数设置为接受文本数据,则输入的任何内容都将被解释为文本,并且不会显示任何错误消息。

要指定查询中参数的数据类型,请执行以下步骤:

  1. 在设计视图中打开查询,在“设计”选项卡上的“显示/隐藏”组中,单击“参数”

  2. “查询参数”对话框中的“参数”列中,为您要为其指定数据类型的每个参数键入提示信息。请确保每个参数都与您在查询设计网格的“条件”行中使用的提示信息相匹配。

  3. “数据类型”列中,选择每个参数的数据类型。

返回页首

根据数据进行计算

通常,不使用表存储基于同一数据库中的数据计算得到的值。例如,罗斯文 2007 中的“订单明细”表不存储产品小计,因为任何给定产品的小计都可以使用存储在“订单明细”表中的“数量”、“单价”和“折扣”字段中的数据计算得到。

在某些情况下,计算得到的值可能会过期,因为这些值所基于的值发生了更改。例如,您可能不希望在表中存储某人的年龄,因为您每年都必须更新该值;相反,您可以存储此人的出生日期,然后在查询中使用表达式来计算此人的年龄。

按照下列步骤可创建基于“订单明细”表中的数据计算产品小计的查询。

  1. 打开先前使用这些步骤设置的罗斯文数据库。

  2. “创建”选项卡上的“查询”组中,单击“查询设计”

  3. “显示表”对话框的“表”选项卡上,双击“订单明细”

  4. 关闭“显示表”对话框。

  5. 在“订单明细”表中,双击“产品 ID”以将此字段添加到查询设计网格的第一列。

  6. 在该网格的第二列中,右键单击“字段”行,然后单击快捷菜单中的“显示比例”

  7. “显示比例”框中,键入或粘贴以下内容:

    小计: ([数量]*[单价])-([数量]*[单价]*[折扣])

    单击“确定”。

    这是计算的字段。计算的字段计算每个数量的乘积 通过该产品的单价的产品的每个产品数量乘以单价和为该产品,折扣,然后减去从总单价的总折扣。

  8. “设计”选项卡上的“结果”组中,单击“运行”

    该查询将运行,并且显示每个订单的产品和小计列表。

  9. 按 CTRL + S 保存该查询,并将其命名为产品小计的查询。

返回页首

查看汇总或聚合数据

使用表记录事务或存储经常出现的数值数据时,如果能够查阅聚合数据(如总和或平均值)是非常有用的。

Access 允许您通过添加汇总行将查看任何数据表中的简单聚合数据。汇总行将是数据表的底部可以显示运行总和或其他聚合的值的行。

注意: 不可向 Web 查询的数据表添加“汇总”行。

按照下列步骤可以向在上一示例中创建的“产品小计”查询添加“汇总”行:

  1. 运行“产品小计”查询,并使结果在数据表视图中处于打开状态。

  2. “开始”选项卡上的“记录”组中,单击“合计”

    数据表的底部随会出现一个新行,该行的第一列将显示“汇总”一词。

  3. 单击数据表的最后一行中名为“汇总”的单元格。

    请注意,该单元格中将出现一个箭头。

  4. 单击该箭头可查看可用的聚合函数。

    因为该列中包含文本数据,所以只有两种选择:“无”“计数”

  5. 选择“计数”

    单元格内容从“汇总”更改为列值的计数。

  6. 单击相邻的单元格(第二列)。

    请注意,该单元格中将出现一个箭头。

  7. 单击该箭头,然后单击“合计”

    该字段将显示列值的总和。

  8. 使该查询在数据表视图中处于打开状态。

为更复杂的汇总创建汇总查询

数据表中的“汇总”行非常有用,但对于更复杂的问题,应该使用汇总查询。汇总查询是一种选择查询,通过这种查询可以对数据进行分组和汇总。例如,假设您想要查看每种产品的销售总计。在汇总查询中,可以使用 Sum 聚合函数来查看每种产品的销售总计。

注意: 不能在 Web 查询中使用聚合函数。

按照下列步骤修改“产品小计”查询,以使其按产品对产品小计进行汇总。

  1. “开始”选项卡上的“视图”组中,单击“视图”,然后单击“设计视图”

    “产品小计”查询将在设计视图中打开。

  2. “设计”选项卡上的“显示/隐藏”组中,单击“汇总”

    “总计”行显示在查询设计网格中。

    注意: 尽管它们的名称相似,但是设计网格中的“总计”行与数据表中的“汇总”行并不相同:

    • 在设计网格中使用“总计”行,可以按字段值进行分组。

    • 可以向汇总查询的结果中添加数据表“汇总”行。

    • 在设计网格中使用“总计”行时,必须为每个字段选择一个聚合函数。如果不想对某个字段执行计算,则可以按该字段进行分组。

  3. 在设计网格的第二列的“总计”行中,从下拉列表中选择“总计”

  4. “设计”选项卡上的“结果”组中,单击“运行”

    该查询将运行,并且显示包含小计的产品列表。

  5. 按 Ctrl+S 保存该查询。使该查询处于打开状态。

创建交叉表查询以添加另一级别的分组

现在,假设您想要查看产品小计,但您还想要按月份进行聚合,以便每行显示一种产品的小计,每列显示一个月份的产品小计。要同时显示一种产品的小计和一个月份的产品小计,请使用交叉表查询。

注意: 无法在 web 浏览器中显示交叉表查询。

可以再次修改“产品小计”查询,以使该查询返回产品小计行和每月小计列。

  1. “开始”选项卡上的“视图”组中,单击“视图”,然后单击“设计视图”

  2. “查询设置”组中,单击“显示表”

  3. “显示表”对话框中,双击“订单”,然后单击“关闭”

  4. “设计”选项卡的“查询类型”组中,单击“交叉表”

    在设计网格中,隐藏了“显示”行,显示了“交叉表”行。

  5. 在设计网格的第三列中,右键单击“字段”行,然后单击快捷菜单中的“显示比例”“显示比例”框将打开。

  6. “显示比例”框中,键入或粘贴以下内容:

    月份: DatePart("m", [订单日期]) & " 月份"

  7. 单击“确定”

  8. “交叉表”行中,从下拉列表中选择以下值:为第一列选择“行标题”,为第二列选择“值”,为第三列选择“列标题”

  9. “设计”选项卡上的“结果”组中,单击“运行”

    该查询将运行,并且显示按月聚合的产品小计。

  10. 按 Ctrl+S 保存该查询。

返回页首

使用其他表中的数据创建新表。

您可以使用生成表查询,根据其他表中存储的数据创建一个新表。

注意: 无法在 web 浏览器中运行生成表查询。

例如,假设您要将南京订单的数据发送到使用 Access 准备报表的南京业务合作伙伴。您希望仅发送特定于南京订单的数据,而不是发送所有订单数据。

您可以构建包含南京订单数据的选择查询,然后按照下列步骤使用该选择查询创建新表:

  1. 打开先前使用这些步骤设置的罗斯文数据库。

  2. 如果打开数据库时该数据库不受信任,那么为了运行生成表查询,可能需要使用显示在功能区下面的消息栏启用数据库内容。

    演示如何启用数据库

    • 在消息栏中,单击“启用内容”

    如果数据库位于受信任的位置,则不会出现消息栏,且无需启用内容。

  3. 关闭“登录对话框”窗体。

  4. “创建”选项卡上的“查询”组中,单击“查询设计”

  5. “显示表”对话框中,双击“订单明细”“订单”

  6. 关闭“显示表”对话框。

  7. “订单”表中,双击“客户 ID”“发货城市”以便将这些字段添加到设计网格中。

  8. “订单明细”表中,双击“订单 ID”“产品 ID”“数量”“单价”“折扣”,以便将这些字段添加到设计网格中。

  9. 在设计网格的“发货城市”列中,清除“显示”行中的框。在“条件”行中,键入'南京'(包括单引号)。

    在使用查询结果创建表之前,请对其进行验证。

  10. “设计”选项卡上的“结果”组中,单击“运行”

  11. 按 Ctrl+S 可保存查询。

    将显示“另存为”对话框。

  12. “查询名称”框中,键入南京订单查询,然后单击“确定”

  13. “开始”选项卡上的“视图”组中,单击“视图”,然后单击“设计视图”

  14. “设计”选项卡上的“查询类型”组中,单击“生成表”

    将出现“生成表”对话框。

  15. “生成表”对话框中的“表名称”框中,键入南京订单,然后单击“确定”

  16. “设计”选项卡上的“结果”组中,单击“运行”

  17. 在确认对话框中,单击“是”进行确认。

    将创建新表,且该表显示在导航窗格中。

    注意: 如果已存在使用您指定的名称的表,该表将在查询运行前被删除。

  18. “设计”选项卡上的“结果”组中,单击“运行”

    因为存在“南京订单”表,将会出现警告对话框。

  19. 单击“否”取消操作,并且消除该对话框。

返回页首

将其他表中的数据添加到一个表

您可以使用追加查询检索一个或多个表中的数据,并将这些数据添加到另一个表中。

注意: 无法在 web 浏览器中运行追加查询。

假设您创建了一个要与南京商业协会共享的表,但您发现该协会也在与石家庄地区的客户合作。您希望在与该协会共享该表之前,将包含石家庄地区数据的行添加到该表中。

您可以按照下列步骤将密尔沃基地区数据添加到在上一示例中创建的“南京订单”表中:

  1. 在设计视图中打开名为“南京订单查询”的查询。

  2. 设计选项卡上的查询类型组中,单击追加追加对话框随即打开。

  3. “追加”对话框中,单击“表名称”框中的箭头,然后在下拉列表中选择“南京订单”

  4. 单击“确定”

    将关闭“追加”对话框。在设计网格中,“显示”行消失,并出现“追加到”行。

  5. 在设计网格中的“发货城市”列的“条件”行中,删除 '南京',然后键入 '石家庄'

  6. “追加到”行中,为每列选择适当的字段。

    在本例中,“追加到”行的值应与“字段”行的值相匹配,但这并非追加查询正常运行的必需条件。

  7. “设计”选项卡上的“结果”组中,单击“运行”

注意:  在运行返回大量数据的查询时,可能会收到错误消息,指示您将无法撤消查询。请尝试将内存段限制增加到 3MB 以允许完成查询。

返回页首

自动更改数据

您可以使用更新查询来更改表中的数据,还可以使用更新查询输入条件以指定应更新哪些行。通过更新查询,可以在执行更新前查看要更新的数据。

重要: 操作查询无法撤消。应考虑对要使用更新查询进行更新的所有表进行备份。

注意: 无法在 web 浏览器中运行更新查询。

上一示例中,您向“南京订单”表中追加了行。在“南京订单”表中,“产品 ID”字段显示数值“产品 ID”。为使这些数据对于报表更有用,您可能希望将产品 ID 替换为产品名称。要替换产品 ID,必须首先将“南京订单”表的“产品 ID”字段的数据类型从“数值”更改为“文本”,以便“产品 ID”字段可以接受产品名称。

可以按照下列步骤更新“南京订单”表中的值:

  1. 在设计视图中打开“南京订单”表。

  2. 在“产品 ID”行中,将“数据类型”从“数值”更改为“文本”

  3. 保存并关闭“南京订单”表。

  4. “创建”选项卡上的“查询”组中,单击“查询设计”

  5. “显示表”对话框中,双击“南京订单”“产品”

  6. 关闭“显示表”对话框。

  7. “设计”选项卡上的“查询类型”组中,单击“更新”

    在设计网格中,“排序”“显示”行将消失,并且出现“更新到”行。

  8. “南京订单”表中,双击“产品 ID”将此字段添加到设计网格中。

  9. 在设计网格中,在产品 ID更新到行中,键入或粘贴 关注 ︰

    [产品].[产品名称]

    提示: 可以在“更新到”行中使用空字符串 ("") 或 NULL,通过更新查询来删除字段值。

  10. “条件”行中,键入或粘贴以下内容:

    [产品 ID] Like ([产品].[ID])

    Like关键字是必需的因为进行比较的字段包含不同数据类型 (产品 ID 是文本数据,ID 是数值数据)。

  11. 通过在数据表视图中查看查询,可查看将要使用更新查询更改哪些值。

    “设计”选项卡上的“结果”组中,单击“查看”,然后单击“数据表视图”

    查询将返回要更新的“产品 ID”列表。

  12. “设计”选项卡上的“结果”组中,单击“运行”

    打开“南京订单”表时,您会发现“产品 ID”字段中的数值已替换为“产品”表中的产品名称。

返回页首

自动删除数据

您可以使用删除查询来删除表中的数据,并且可以使用删除查询输入条件来指定应删除的行。通过删除查询,您可以在执行删除操作前查看要删除的行。

注意: 无法在 web 浏览器中运行删除查询。

假设您正准备将“南京订单”表(在上一示例中更新)发送到南京商业协会,但您注意到某些行包含一些空字段。您希望在发送该表之前删除这些包含空字段的行。您可以直接打开该表,手动删除这些行。但是,如果存在大量需要删除的行,并且您具有有关应删除哪些行的明确条件,您会发现使用删除查询非常便利。

按照以下步骤,可以使用查询来删除“南京订单”表中的不包含“订单 ID”值的行:

  1. “创建”选项卡上的“查询”组中,单击“查询设计”

  2. “显示表”对话框中,双击“南京订单”

  3. 关闭“显示表”对话框。

  4. “设计”选项卡上的“查询类型”组中,单击“删除”

    在设计网格中,“排序”“显示”行将消失,并且出现“删除”行。

  5. “南京订单”表中,双击“订单 ID”以将其添加到网格中。

  6. 在设计网格中“订单 ID”列的“条件”行中,键入 Is Null

  7. “设计”选项卡上的“结果”组中,单击“运行”

返回页首

注意: 机器翻译免责声明:本文是由无人工介入的计算机系统翻译的。Microsoft 提供机器翻译是为了帮助非英语国家/地区用户方便阅读有关 Microsoft 产品、服务和技术的内容。由于机器翻译的原因,本文可能包含词汇、语法或文法方面的错误。

扩展你的技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×