创建和运行删除查询

创建和运行删除查询

如果希望在 Access 桌面数据库中定期快速删除大量数据或删除一组数据,则删除或更新查询可能很有用,因为这些查询可以指定条件来快速查找和删除数据。 使用查询也可以是 timesaver,因为您可以重复使用已保存的查询。

注意: 删除任何数据或运行删除查询之前,请确保你具备 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 之间#

返回从2月2日到 2010-2010 (ANSI-89)之间的日期。 如果数据库使用的是 ANSI-92 通配符,则使用单引号 (') 替代井号 (#)。 示例: "2/2/2010" 和 "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())

使用日期DateAdd函数返回今天的日期与三个月之间的所有记录(从今天起)。

Is Null

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

Is Not Null

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

""

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

返回页首

故障排除提示

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

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

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

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

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

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

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

防止禁用模式阻止查询

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

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

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

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

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

返回页首

注意:  本页面是自动翻译的,可能包含语法错误或不准确之处。 我们的目的是使此内容能对你有所帮助。 能否告知我们此信息是否有所帮助? 下面是该参考内容的英文版

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

此信息是否有帮助?

谢谢您的反馈!

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

×