从Access2007数据库中删除一项或多项记录
2008-11-16 14:27:57   来源:   评论:0 点击:


删除不准确或过时的数据可以使您的数据库使用起来更加快捷方便。例如,如果将以前的日历或财务季度的数据移到其他数据库中的一组归档表中,则可以减小所使用的数据库的大小,并可提高数据库运行速度。如果删除不准确或重复的数据,则可以降低业务成本。

本文介绍如何删除 Microsoft Office Access 2007 数据库中的数据,还介绍如何删除单个字段中的数据(这是一个相对简单的过程)以及如何删除整条记录(这个过程可能较为复杂)。本文还介绍如何手动删除数据,以及如何使用删除查询。  

 注释   要了解和使用本文中的信息,您必须首先了解主键和外键的概念。有关主键和外键的介绍性信息,请参阅数据库设计基础一文。

本文内容

关于删除数据

Access 提供了几种类型或级别的数据删除。您可以删除记录的单个数据点的数据,可以删除表中的整条记录,还可以删除整个表。

如果要使记录中的一些或全部数据点为空,但仍将该记录本身(行)保留在表中原来的位置,则应删除各个值。删除数据值相对比较简单:您可以选择字段中的部分或全部数据,然后按 Delete。 

当删除整条记录时,您将删除每个字段中的所有数据以及使该记录唯一的键值。此过程将从表中删除整行。您可以手动删除各条记录,或者可以创建一次删除大量记录的删除查询。

如果要删除的记录与数据库中任何其他数据都不相关,则删除过程非常简单。您可以选择一整行,然后按 Delete,也可以创建并运行删除查询。但如果要删除的记录与其他数据相关,并且这些记录位于一对多关系的“一”这一端,则必须执行一些额外步骤,因为默认情况下,Access 不允许删除相关数据。另外请记住,一旦删除了整条记录,将无法撤消该删除操作。所以,在删除数据之前,应始终先备份数据库。 

删除整个表的过程不像删除字段中的数据或删除整条记录那样复杂,但请记住,在删除整个表时,如果错误地删除了某个表,可能会破坏数据库的部分(也可能是全部)功能。另外,已删除的表中的所有数据都会永远地丢失。所以,在删除表之前,应始终先备份数据库。  

最后,如果您了解关系数据库设计基础,则可以在更短的时间内更准确地删除数据。如果您对 Access 或关系数据库缺乏基本的了解,请参阅数据库设计基础

下面各节中的步骤介绍了如何删除单个字段中的数据,如何删除整条记录,以及如何删除整个表。每一节都提供了完成给定任务需要的背景信息。

删除字段中的数据

当您在“数据表”按钮图像 视图中打开表或查询,以及在“窗体”按钮图像 视图和“布局”按钮图像 视图中打开数据输入窗体时,可以删除单个字段中的数据。

从数据表中删除数据

  1. 在导航窗格中,双击要使用的表或查询。这会在数据表视图中打开表或查询。
  2. 选择要删除的数据。

    您可以突出显示部分或全部数据,或只将光标放在字段中。

  3. 如果选择字段中的所有数据,请按 Delete。

    - 或 -

    “开始”选项卡上的“记录”组中,单击“删除”

    Access 功能区图像

    - 或 -

    如果将光标放在字段中,请根据需要按 Delete 或 Backspace。

从窗体中删除数据

  1. 在导航窗格中,双击要使用的窗体。该窗体将在窗体视图中打开。

    - 或 -

    在导航窗格中,选择要使用的窗体,然后在“开始”选项卡上的“视图”组中,单击“视图”,再单击“布局视图”

  2. 选择要删除的数据。

    您可以突出显示部分或全部数据,或只将光标放在字段中。

  3. 如果选择字段中的所有数据,请按 Delete。

    - 或 -

    “开始”选项卡上的“记录”组中,单击“删除”

    Access 功能区图像

    - 或 -

    如果将光标放在字段中,请根据需要按 Delete 或 Backspace。

 注释 

Access 可能会显示一条错误消息,禁止您删除数据。以下几种因素可能会阻止您执行删除操作:

  • 根据设计,无法删除一些类型的查询中的数据  例如,无法编辑交叉表查询返回的数据,无法编辑或删除计算字段 - 使用数据库时公式计算得出的、不驻留在表中的值。 
  • 您没有删除数据的必要权限  请与系统管理员或数据库设计人员联系。
  • 字段不接受空或 Null (空字段:包含 Null 值的字段。空字段与零长度字符串 (" ") 或值为 0 的字段不同。)  如果您具有必要的权限,请在设计视图中打开表,然后将“必填”表属性从“是”更改为“否”
  • 您正尝试删除列表中的信息  在窗体的数据表中,您始终可以找到列表,因为 Access 在列表的一端放置了一个向下箭头,如下所示:空白查阅列表。有关删除列表中的值的信息,请参阅本文的下一节。

 

 

删除列表中的数据

您可以从两种类型的列表中删除数据:值列表和查阅列表。值列表显示一组预定义的值(即您或数据库设计者手动输入的值)。与之相对,查阅列表使用查询从其他表或查询中检索值,然后用那些返回的值来填充列表。 

值列表中的条目与记录中的其他值驻留在同一表中。与之相对,查阅列表中的数据驻留在一个或多个其他表中。要从值列表中删除数据,请打开表,然后编辑条目。

从查阅列表中删除数据需要其他的步骤,且这些步骤会取决于对查阅列表的查询是从表还是从其他查询中获取数据。如果对查阅列表的查询基于表,请标识该表和包含列表中显示的数据的字段。然后打开源表并编辑该字段中的数据。

如果对查阅列表的查询基于其他查询,则必须打开那个第二个查询,找到第二个查询从其中获取数据的源表和字段,然后更改该表中的值。

以下步骤介绍如何从值列表和查阅列表中删除数据。

从值列表中删除数据

  1. 在导航窗格中,右键单击要更改的表,然后单击快捷菜单上的“设计视图”
  2. 在设计网格的上半部,选择包含该值列表的表字段。
  3. 在网格的下半部,单击“查阅”选项卡,然后找到“行来源”属性。

    默认情况下,值列表中的条目括在双引号中,每个条目使用分号分隔:"Excellent";"Fair";"Average";"Poor"

  4. 根据需要,删除列表中的条目。请记住删除括住每个已删除的条目的引号。而且,不要保留前面的分号,不要保留分号对 (;;),如果删除的是列表中的最后一个条目,请删除最后的分号。

     注释   如果删除了值列表中的某个条目,而表中的记录已使用该已删除的条目,则该已删除的条目仍为记录的一部分,直到您更改它。例如,假设您的公司在城市 A 有一个仓库,但后来卖掉了该建筑物。如果您从仓库列表中删除了“城市 A”,您将仍会在表中看到“城市 A”,直到您更改这些值。

从查阅列表中删除数据

  1. 在导航窗格中,右键单击要更改的表,然后单击快捷菜单上的“设计视图”
  2. 在设计网格的上半部分中,选择查阅字段。
  3. 在设计网格的下半部分中,单击“查阅”选项卡,找到“行来源类型”“行来源”属性。

    “行来源类型”属性应显示“表/查询”“行来源”属性必须包含一个引用表或其他查询的查询。

     注释   查阅字段的查询始终以 Select 一词开头。

     

    通常(但不总是),选择查询使用此基本语法:Select [table_or_query_name].[field_name] FROM [table_or_query_name]

    在此例中,查询包含两个子句(Select 和 FROM)。第一个子句引用一个表和该表中的一个字段,而第二个子句只引用该表。要记住的一点是:FROM 子句将始终告诉您源表或查询的名称。尽管 Select 子句总是至少包含一个字段的名称,但它们可能并不总是包含表或查询的名称。但是,所有 FROM 子句必须引用表或查询。
  4. 请执行下列操作之一:
    • 如果查阅字段中的查询引用另一个查询,请单击“生成”按钮(在属性表的“数据”选项卡上,单击 按钮图像),可以在设计视图中打开查询。记下查询设计器上半部分中显示的表的名称,然后继续执行第 4 步。
    • 如果查阅字段中的查询引用某个表,请记下该表的名称,然后继续执行第 4 步。
  5. 在导航窗格中,双击源表以在数据表视图中打开它。
  6. 找到包含查阅列表中使用的数据的字段,然后根据需要编辑该数据。

从数据库中删除不相关的记录

从数据库中删除整条记录时,会删除每个字段中的数据,还会删除键值(使记录保持唯一的值)。如果记录不与任何其他记录相关(也就是说,键值不驻留在数据库中任何其他记录或表中),则可以通过选择该记录,然后按 Delete 来删除该记录。如果要删除大量不相关的记录(超出希望手动删除的数量),则可以使用删除查询来删除这些记录。以下各节中的步骤介绍了如何执行这两种任务。   

手动删除不相关的记录

  1. 在数据表视图中,打开包含要删除的数据的表或查询。
  2. 找到要删除的记录(行),然后单击“全选”按钮(位于记录左端或右端的方块)。可以选择单个行,单击并拖动以选择一组连续的行,还可以按 Ctrl 并单击鼠标按钮以选择多个不连续的行。 

    Access 在整条记录(整行)或选择的记录块的四周放置边框。

  3. 按 Delete。

    - 或 -

    “开始”选项卡上的“记录”组中,单击“删除”

    Access 功能区图像

    - 或 -

    右键单击“全选”按钮,然后单击“删除记录”

    如果无法单击“全选”按钮,请将光标放在记录的某个字段中。然后在“开始”选项卡上的“记录”组中,单击“删除”旁边的向下箭头,再单击“删除记录”

     注释   此时,Access 可能会显示一条错误消息,指出由于该记录与其他数据相关,无法将其删除。如果看到这样的消息,请单击“确定”,然后参阅本文中稍后介绍的从数据库中删除相关记录

  4. Access 提示您确认删除时,单击“是”

使用删除查询删除不相关的记录

使用删除查询删除数据时,对于不相关的记录和相关的记录都执行相同的过程:首先创建选择查询,然后确保查询只返回要删除的记录,最后将选择查询转换为删除查询。您可以在下一节中找到有关如何删除不相关的记录的背景信息和步骤。 

从数据库中删除相关记录

请按照如下常规步骤删除相关记录:

  • 计划删除。确保您具有删除数据所需的权限,确保所有其他用户已关闭使用受影响的表的所有对象,然后备份数据库。
  • 更改删除操作所涉及的表之间的关系。具体地讲,启用“实施参照完整性”“级联删除相关记录”选项。这样才可以级联删除所有受影响的表,并删除所有相关数据。
  • 创建一个选择查询,然后根据需要添加条件,直到查询返回正确的记录集。
  • 将选择查询转换为删除查询,然后使用该查询删除数据。

以下各节介绍了此过程。

计划和准备删除

在从数据库中删除任何记录之前,请执行以下任务。

  • 确保数据库不是只读数据库。若要查看数据库的状态,请在 Microsoft Windows 资源管理器中,右键单击数据库文件(.accdb 或 .mdb 文件),然后在快捷菜单上单击“属性”。在“属性”对话框中,确保清除了“只读”复选框。
  • 验证您是否具有从数据库中删除记录所需的权限。如果不能确定,请与系统管理员或数据库设计人员联系。
  • 与数据库的其他用户联系,确保删除操作不会对他们产生不良影响。
  • 请求数据库的所有用户关闭使用您要删除的数据的所有表、窗体、查询和报表。这有助于避免锁定冲突。

     

     提示   如果有大量用户连接到该数据库,您可能需要关闭该数据库,然后以独占模式将它重新打开。为此,请单击“Microsoft Office 按钮”按钮图像,然后单击“打开”。通过浏览找到并选择数据库,单击“打开”按钮旁边的箭头,然后单击“以独占方式打开”

     

    以独占模式打开文件

  • 编辑或删除记录之前应备份数据库。某些删除操作可以撤消,但制作备份能够保证您始终可以撤消您的更改。
    1. 单击“Microsoft Office 按钮”按钮图像,指向“管理”,然后在“管理此数据库”下单击“备份数据库”
    2. “备份数据库另存为”对话框中,指定备份副本的名称和位置,然后单击“保存”

      Access 将关闭原始文件,创建备份,然后重新打开原始文件。

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

  • 根据需要,确定和查看要从中删除记录的表所涉及的关系。请执行以下步骤:
    1. “数据库工具”选项卡上的“显示/隐藏”组中,单击“关系”

      Access 功能区图像

      “关系”文档选项卡出现,显示数据库中的所有表,以及各个表与其他每个表之间的关系。该选项卡以直线连接各表,借此描述各种关系。

      下图描述了一组典型关系。“关系”文档选项卡使用数字一(“1”)表示“一”端,使用无穷大 () 符号表示“多”端。下图显示了一种典型关系:

      两个表之间的关系

      通常,从关系的“一”端删除记录时,也会从关系的“多”端删除所有相关记录。如果您不希望如此,可以创建没有任何意义的孤立的记录。但是,从关系的“多”端删除记录时,通常不会从“一”端删除记录。

      此外,关系会实施一组称为参照完整性的规则。这组规则确保数据库中的外键包含正确的值。外键是一个列,其值与另一个表的主键列中的值相匹配。

      显示了解参照完整性规则

      • 规则 1:您无法在相关表的外键字段中输入值,除非该值已存在于主表的主键中。但是,您可以在外键字段中输入 Null 值。
      • 规则 2:如果某个记录在相关表中存在匹配的记录,则无法从主表中删除整条记录。

        请记住,您可以通过在主表和副表之间的关系中启用一个属性来绕过此规则。有关如何执行该操作的详细信息,请参阅下一个步骤。

      • 规则 3:如果某个记录具有相关记录,则不能在主表中更改它的主键值。

        但您也可以通过在主表和副表之间的关系中启用一个属性来绕过此规则。有关如何执行该操作的详细信息,请参阅下一个步骤。

      除非您规定了其他规则,否则,每当您在数据库中添加、编辑或删除数据时,Access 都会实施这些规则。当某项操作违反某个规则时,Access 将显示一条消息(如下图中所示),并取消该操作。

      消息:不能删除或更改该记录


       

      执行操作时,请记住,尽管在大多数情况下 Access 会默认启用参照完整性,但数据库必须首先满足以下条件:

      • 要在两个已有数据的表之间添加关系,现有数据必须符合关系规则。例如:
      • 来自于主表的匹配字段必须为主键或具有唯一索引。
      • 主表和相关表中的相关字段必须具有相同的数据类型。

         注释   对于此规则,有两种例外情况。如果数字字段的“FieldSize”属性设置为“长整型”,则自动编号字段可以与数字字段相关。另外,“FieldSize”属性设置为“同步复制 ID”的自动编号字段可以与“FieldSize”属性设置为“同步复制 ID”的数字字段相关。

      • 这两个表都属于同一个 Access 数据库。

         注释   如果两个表相互链接,则它们必须都为 Access 格式。而且,您必须打开包含链接表的数据库,并启用参照完整性。您不能对其他格式的数据库中的链接表(例如 Microsoft Office Excel 2007 工作簿)实施参照完整性规则。有关实施参照完整性的信息,请参阅下一节中的步骤。

    2. 记下关系每一端的表字段的名称。
    3. 打开每一个表,并查看每个字段中的数据,验证字段中是否确实包含要删除的数据。
    4. 保持“关系”窗口处于打开状态,然后继续执行下一节中的步骤。

编辑关系

  1. 如果“关系”窗口还没有打开,请将其打开。

    “数据库工具”选项卡上的“显示/隐藏”组中,单击“关系”

    Access 功能区图像

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

    - 或 -

    “设计”选项卡上的“工具”组中,单击“编辑关系”

    将显示“编辑关系”对话框。

  3. 确保“实施参照完整性”复选框已选中。
  4. 选择“级联删除相关记录”复选框。

     注释   在下一次禁用此属性之前,如果从关系的“一”端删除记录,则会从关系的“多”端删除所有相关记录。

  5. 单击“确定”,关闭“关系”窗口,然后继续执行下一组步骤。

创建选择查询

  1. “创建”选项卡上的“其他”组中,单击“查询设计”

    Access 功能区图像

    查询设计器打开,显示“设计”选项卡,并显示“显示表”对话框。

  2. 选择处于关系的“一”端的表,单击“添加”,然后单击“关闭”

    该表在查询设计网格的上半部显示为一个窗口。窗口中列出了表中的所有字段。下图显示设计器中一个典型的表。

    查询设计器中的表

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

    添加所有表字段可以让删除查询从表中删除所有记录(行)。

  4. 添加允许您输入条件的表字段(可选)。

    例如,假设某个客户停业了,您需要删除该客户的所有未结算的订单。若要仅找出这些记录,可以向设计网格中添加“客户 ID”和“订购日期”字段。

  5. 如果您执行了上一个步骤,请在设计器网格的“条件”行中输入您的条件。

    您可以使用条件仅返回那些要删除的记录。否则,删除查询将删除表中的所有记录。让我们来继续完成上一步的示例,输入停业的客户的 ID 号,以及该客户的订单失效日期。

    有关使用条件的详细信息,请参阅本文后面的查询条件示例

  6. 如果您执行了上述步骤,则清除每个条件字段的“显示”复选框。
  7. “设计”选项卡上的“结果”组中,单击“运行”

    验证查询是否返回要删除的记录。

  8. 将查询保持打开状态,然后继续执行下面的步骤。

将选择查询转换为删除查询并删除数据

  1. 单击“设计视图”,从数据表切换到查询设计器。
  2. “设计”选项卡上的“查询类型”组中,单击“删除”

    Access 将选择查询更改为删除查询,在设计网格的下半部隐藏“显示”行,并添加“删除”行。

    请确保所有字段(“*”)列中的“删除”行显示“From”“Where”一词应显示在所有条件列中。

  3. 确认您要删除该数据,然后单击“运行”按钮图像

    Access 将提示您确认删除。

    单击“是”删除数据。

从数据库中删除表

请记住,如果删除数据库表,将无法撤消该删除操作,因此在继续执行删除操作之前,应备份数据库。有关备份数据库的信息,请参阅本文前面的编辑或删除记录之前备份数据库一节。

  1. 如果您在任何视图(如设计视图或数据表视图)中打开了该表,请将其关闭。
  2. 在导航窗格中,右键单击该表,然后单击快捷菜单上的“删除”

    Access 将要求您确认删除。

    单击“是”

    如果此表与一个或更多其他表相关,Access 将会询问是否要删除这些关系。

  3. 单击“是”

    Access 将删除所有关系,然后删除该表。

选择查询条件示例

下表为各类条件给出了一些示例,您可以在选择查询中使用这些条件来减少查询返回的数据量。

条件 效果
> 234 返回所有大于 234 的数字。若要查找所有小于 234 的数字,请使用 < 234。
>= "Callahan" 返回从 Callahan 直至字母表末尾的所有记录
Between #2/2/2006# And #12/1/2006# 返回 2006 年 2 月 2 日到 2006 年 12 月 1 日之间的日期 (ANSI-89)。如果数据库使用的是 ANSI-92 通配符,则使用单引号 (') 替代井号。例如:Between '2/2/2006' And '12/1/2006'
Not "Germany" 查找字段内容与“德国”不完全相同的所有记录。该条件将返回除了包含“德国”之外还包含其他字符的记录,如“德国(欧元)”或“欧洲(德国)”。
Not "T*" 查找所有记录,以 T 开头的记录除外。如果数据库使用的是 ANSI-92 通配符字符集,则使用百分号 (%) 替代星号 (*)。
Not "*t" 查找不以 t 结尾的所有记录。如果数据库使用的是 ANSI-92 通配符字符集,则使用百分号 (%) 替代星号。
In(Canada,UK) 在列表中,查找包含“加拿大”或“英国”的所有记录。
Like "[A-D]*" 在文本字段中,查找所有以字母 A 到 D 开头的记录。如果数据库使用的是 ANSI-92 通配符字符集,则使用百分号 (%) 替代星号 (*)。
Like "*ar*" 查找包含字母序列“ar”的所有记录。如果数据库使用的是 ANSI-92 通配符字符集,则使用百分号 (%) 替代星号 (*)。
Like "Maison Dewe?" 查找满足以下条件的所有记录:以“Maison”开头并包含另一个含有 5 个字母的字符串,且该字符串的前 4 字母是“Dewe”而最后的字母未知。如果数据库使用的是 ANSI-92 通配符字符集,则使用下划线 (_) 替代问号。
#2/2/2006# 查找 2006 年 2 月 2 日的所有记录。如果数据库使用的是 ANSI-92 通配符字符集,则用单引号(而不是井号)将日期括起来 ('2/2/2006')。
< Date() - 30 返回 30 天以前的所有日期。
Date() 返回包含当天日期的所有记录。
Between Date() And DateAdd("M", 3, Date()) 返回从今天起三个月内的所有记录。
Is Null 返回包含 Null(空或未定义)值的所有记录。
Is Not Null 返回包含任何值(不为 Null)的所有记录。
"" 返回包含零长度字符串的所有记录。当您需要向必填字段添加值,但还不知道实际值是什么时,则可以使用零长度字符串。例如,某个字段可能需要传真号码,但某些客户可能没有传真机。在这种情况下,您可以输入一对中间不带空格的双引号 ("") 来代替数字。

相关热词搜索:

上一篇:更新Access2007数据库中的数据
下一篇:向Access2007数据库中添加一个或多个记录

分享到: 收藏
频道总排行
频道本月排行