Applies ToMicrosoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

如果想要快速删除大量数据或定期删除 Access 桌面数据库中的一组数据,删除或更新查询可能很有用,因为查询可以指定条件来快速查找和删除数据。 使用查询也可以节省时间,因为可以重复使用保存的查询。

注意: 删除任何数据或运行删除查询之前,请确保你具备 Access 桌面数据库的备份。

如果只想删除一些记录,则不需要查询。 只需在数据表视图中打开表,选择要删除的列 (列) 或记录 (行) ,然后按 DELETE。

重要: 本文中的信息仅适用于桌面数据库。 不能在 Access Web 应用中使用删除或更新查询。

本文内容

选择查询类型

可以使用更新查询或删除查询从数据库中删除数据。 根据下表中的详细信息选择查询:

查询类型

何时使用

结果

使用删除查询

从一个表或两个相关表中同时删除) 行 (整个记录。

注意: 如果记录位于一对多关系的“一”端,则可能需要在运行删除查询之前更改关系。 请参阅有关 从相关表中删除数据的部分。

删除查询会删除每个字段中的所有数据,包括使记录唯一的键值

使用更新查询

从表中删除单个字段值。

通过将现有值更新为 null 值 ((即,没有数据) 或零长度字符串 (一对双引号,) 之间没有空格),可以更轻松地删除值。

返回页首

在使用查询删除任何数据之前要验证的事项

  • 请确保该文件不是只读文件:

    1. 右键单击“ 开始 ”,然后单击“ 打开 Windows 资源管理器”。

    2. 右键单击数据库文件,然后单击“ 属性”。

    3. 查看是否选择了 “只读 ”属性。

  • 验证是否具有从数据库中删除记录所需的权限。 如果不确定,请与系统管理员或数据库设计人员联系。

  • 请确保已在数据库中启用内容。 默认情况下,除非首先信任数据库,否则 Access 会阻止 (删除、更新和生成表查询的所有操作查询) 。 有关信任数据库的信息,请参阅 停止禁用模式阻止查询部分。

  • 要求数据库的其他用户关闭使用要删除的数据的所有表、窗体、查询和报表。 这有助于避免锁冲突。

  • 在编辑或删除记录之前,最好创建 数据库的备份副本 ,以防你想要撤消更改。

提示: 如果大量用户连接到数据库,则可能需要关闭数据库,然后在 独占 模式下重新打开它。

在独占模式下打开数据库

  1. 单击“ 文件 ”选项卡 > “打开”。

  2. 浏览到并指向选择数据库,单击“ 打开 ”按钮旁边的箭头,然后单击“ 以独占方式打开”。

    在独占模式下打开文件

备份数据库

  1. 单击“ 文件 ”选项卡,指向 “另存为”。

  2. 单击“ 将数据库另存为”,然后单击“ 备份数据库”。 Access 将关闭原始文件,创建备份,然后重新打开原始文件。

  3. 单击“ 另存为 ”并指定备份副本的名称和位置,然后单击“ 保存”。

注意: 如果使用只读或以前版本的 Access 中创建的数据库,则可能会收到一条消息,指出无法创建数据库的备份。

要从备份还原,请关闭原始文件并为其重命名,以便备份副本可以使用原始版本的名称。 将原始版本的名称分配给备份副本,然后在 Access 中打开已重命名的备份副本。

使用删除查询

若要创建删除查询,请单击“ 创建 ”选项卡,在 “查询 ”组中,单击“ 查询设计”。 双击要从中删除记录的每个表,然后单击“ 关闭”。

该表在查询设计网格的上半部分显示为窗口。 在字段列表中,双击星号 (*) 将表中的所有字段添加到设计网格。

在删除查询中使用特定条件

重要: 使用条件仅返回要删除的记录。 否则,删除查询将删除表中的每个记录。

双击要指定为删除条件的字段,在查询设计器的 “条件” 行中输入一个条件,然后清除每个条件字段的“ 显示 ”复选框。

例如,你可能想要使用此选项:假设要删除客户的所有待处理订单。 若要仅查找这些记录,请将“客户 ID”和“订单日期”字段添加到查询设计网格,然后输入客户的 ID 号以及该客户的订单失效日期。

  1. 在“ 设计 ”选项卡上,单击“ 查看 > 数据表视图”。

  2. 验证查询是否返回要删除的记录,然后按 Ctrl+S 保存查询。

  3. 若要运行查询,请在导航窗格中双击查询。

返回页首

使用更新查询

注意: 不能在 Access Web 应用中使用更新查询选项。

本部分介绍如何使用更新查询从表中删除单个字段。 请记住,运行用于删除数据的更新查询会将现有值更改为 NULL 或零长度字符串, (一对双引号,) 之间没有空格,具体取决于指定的条件。

  1. 单击“ 创建 ”选项卡,然后在“ 查询 ”组中,单击“ 查询设计”。

  2. 选择要删除数据的表 (如果表相关,请选择关系) “一”端的表,单击“ 添加”,然后单击“ 关闭”。

    该表在查询设计网格的上半部分显示为窗口。 该窗口列出所选表中的所有字段。

  3. 双击星号 (*) ,将表中的所有字段添加到设计网格。 通过添加所有表字段,删除查询可以从表中删除整个记录 (行) 。

    (可选)可以在设计器的“ 条件 ”行中输入一个或多个字段的条件,然后清除每个条件字段的“ 显示 ”复选框。 有关使用条件的详细信息,请参阅 选择查询的示例条件 表。

    注意: 使用条件仅返回要更改的记录。 否则,更新查询会将查询中的每个字段中的每个记录设置为 NULL。

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

  5. 验证查询是否返回要设置为 NULL 的记录或零长度字符串 (一对双引号, ( ”) 之间没有空格。

  6. 根据需要,重复步骤 3 到 5 并更改字段或条件,直到查询仅返回要删除的数据,然后按 Ctrl+S 保存查询。

  7. 若要运行查询,请在导航窗格中双击查询。

返回页首

其他信息

从相关表中删除数据

如果要从多个相关表中删除数据,则必须为每个关系启用 “引用完整性 ”和“ 级联删除相关记录 ”选项。 这允许查询从关系“一”和“多”端的表中删除数据。 准备删除的相关数据需要验证以下内容:

  • 确定哪些记录驻留在关系的“一”端,哪些记录驻留在“多”端。

  • 如果需要删除关系“一”端的记录和“多”端的相关记录,请启用一组名为“引用完整性”的规则,并启用级联删除。 本部分中的步骤介绍了引用完整性以及如何执行这两项任务。

  • 如果只需要删除关系“一个”端的记录,请先删除该关系,然后删除数据。

如果只需要删除关系“多个”端的数据,则可以创建并运行删除查询,而无需更改关系。

若要了解哪些记录驻留在关系的“一个”和“多个”两侧,请在“ 数据库工具” 选项卡上的“ 关系 ”组中,单击“ 关系”。 “ 关系 ”选项卡显示数据库中的表和关系。 每个关系都描述为一条线,用于连接字段之间的表。

下图显示了一个典型关系。 数据库中的大多数关系(如果不是全部)都有“一”侧和“多”侧。 关系图表示“一”边,数字一 (1) ,“多”边具有无穷大 () 符号。

两个表之间的关系

删除关系“一”端的记录时,还会删除关系“多”端的所有相关记录。 但是,删除关系“多个”端的记录时,通常不会删除“一”端的记录。

此外,Access 会自动强制实施一组称为引用完整性的规则。 这些规则可确保数据库中的外键包含正确的值。 外键是一个列,其值与另一个表的主键列中的值匹配。

编辑关系

仅当需要删除关系“一”和“多”端的数据时,才执行这些步骤。

  1. “数据库工具”选项卡上的“关系”组中,单击“关系”

  2. 右键单击关系 () 连接删除操作中涉及的表的行,然后单击快捷菜单上的“ 编辑关系 ”。

  3. “编辑关系 ”对话框中,确保选中“ 强制引用完整性 ”复选框。

  4. 选中“ 级联删除相关记录 ”复选框。

    注意: 在再次禁用此属性之前,删除关系“一”端上的记录将删除关系“多”端的所有相关记录。

  5. 单击“ 确定”,关闭“ 关系 ”窗格,然后继续执行下一组步骤。

删除关系

  1. 如果尚未这样做,请打开“ 关系 ”窗格。

  2. “数据库工具”选项卡上的“关系”组中,单击“关系”

    记下关系中涉及的字段,以便在删除数据后还原关系。

  3. 右键单击关系 () 连接删除操作中涉及的表的行,然后单击快捷菜单上的“ 删除 ”。

注意: 若要还原关系,请按照前面的步骤打开“ 关系 ”窗格,然后拖动“一”表中的主键字段并将其放在“多”表的外键字段上。 此时将显示 “编辑关系 ”对话框。 如果旧关系强制实施引用完整性,请选择“ 强制实施引用完整性”,然后单击“ 创建”。 否则,只需单击“ 创建”。

返回页首

选择查询的示例条件

下表列出了一些示例条件,在希望确保仅删除要删除的数据时,可以在选择查询中使用这些条件。 其中一些示例使用通配符。

条件

效果

> 234

返回所有大于 234 的数字。 若要查找所有小于 234 的数字,请使用 < 234。

>= “Cajhen”

返回从 Cajhen 直至字母表末尾的所有记录。

在 #2/2/2010# 和 #12/1/2010 之间#

返回日期从 2010 年 2 月 2 日至 2010 年 12 月 1 日, (ANSI-89) 。 如果数据库使用的是 ANSI-92 通配符,则使用单引号 (') 替代井号 (#)。 示例:在“2/2010/2”和“12/1/2010”之间。

Not "德国"

查找字段的具体内容并不完全等于“德国”的所有记录。 此条件将返回包含除了“德国”以外的其他字符的记录,例如“德国(欧元)”或“欧洲(德国)”。

Not "T*"

查找不以 T 开头的所有记录。如果数据库使用 ANSI-92 通配符字符集,则使用百分号 (%) 替代星号 (*)。

Not "*t"

查找所有不以 t 结尾的记录。 如果数据库使用的是 ANSI-92 通配符字符集,则使用百分号 (%) 替代星号 (*)。

In(加拿大,英国)

在列表中,查找包含“加拿大”或“英国”的所有记录。

Like "[A-D]*"

在“文本”字段中,查找以字母 A 到 D 开头的所有记录。如果数据库使用 ANSI-92 通配符字符集,请使用百分号 (%) ,而不是星号 (*) 。

Like "*ar*"

查找包含字母序列“ar”的所有记录。 如果数据库使用的是 ANSI-92 通配符字符集,则使用百分号 (%) 替代星号 (*)。

Like "Maison Dewe?"

查找满足以下条件的所有记录:以“Maison”开头并包含另一个含有 5 个字母的字符串,且该字符串的前 4 字母是“Dewe”而最后的字母未知。 如果数据库使用的是 ANSI-92 通配符字符集,则使用下划线 (_) 替代问号 (?)。

#2/2/2010#

查找 2010 年 2 月 2 日的所有记录。 如果数据库使用 ANSI-92 通配符字符集,请将日期括在单引号而不是井号 ('2010/2/2') 。

< Date() - 30

使用 Date 函数返回超过 30 天的所有日期。

Date()

使用 Date 函数返回包含当前日期的所有记录。

Between Date() And DateAdd("M", 3, Date())

使用 DateDateAdd 函数可返回从今天日期起的三个月之间的所有记录。

Is Null

返回包含 Null(空或未定义)值的所有记录。

Is Not Null

返回包含任何值 (非 null) 的所有记录。

""

返回包含零长度字符串的所有记录。 需要向必填字段添加值,但还不知道实际值是什么时,请使用零长度字符串。 例如,某个字段可能需要传真号码,但某些客户可能没有传真机。 在这种情况下,无需输入数字,而是输入一对双引号, (“”) 之间没有空格。

返回页首

故障排除提示

为什么会看到这种错误消息,应该如何解决?

如果使用多个表生成删除查询,并且查询的唯一 记录 属性设置为 “否”,则 Access 将显示错误消息:运行查询时 ,无法从指定的表中删除

若要解决此问题,请将查询的“唯一记录”属性设置为“”。

  1. 在设计视图中打开删除查询。

  2. 如果查询属性表未打开,请按 F4 将其打开。

  3. 单击查询设计器以显示查询属性(而不是字段属性)。

  4. 在查询属性表中,找到“唯一的记录”属性,然后将其设置为“”。

防止禁用模式阻止查询

默认情况下,如果打开未选择信任或不驻留在受信任位置的桌面数据库,Access 将阻止运行所有操作查询。

如果尝试运行某动作查询,但貌似无响应,请查看 Access 状态栏中是否显示下列消息:

“此操作或事件已被禁用模式阻止。”

看到该消息时,请执行以下步骤来启用阻止的内容:

  • “安全警告 消息栏”上,单击“ 启用内容”,然后再次运行查询。

返回页首

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。