使用查询可以更轻松地查看、添加、删除或更改 Access 数据库中的数据。 使用查询的其他一些原因:

  • 通过根据特定条件筛选特定条件 (快速查找)

  • 计算或汇总数据

  • 自动执行数据管理任务,例如定期查看最新数据。

注意:  如果要尝试示例中的查询,请使用 Access 桌面数据库。

查询可帮助你查找并处理数据

在精心设计的数据库中,想要呈现在表单或报表中的数据通常位于多个表中。 查询可以从各种表中提取信息,并组合这些信息以在窗体或报告中显示。 查询可以是对数据库中的数据结果或针对数据执行操作的请求,或者对于两者都是请求。 查询可以为您提供简单问题的答案、执行计算、合并不同表中的数据、添加、更改或删除数据库中的数据。 由于查询用途广泛,因此查询类型很多,因此,可以基于任务创建一种类型的查询。

主要查询类型

用途

选择

用于从表中检索数据或进行计算。

动作

添加、更改或删除数据。 每项任务具有特定类型的动作查询。 动作查询在 Access Web 应用中不可用。

创建选择查询

如果要仅查看表中的特定字段的数据,或者同时查看多个表中的数据,或者可能只根据特定条件查看数据,则选择查询类型将是您的选择。 有关详细信息,请参阅 创建简单的选择查询

查看选定字段中的数据

例如,如果数据库的表中包含大量有关产品的信息,并且您想要查看产品列表及其价格,下面是创建选择查询以仅返回产品名称和相应价格的示例:

  1. 打开数据库,在"创建"选项卡上单击"查询设计"。

  2. 在" 表" 选项卡上,双击"产品 " 表。

  3. 在"产品"表中,假设有"产品名称"和"列出价格"字段。 双击"产品名称"和"列出价格",将这些字段添加到查询 设计网格 。

  4. 在“设计”选项卡上,单击“运行”。 查询将运行并显示产品及其价格的列表。

返回页首

同时查看多个相关表中的数据

例如,如果您有一个数据库用于销售食品的商店,并且想要查看特定城市的客户的订单。 假设有关订单的数据和客户数据分别存储在名为"客户"和"订单"的两个表中。 如果每个表都有一个"客户 ID"字段,该字段构成两个表 一对多关系 的基础。 可以使用以下过程创建一个查询,用于返回特定城市(例如拉斯维加斯)的客户的订单:

  1. 打开数据库。 在"创建"选项卡上的"查询"组中,单击"查询设计"。

  2. 在"表"选项卡上,双击"客户"和"订单"。

    请注意名为 (联接) ,用于连接"客户"表中的"ID"字段和"订单"表中的"客户 ID"字段。 此行显示两个表之间的关系。

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

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

  5. 在"城市"列的"条件"行中,键入"拉斯维加斯"。

    清除"显示"复选框可防止查询在其结果中显示城市,在"条件"行中键入"拉斯维加斯"指定仅希望查看 City 字段值为拉斯维加斯的记录。 在这种情况下,查询仅返回位于拉斯维加斯的客户。 无需显示字段,也无需通过条件使用它。

  6. 在"订单"表中,双击"订单 ID" 和"订单 日期 ",将这些字段添加到查询设计网格的后两列。

  7. 在“设计”选项卡上的“结果”组中,单击“运行”。 查询将运行,然后显示拉斯维加斯客户的订单列表。

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

返回页首

创建参数查询

如果经常想要运行特定查询的变体,请考虑使用参数查询。 运行参数查询时,查询会提示输入字段值,然后使用提供的值为查询创建条件。

注意:  不能在 Access Web 应用中创建参数查询。

从上一示例中继续学习创建一个为位于拉斯维加斯的客户返回订单的选择查询,您可以修改选择查询,以提示您每次运行查询时指定城市。 若要继续操作,请打开在上一示例中创建的数据库:

  1. 在导航窗格中,右键单击在) 上一部分创建的名为Orders by City (的查询,然后单击快捷菜单上的"设计视图"。

  2. 在查询设计网格中,在"城市"列的"条件"行中删除拉斯维加斯,然后键入[对于什么城市?]。

    字符串 [对于什么城市?] 是参数提示符。 方括号表示希望查询要求输入,在这种情况下,文本 ("对于哪个城市 ?") 参数提示显示的问题。

    注意: 任何一个 (。) 感叹号和感叹号 (!) 参数提示符中都可以用作文本。

  3. 选中"城市 "列的 "显示"行中的复选框,以便查询结果显示城市。

  4. 在“设计”选项卡上的“结果”组中,单击“运行”。 该查询会提示输入 City 的值。

  5. 键入 "纽约",然后按 Enter 查看纽约客户的订单。

    如果不知道可以指定哪些值,该做什么? 可以使用通配符作为提示的一部分:

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

  7. 在查询设计网格中,在"城市"列的"条件"行中,键入Like [对于什么城市?]&"*"。

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

  8. 在"设计"选项卡上的"结果"组中,单击"运行",在查询提示符下键入"新建",然后按 Enter。

    查询将运行,然后显示纽约客户的订单。

指定参数数据类型

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

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

若要指定数据类型参数的值,请使用以下过程:

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

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

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

有关详细信息,请参阅 使用参数在运行查询时请求输入

返回页首

创建总计查询

数据表的"总计"行非常有用,但对于更复杂的问题,请使用总计查询。 汇总查询是一种选择查询,可用于对数据进行分组和汇总,例如,当您想要查看每个产品的总销售额时。 在总计查询中,可以使用 Sum 函数 (聚合函数) 查看每个产品的总销售额。

注意:  不能在 Access Web 应用中使用聚合函数。

使用以下过程修改在上一示例中创建的产品分类汇总查询,以便按产品汇总产品分类汇总。

  1. 在"开始"选项卡上,单击">视图"。

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

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

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

注意:  尽管它们的名称相似,但设计网格中的"总计"行和数据表的"总计"行不同:

  • 可以使用设计网格中的"总计"行按字段值分组。

  • 可以将数据表"总计 " 行添加到总计查询的结果中。

  • 在设计网格中使用 " 汇总"行时,必须选择每个字段的聚合函数。 如果不想对字段执行计算,可以按字段分组。

  • 在设计网格的第二列中的"总计"行中,从下拉列表中选择"总和"。

  • 在“设计”选项卡上的“结果”组中,单击“运行”。 查询将运行,然后显示包含小计的产品列表。

  • 按 Ctrl+S 保存该查询。 使查询保持打开状态。

有关详细信息,请参阅使用"总计"行 在数据表内显示列总计

返回页首

根据数据进行计算

您通常不会使用表来存储计算值(如小计)(即使它们基于同一数据库中的数据)。因为如果计算值基于更改,计算值可能会过时。 例如,您不会将某人的年龄存储在表中,因为每年必须更新该值;而是存储此人的出生日期,然后使用查询来计算此人的年龄。

例如,如果你有一个数据库来存储要销售的一些产品。 此数据库有一个称为"订单详细信息"的表,该表包含有关字段中的产品的信息,例如,每个产品的价格和数量。 可以使用将每个产品的数量乘以该产品的单价的查询来计算小计,将每个产品的数量乘以该产品的单价和折扣,然后从总单价中减去总折扣。 如果在上一示例中创建了示例数据库,请打开它并按照以下步骤操作:

  1. 在"创建"选项卡上,单击 "查询设计"。

  2. 在" 表"选项卡上,双击"订单详细信息"。

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

  4. 在网格的第二列中,右键单击"字段"行,然后单击快捷 菜单上的"缩放"。

  5. 在"缩放"框中,键入或粘贴以下内容:小计 : ([数量]*[单价]) - ([数量]*[单价]*[折扣])

  6. 单击“确定”。

  7. 在" 设计"选项卡上,单击" 运行"。 查询将运行,然后按订单显示产品和小计列表。

  8. 按 Ctrl+S 保存查询,然后为查询命名"产品小计"。

有关详细信息,请参阅使用"总计"行 在数据表内显示列总计

返回页首

显示汇总或聚合数据

使用表记录事务或存储定期发生的数字数据时,能够查看汇总的数据(如总和或平均值)非常有用。 在 Access 中,可以将"总计"行添加到 数据表 。 汇总行是数据表底部的一行,可以显示正在运行的总计或其他聚合值。

  1. 运行之前创建的产品小计查询,使结果在 数据表视图 。

  2. 在"开始"选项卡上,单击 "总计"。 数据表底部将显示一个新行,第一列中 有"总计"一词。

  3. 单击数据表最后一行中名为 Total 的 单元格

  4. 单击箭头以查看可用的聚合函数。 由于列包含文本数据,因此只有两个选项 :None 和Count。

  5. 选择 "计数"。 单元格的内容从"总计" 更改到列值的计数。

  6. 单击第二列 (相邻单元格) 。 请注意,单元格中会出现一个箭头。

  7. 单击箭头,然后单击"求和 "。 该字段显示列值的总和。

  8. 让查询在数据表视图中保持打开状态。

返回页首

创建交叉表查询

现在,假设你要查看产品小计,但还希望按月进行聚合,以便每行显示产品的小计,每一列显示一个月的产品小计。 若要显示产品的小计和显示一个月的产品小计,请使用 交叉表查询 。

注意: 交叉表查询无法在 Access Web 应用中显示。

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

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

  2. 在"查询设置"组中,单击" (表"或"在查询设置" Access 2013 ) 。

  3. 双击"订单",然后单击"关闭"。

  4. 在“设计”选项卡的“查询类型​​”组中,单击“交叉表”。 在设计网格中 ,"显示 "行处于隐藏状态, 并显示交叉表 行。

  5. 在设计网格的第三列中,右键单击"字段"行,然后单击快捷菜单上的"缩放"。 " 缩放" 框随即打开。

  6. 在" 缩放" 框中,键入或粘贴以下内容 :"Month"& DatePart ("m",[订单日期])

  7. 单击“确定”。

  8. "交叉表"行中,从下拉列表中选择以下值:第一列的行标题、第二列的值,第三列的列标题。

  9. 在“设计”选项卡上的“结果”组中,单击“运行”。 查询将运行,然后显示按月聚合的产品小计。

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

    有关交叉表查询详细信息,请参阅"使用交叉表查询使摘要数据更易于阅读"。

返回页首

创建生成表查询

可以使用生成表查询基于存储在其他表中的数据创建新表。

注意:  Make-table 查询在 Access Web 应用中不可用。

例如,假设要向使用 Access 准备报表的芝加哥业务合作伙伴发送芝加哥订单的数据。 要限制发送到芝加哥订单特定数据的数据,而不是发送所有订单数据。

可以生成包含 Chicago 订单数据的选择查询,然后使用以下过程使用 select 查询创建新表:

  1. 打开上一示例中的示例数据库。

    若要运行 make-table 查询,可能需要启用数据库内容。

    注意:  如果在功能区下方看到有关启用数据库的消息,请单击"启用 内容"。如果数据库已位于受信任位置,则看不到消息栏。

  2. 在"创建"选项卡上的"查询"组中,单击"查询设计"。

  3. 双击"订单详细信息"和"订单"。

  4. 在" 订单" 表中,双击"客户 ID" 和"发货 城市 ",将这些字段添加到设计网格。

  5. 在"订单明细"表中,双击"订单ID"、"产品ID"、"数量"、"单价"和"折扣",将这些字段添加到设计网格。

  6. 在设计网格 "发货城市"列中,清除"显示"行 中的 框。 在" 条件 "行中,键入 "Chicago" ( 包含单引号) 。 使用查询结果创建表之前,请验证查询结果。

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

  8. 按 Ctrl + S 保存查询。

  9. 在"查询名称"框中,键入"芝加哥订单查询",然后单击"确定"。

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

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

  12. 在"创建表"对话框中的"名称"框中,键入"芝加哥订单",然后单击"确定"。

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

  14. 在确认对话框中,单击 "是",然后查看导航窗格中显示的新表。

    注意: 如果已有一个表与指定的表同名,Access 会先删除该表,然后再运行查询。

有关使用生成表查询的信息,请参阅"创建生成表查询"。

返回页首

创建追加查询

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

注意:  追加查询在 Access Web 应用中不可用。

例如,假设创建了一个表来与芝加哥业务关联人员共享,但您意识到该关联也适用于密尔瓦基地区的客户。 要先将包含密尔瓦基地区数据的行添加到表中,然后再与同事共享表。 可以使用以下过程将密尔瓦基地区数据添加到"芝加哥订单"表中:

  1. 打开之前在设计视图中创建的名为"Chicago Orders Query"的查询。

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

  3. 在"追加"对话框中,单击"表名称"框中的箭头,从下拉列表中选择"芝加哥订单",然后单击"确定"。

  4. 在设计网格中,在"发货城市"列的"条件"行中,删除"Chicago",然后键入"密尔瓦基"。

  5. 在" 追加到" 行中,选择每列相应的字段。

    此示例中,"追加到"行值应匹配"字段"行值,但这不是追加查询正常工作所需的值。

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

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

有关追加查询的详细信息,请参阅使用追加查询将记录添加到表

返回页首

创建更新查询

可以使用更新查询来更改表中的数据,并且可以使用更新查询输入条件来指定应更新的行。 通过更新查询,可以先查看更新后的数据,再执行更新。

重要:  操作查询无法撤消。 应考虑使用更新查询备份要更新的任何表。 更新查询在 Access Web 应用中不可用。

在上一示例中,将行追加到"芝加哥订单"表。 在"芝加哥订单"表中,"产品 ID"字段显示数值"产品 ID"。 若要使数据在报告中更有用,可以将产品 ID 替换为产品名称,请使用以下过程:

  1. 在设计视图中打开"芝加哥订单"表。

  2. 在"产品 ID"行中,将数据类型从"数字"更改为"文本"。

  3. 保存并关闭"芝加哥订单"表。

  4. 在"创建"选项卡上的"查询"组中,单击"查询设计"。

  5. 双击"Chicago Orders andProducts"。

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

  7. 在设计网格中,"排序和显示行"消失,并且显示"更新到"行。

  8. 在" 芝加哥订单" 表中,双击" 产品 ID" 将此字段添加到设计网格。

  9. 在设计网格中,在"产品ID"列的"更新到"行中,键入或粘贴以下内容:[Products].[产品名称]

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

  10. 在" 条件" 行中,键入或粘贴以下内容 :[产品 ID] Like ([Products].[ID])

  11. 可以通过在数据表视图中查看查询来查看更新查询将更改哪些值。

  12. 在"设计"选项卡上,单击">视图"。 该查询返回将更新的产品 ID 列表。

  13. 在“设计”选项卡上,单击“运行”。

    打开"芝加哥订单"表时,会看到"产品 ID"字段中的数值已替换为"产品"表中的产品名称。

有关更新查询的详细信息,请参阅创建和运行更新查询

返回页首

创建删除查询

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

注意:  Access Web 应用中没有删除查询选项。

例如,假设你准备将上一示例中的"芝加哥订单"表发送给芝加哥业务关联公司,但注意到某些行包含大量空字段。 你决定在发送表之前删除这些行。 可以只打开表并手动删除行,但如果要删除许多行,并且有明确的条件要求删除哪些行,您可能会发现使用删除查询很有帮助。

可以使用查询通过以下过程删除"芝加哥订单"表中没有订单 ID 值的行:

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

  2. 双击"芝加哥订单"。

  3. 在"设计"选项卡上的"查询类型"组中,单击"删除"。 在设计网格中,"排序和显示行"消失,并且将显示"删除"行。

  4. 在" 芝加哥订单" 表中,双击 "订单 ID" 将其添加到网格。

  5. 在设计网格中,在"订单ID"列的"条件"行中,键入"为 Null"。

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

有关删除查询详细信息,请参阅"创建并运行删除查询"。

返回页首

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Office Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×