若要在 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 (1 的"一"端) 表示具有无穷大 (∞) 的 "多" 端。

两个表之间的关系

在关系的"一"端删除记录时,还会删除该关系的"多"端的所有相关记录。 但是,在关系的"多"端删除记录时,通常不会删除"一"方的记录。

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

编辑关系

只有在需要删除关系的"一"和"多"方的数据时,才执行以下步骤。

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

  2. 右键单击 (连接) 所涉及的表的行关系,然后单击快捷菜单上的"编辑关系"。

  3. "编辑关系" 对话框中,确保选中" 实施参照完整性 "复选框。

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

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

  5. 单击 "确定", 关闭" 关系"窗格,然后转到下一组步骤。

删除关系

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

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

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

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

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

返回页首

选择查询的示例条件

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

条件

效果

> 234

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

>= "Cajhen"

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

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

返回从 2010 年 2 月 2 日到 2010 年 12 月 1 日 (ANSI-89) 。 如果数据库使用的是 ANSI-92 通配符,则使用单引号 (') 替代井号 (#)。 示例:Between '2/2/2010' and '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 通配符字符集,请用单引号而不是井号 ('2/2/2010') 。

< 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 状态栏中是否显示下列消息:

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

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

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

返回页首

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!

×