创建和运行删除查询

创建和运行删除查询

当您想要快速删除大量数据或删除的定期 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 直至字母表末尾的所有记录。

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

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

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

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

有关禁用模式和 Access 安全性的详细信息,请参阅文章数据库对象在受信任和不受信任时的行为

 返回页首

注释: 

  • 机器翻译免责声明:本文是由无人工介入的计算机系统翻译的。Microsoft 提供机器翻译是为了帮助非英语国家/地区用户方便阅读有关 Microsoft 产品、服务和技术的内容。由于机器翻译的原因,本文可能包含词汇、语法或文法方面的错误。

  • 请在 此处 中查找本文的英文版本以便参考。你和 Microsoft 社区的其他成员可以使用 Community Translation Framework (CTF) 来改进本文。只需将鼠标悬停在文章中的句子上,然后在 CTF 小组件中单击“IMPROVE TRANSLATION”即可。 单击此处了解有关 CTF 的详细信息。 使用 CTF 即表示你同意服务条款

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

此信息是否有帮助?

谢谢您的反馈!

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

×