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