创建和运行删除查询

创建和运行删除查询

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

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

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

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

返回页首

需要更多帮助?

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

此信息是否有帮助?

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

×