使用查询从 Access 数据库中删除数据

注意:  我们希望能够尽快以你的语言为你提供最新的帮助内容。 本页面是自动翻译的,可能包含语法错误或不准确之处。我们的目的是使此内容能对你有所帮助。可以在本页面底部告诉我们此信息是否对你有帮助吗? 请在此处查看本文的 英文版本 以便参考。

若要快速删除大量数据或定期执行相同的删除操作,请考虑使用查询。查询可以帮助您确保,您要删除正确的数据,并可以保存并轻松地重复。

注意: 如果想要删除的记录少量 — 乐于手动删除任何数量,您可以在数据表视图中打开表,选择字段或您想要删除的行,然后按 DELETE。

重要: 确保您拥有您的数据库的备份,然后再删除数据。

本文内容

选择要删除的数据查询类型

创建和使用删除查询

创建和使用更新查询

从相关表中删除数据

选择查询条件示例

其他信息

选择要删除的数据查询类型

您必须使用更新查询或删除查询,具体取决于您需要执行的删除类型的选项。

删除查询

使用删除查询从一个表或一次操作中的两个相关表中删除整个记录 (行)。删除查询将删除每个字段,包括唯一标识记录的键值中的所有数据。

注意: 如果您确实要删除的记录位于-一对多关系的"一"端,您可能需要运行删除查询之前更改关系。请参阅本文中的相关表中的删除数据一节。

更新查询

使用更新查询来删除表中的各个字段值,更新查询允许您通过更新现有值为 null 值 (即没有数据) 或零长度字符串 (一对双引号括起来,它们之间没有空格) 删除值。

返回页首

验证之前使用查询删除数据

  • 确保数据库文件不是只读的。为此,请在 Windows 资源管理器中,右键单击数据库文件,然后单击属性

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

  • 请确保您已启用数据库中的内容。 默认情况下,Access 会阻止所有动作查询 (删除、 更新和生成表查询),除非先信任数据库。有关信任数据库的信息,请参阅本文后面的将禁用模式停止阻止查询

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

  • 编辑或删除记录之前,请备份数据库。不能恢复操作所执行的删除和更新查询,以便进行的备份副本可确保您始终可以撤消所做的更改。

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

若要以“独占”模式打开数据库,请执行以下操作:

  1. 单击“文件”选项卡,然后单击“打开”

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

    在独占模式下打开文件

备份数据库

  1. 单击文件选项卡上,指向保存并发布,然后在数据库另存为,请单击备份数据库.Access 将关闭原始文件,创建备份,并再重新打开原始文件。

  2. “另存为”对话框中,指定备份副本的名称和位置,然后单击“保存”

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

创建和使用删除查询

本部分中的步骤解释如何创建和使用删除查询从表中删除整个记录:

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

显示表对话框中显示。

  1. 双击您要从中删除记录,那么,然后单击每个的表关闭

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

  1. 双击星号 (*) 将表中的所有字段添加到设计网格中。

或者,双击要使用指定为删除条件,请输入中的一个或多个条件的任何字段的设计器,然后清除条件显示每个条件字段的复选框。

例如,假设客户超出业务,并且您需要删除所有正在等待该客户的订单。若要查找的记录,您将客户 ID 和订单日期字段添加到设计网格中,并则输入的 ID 号了利用企业版客户以及该客户的订单失效的日期。

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

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

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

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

返回页首

创建和使用更新查询

本部分中的步骤解释如何使用更新查询来删除-一对多关系的"多"方表中的单个字段。您也可以按照以下步骤删除与其他数据不相关的表中的数据。请记住运行更新查询来删除数据将更改现有值为 NULL 或零长度字符串 (一对双引号之间中没有空格),具体取决于您指定的条件。

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

显示表对话框中显示。

  1. 选择包含要删除的数据的表 (如果相关表,选择关系"一"方表),请单击添加,然后再单击关闭

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

  1. 双击星号 (*) 以将表中的所有字段添加至设计网格中。添加所有表字段可以让删除查询从表中删除所有记录(行)。

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

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

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

  2. 验证查询是否返回要设置为 NULL 或零长度字符串记录 (一对双引号没有间距 ("")。

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

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

返回页首

从相关表中删除数据

如果您想要从多个相关表中删除数据,则必须启用参照完整性和每个关系的级联删除相关记录选项。这允许您删除关系的"一"和"多"方的表中的数据的查询。准备删除相关的数据需要以下验证:

  • 确定哪些记录位于关系的“一”端,哪些记录位于关系的“多”端。

  • 如果需要删除位于关系的“一”端的记录以及位于“多”端的相关记录,则需要启用一组称为“参照完整性”的规则,并启用级联删除。本节中的步骤对“参照完整性”进行了说明,并介绍了如何执行这两项任务。

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

    - 或 -

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

确定的关系

要确定哪些记录位于关系的"一"和"多"侧面:

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

关系标签显示,并显示所有表中您的数据库以及每个表与其他每个表之间的关系。连接表的字段的行显示为每个关系。

下图显示了一个典型的关系。大多数,如果不是所有数据库中的关系都有"一"端和"多"方。关系图表示与数字 1"一"方 (1) 和"多"方使用无穷大 () 符号。

两个表之间的关系

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

而且,在默认情况下,Access 会实施一组称为参照完整性的规则。这些规则确保数据库中的外键包含正确的值。外键是一个列,其值与另一个表的主键列中的值相匹配。

编辑关系

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

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

  2. 右键单击与删除操作,所涉及的表相连的关系 (连线),然后单击快捷菜单上的编辑关系

编辑关系对话框中显示。

  1. 确保实施参照完整性复选框已选中。

  2. 选择级联删除相关记录的复选框。

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

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

删除关系

  1. 如果您没有这样做,打开关系窗格。

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

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

  1. 右键单击与删除操作,所涉及的表相连的关系 (连线),然后单击快捷菜单上的删除

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

返回页首

选择查询条件示例

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

条件

效果

> 234

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

>= "Cajhen"

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

Between #2/2/2010# And #12/1/2010#

返回从 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())

使用 Date 函数和 DateAdd 函数返回介于当前日期与从当前日期起三个月之内的所有记录。

Is Null

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

Is Not Null

返回包含任何值(不为 Null)的所有记录。

""

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

返回页首

其他信息

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

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

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

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

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

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

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

返回页首

防止禁用模式阻止查询

默认情况下,如果您打开了未选择信任的数据库,或者打开了不在受信任位置的数据库,Access 将禁止运行所有动作查询。

如果您尝试运行某个动作查询,但好像没有什么反应,请查看 Access 状态栏中是否显示下列消息:

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

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

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

 返回页首

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

此信息是否有帮助?

谢谢您的反馈!

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

×