如果要快速删除大量数据或定期删除 Access 桌面数据库中的一组数据,删除或更新查询可能非常有用,因为通过查询可以指定条件来快速查找和删除数据。 使用查询也可以节省时间,因为您可以重用保存的查询。
注意
删除任何数据或运行删除查询之前,请确保你具备 Access 桌面数据库的备份。
如果你只想删除几个记录,则不需要查询。 只需在数据表视图中打开表,选择要删除的字段 (列) 或记录 (行) ,然后按 Delete。
重要
本文中的信息仅适用于桌面数据库。 不能在 Access Web 应用中使用删除或更新查询。
本文内容
选择查询类型
可以使用更新查询或删除查询从数据库中删除数据。 根据下表中的详细信息选择查询:
| 查询类型 | 何时使用 | 结果 |
|---|---|---|
| 使用删除查询 | 同时从表或两个相关表中删除) 的整个记录 (行。 注意: 如果记录驻留在一对多关系的“一”端,则可能需要在运行删除查询之前更改关系。 请参阅有关从 相关表中删除数据的部分。 |
删除查询 删除每个字段中的所有数据,包括使记录唯一的键值 |
| 使用更新查询 | 从表中删除单个字段值。 | 通过将现有值更新为 null 值 (,即不) 数据,或 (一对双引号的零长度字符串(两者之间没有空格) ),从而简化了删除值。 |
使用查询删除任何数据之前要验证的事项
确保文件不是只读文件:
- 右键单击“ 开始”, 然后单击 “打开 Windows 资源管理器”。
- 右键单击数据库文件,然后单击 “属性”。
- 查看是否选择了只 读 属性。
验证您是否具有从数据库中删除记录所需的权限。 如果不确定,请与系统管理员或数据库设计人员联系。
确保已在数据库中启用内容。 默认情况下,Access 会阻止所有操作查询, (删除、更新和) 表查询,除非首先信任数据库。 有关信任数据库的信息,请参阅“ 停止禁用模式阻止查询”部分。
要求数据库的其他用户关闭使用您要删除的数据的所有表、窗体、查询和报表。 这有助于避免锁定冲突。
在编辑或删除记录之前, 最好创建数据库的备份副本 ,以防要撤销更改。
提示
如果大量用户连接到数据库,则可能需要关闭数据库,然后以 独占 模式重新打开它。
以独占模式打开数据库
- 单击 “文件 ”选项卡 >打开。
- 浏览并指向以选择数据库,单击 “打开 ”按钮旁边的箭头,然后单击“ 独占打开”。
备份数据库
- 单击 “文件 ”选项卡,指向 “另存为”。
- 单击 “将数据库另存为”,单击“ 备份数据库”。 Access 将关闭原始文件,创建备份,然后重新打开原始文件。
- 单击 另存为并 指定备份副本的名称和位置,然后单击 保存。
注意
如果使用的是只读或在以前版本的 Access 中创建的数据库,则可能会收到一条消息,指出无法创建数据库备份。
要从备份还原,请关闭原始文件并为其重命名,以便备份副本可以使用原始版本的名称。 将原始版本的名称分配给备份副本,然后在 Access 中打开已重命名的备份副本。
使用删除查询
要创建删除查询,请单击 “创建 ”选项卡,在 “查询 ”组中,单击“ 查询设计”。 双击要从中删除记录的每个表,然后单击 “关闭”。
该表在查询设计网格的上半部分显示为窗口。 在字段列表中,双击星号 (*) 将表中的所有字段添加到设计网格。
在删除查询中使用特定条件
重要
使用条件仅返回要删除的记录。 否则,删除查询将删除表中的所有记录。
双击要指定为删除条件的字段,在查询设计器的“条件”行中输入一个条件,然后清除每个条件字段的“显示检查框。
可能想要使用此选项的示例: 假设您要删除客户的所有挂单。 若要仅查找这些记录,请将“客户 ID”和“订单日期”字段添加到查询设计网格,然后输入客户的 ID 号以及该客户的订单无效的日期。
- 在 “设计 ”选项卡上,单击 “查看>数据表视图”。
- 验证查询是否返回了要删除的记录,然后按 CTRL+S 保存查询。
- 若要运行查询,请双击导航窗格中的查询。
使用更新查询
注意
不能在 Access Web 应用中使用更新查询选项。
本节介绍如何使用更新查询从表中删除单个字段。 请记住,运行更新查询以删除数据会将现有值更改为 NULL 或零长度字符串, (一对双引号,) 之间没有空格,具体取决于指定的条件。
单击 “创建 ”选项卡,然后在 “查询 ”组中,单击“ 查询设计”。
选择包含要删除数据的表 (如果表是相关的,请选择关系) “一侧的表,单击 ”添加“,然后单击 ”关闭“。
该表在查询设计网格的上半部分显示为窗口。 该窗口列出了选定表中的所有字段。双击星号 (*) 将表中的所有字段添加到设计网格。 添加所有表字段使删除查询能够从表中删除整个记录 () 行。
或者,可以在设计器的“条件”行中为一个或多个字段输入条件,然后清除每个条件字段的“显示”检查框。 有关使用条件的详细信息,请参阅 选择查询的示例条件 表。注意
使用条件可以仅返回要更改的记录。 否则,更新查询将设置为 NULL 您查询中每个字段中的每条记录。
在“设计”选项卡上的“结果”组中,单击“视图”,然后单击“数据表视图”。
验证查询是否返回要设置为 NULL 的记录,或 (一对双引号之间没有空格的零长度字符串返回, (“”) 。
根据需要,重复步骤 3 至 5,更改字段或条件,直到查询仅返回要删除的数据,然后按 CTRL+S 保存查询。
若要运行查询,请双击导航窗格中的查询。
其他信息
从相关表中删除数据
如果要从多个相关表中删除数据,则必须为每个关系启用“ 引用完整性 ”和“ 级联删除相关记录 ”选项。 这允许查询从关系的“一”和“多”边的表中删除数据。 准备删除相关数据需要验证以下内容:
- 确定哪些记录位于关系的“一”侧,哪些记录位于“多”侧。
- 如果您需要删除关系“一”侧的记录和“多”侧的相关记录,请启用一组称为引用完整性的规则,并启用级联删除。 本节中的步骤介绍了引用完整性以及如何执行这两项任务。
- 如果只需要删除关系“一”端的记录,请先删除该关系,然后再删除数据。
如果只需要删除关系的“多”侧数据,则可以创建并运行删除查询,而无需更改关系。
若要找出哪些记录位于关系的“一”端和“多端”,请在“ 数据库工具 ”选项卡的“ 关系 ”组中单击“ 关系”。 “ 关系” 选项卡显示数据库中的表和关系。 每个关系都描述为连接字段之间表的直线。
下图显示了典型关系。 数据库中的大多数(如果不是全部)关系都有“一”面和“多”面。 关系图表示带有数字 1 (1) 的“一”边和带有无穷大 (∞) 符号的“多”边。
删除关系“一”侧的记录时,也会删除关系“多”侧的所有相关记录。 但是,当您删除关系“多”侧的记录时,您通常不会删除“一”侧的记录。
此外,Access 还会自动实施一组称为参照完整性的规则。 这些规则确保数据库中的外键包含正确的值。 外键是一列,其值与另一个表的主键列中的值相匹配。
编辑关系
仅当需要删除关系的“一”面和“多面”数据时,才执行以下步骤。
在“数据库工具”选项卡上的“关系”组中,单击“关系”。
右键单击 (删除操作中涉及的表的线) 的关系,然后单击快捷菜单上的 “编辑关系” 。
在“编辑关系”对话框中,确保选中“实施参照完整性”检查框。
选中级联删除相关记录检查框。
注意
在再次禁用此属性之前,删除关系“一”侧的记录将删除关系“多”侧的所有相关记录。
单击“ 确定”,关闭“ 关系 ”窗格,然后继续执行下一组步骤。
删除关系
- 如果尚未打开,请打开“ 关系” 窗格。
- 在“数据库工具”选项卡上的“关系”组中,单击“关系”。
记下关系中涉及的字段,以便在删除数据后还原关系。 - 右键单击删除操作中涉及) 表的线 (关系,然后单击快捷菜单上的 “删除 ”。
注意
若要还原关系,请按照前面的步骤打开“ 关系” 窗格,然后将主键字段从 “one” 表拖放到 “many” 表的外键字段上。 将显示“ 编辑关系 ”对话框。 如果旧关系强制实施参照完整性,请选择 “实施参照完整性”,然后单击 “创建”。 否则,只需单击 “创建”。
选择查询的示例条件
下表列出了一些示例条件,当你希望确保只删除要删除的数据时,你可以在选择查询中使用这些条件。 其中一些示例使用通配符。
| Criteria | 作用 |
|---|---|
| > 234 | 返回所有大于 234 的数字。 若要查找所有小于 234 的数字,请使用 < 234。 |
| >=“卡亨” | 返回从 Cajhen 直至字母表末尾的所有记录。 |
| 介于 #2/2/2010# 和 #12/1/2010 之间# | 返回日期为 2010 年 2 月 2 日至 2010 年 12 月 1 日 (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') 将日期括起来。 |
| < 日期 () - 30 | 使用 Date 函数返回超过 30 天的所有日期。 |
| Date() | 使用 Date 函数返回包含当前日期的所有记录。 |
| Between Date() And DateAdd("M", 3, Date()) | 使用 Date 和 DateAdd 函数返回今天和 3 个月前的今天之间的所有记录。 |
| Is Null | 返回包含 Null(空或未定义)值的所有记录。 |
| Is Not Null | 返回包含非 null) 的任何值 (的所有记录。 |
| "" | 返回包含零长度字符串的所有记录。 当需要将值添加到必填字段,但还不知道实际值是什么时,请使用零长度字符串。 例如,某个字段可能需要传真号码,但某些客户可能没有传真机。 在这种情况下,请输入一对双引号,而不是输入数字,而 (“”) ,它们之间没有空格。 |
故障排除提示
为什么会看到这种错误消息,应该如何解决?
如果使用多个表生成删除查询,并且查询的 “唯一记录” 属性设置为“ 否”,则 Access 将显示错误消息;运行查询时 无法从指定的表中删除 。
若要解决此问题,请将查询的“唯一记录”属性设置为“是”。
- 在设计视图中打开删除查询。
- 如果查询属性表未打开,请按 F4 将其打开。
- 单击查询设计器以显示查询属性(而不是字段属性)。
- 在查询属性表中,找到“唯一的记录”属性,然后将其设置为“是”。
防止禁用模式阻止查询
默认情况下,如果打开的桌面数据库尚未选择信任或不驻留在受信任的位置,Access 将阻止所有操作查询的运行。
如果尝试运行某动作查询,但貌似无响应,请查看 Access 状态栏中是否显示下列消息:
“此操作或事件已被禁用模式阻止。”
看到该消息时,请执行以下步骤以启用阻止的内容:
- 在 安全警告 消息栏上,单击 “启用内容”,然后再次运行查询。