使用查詢從資料庫刪除一筆或多筆記錄

重要:  本文係由機器翻譯而成,請參閱免責聲明。本文的英文版本請見這裡,以供參考。

本文說明如何使用更新和刪除查詢從 Microsoft Office Access 2007 資料庫刪除資料。使用更新查詢可從資料庫中的記錄刪除個別的欄位,而當您需要從資料庫移除整筆記錄 (包括使該筆記錄具有唯一性的索引鍵值) 時,就需要使用刪除查詢。在您進行作業時,請注意,Access 還提供數種手動方式可用來刪除部分或整筆記錄。

如需有關如何手動刪除記錄的詳細資訊,請參閱刪除一或多個從資料庫的記錄

本文內容

瞭解使用查詢刪除資料

規劃刪除

停止停用模式而不要封鎖查詢

刪除部分的記錄 (一或多個欄位)

刪除整筆記錄

選取查詢的準則範例

了解如何使用查詢刪除資料

您可以使用兩種查詢類型從 Access 資料庫刪除資料,而要使用哪一種查詢則是根據需要執行的刪除類型而定。

  • 當您需要從一個或多個資料表中的記錄刪除個別欄位時,可以使用更新查詢,將現有的值變更為 Null 值 (也就是沒有資料) 或零長度的字串 (中間沒有空格的一組雙引號)。

    您可以使用更新查詢刪除個別欄位中的資料,因為根據預設,刪除查詢只會移除整列。使用更新查詢「刪除」資料的程序大致依照下列步驟:建立選取查詢,並且確保它只會傳回您要刪除的資料。接著再使用 NULL 或零長度字串做為更新值,然後再執行查詢以更新現有的資料。

  • 當您需要移除整筆記錄 (列) 時,要使用刪除查詢。

    根據預設,刪除查詢會移除每個欄位中的所有資料,包括使該筆記錄具有唯一性的索引鍵值。此查詢在執行時,一定會將整列從資料表中移除。此程序大致依照下列步驟:建立選取查詢,並且確保它會傳回您要刪除的記錄。接著再將查詢轉換為刪除查詢,並加以執行以將資料移除。

當您繼續,請記住,是否您想要刪除的記錄位於 「 一 」 端的一對多關聯,請您必須先變更關聯的屬性之前執行查詢。刪除相關的資料的準備工作,本文稍後,說明如何執行的工作。因為根據預設,Access 會讓您無法刪除的項目對多關聯 「 一 」 端的資料,您必須進行其他變更。

如果您需要一個對多關聯性的相關詳細資訊,請參閱資料庫設計的基本概念建立、 編輯或刪除關聯性的文章。

此外,請記住,更新或刪除部分或全部的一筆記錄後,您無法復原您的變更,,因此您應該一律備份您的資料執行刪除查詢之前。本文稍後,如需詳細資訊,請參閱備份您的資料庫

下列章節中的程序說明如何建立更新查詢以從個別的欄位中移除資料,以及如何建立刪除查詢以刪除整筆記錄。

附註: 一般而言,您只有在需要快速變更或移除大量資料時,才需要使用更新和刪除查詢。如果想要移除少量的記錄 (您認為適合手動刪除的資料量) 可以用 [資料工作表檢視] 開啟資料表、選取您要刪除的欄位或列,然後按 DELETE。

如需刪除資料的其他方法的詳細資訊,請參閱刪除資料庫中的一個或多筆記錄的文件。

頁面頂端

規劃刪除作業。

使用查詢刪除記錄的程序大致依照下列步驟:

  • 規劃刪除作業。請確定您具有刪除資料的必要權限,並確保所有其他的使用者都已經關閉使用受影響之資料表的任何物件,然後再備份資料庫。

  • 確定資料庫存放在信任的位置,或數位簽章。如果您沒有上述情況,您可以選擇信任資料庫,在目前的工作階段。請記住,根據預設,Access 會封鎖所有巨集指令查詢 (刪除、 更新及產生資料表查詢) 除非您先信任資料庫。信任資料庫的相關資訊,請參閱本文稍後的而不要封鎖查詢停止停用模式

  • 如果想要從一個以上的資料表刪除資料,而這些資料表都彼此相關,則要為每個關聯啟用 [參考完整性] 和 [串聯刪除關聯記錄] 選項。這樣您的查詢就可以從關聯的「一」端和「多」端之資料表刪除資料。

  • 建立選取查詢,然後依需要新增準則,直到查詢傳回正確的記錄集。

  • 如果想要從資料表刪除個別的欄位,請將選取查詢轉換為更新查詢,並輸入 NULL 或零長度字串 ("") 當做更新準則,然後再執行查詢。

  • 如果想要刪除整筆記錄,請將選取查詢轉換為刪除查詢,然後再執行查詢。

一般準備作業

刪除資料庫中的部分或完整記錄之前,請先執行下列工作:

  • 確認資料庫並非唯讀。若要進行這項作業,請在 [Windows 檔案總管] 中以滑鼠右鍵按一下該資料庫檔案 (.accdb 或 .mdb 檔),然後按一下快顯功能表上的 [內容]。確認已清除 [內容] 對話方塊中的 [唯讀] 核取方塊。

  • 確認您擁有刪除資料庫中記錄的必要權限。如果您不確定,請連絡系統管理員或資料庫設計人員。

  • 向資料庫的其他使用者進行確認,確保刪除動作不會對他們造成不利的影響。

  • 要求資料庫的所有使用者關閉使用想要刪除之資料的所有資料表、表單、查詢和報表。如此可避免發生鎖定衝突。

    提示: 如果有很多使用者連線至該資料庫,可能必須關閉資料庫,再以獨佔模式重新開啟。若要執行這項作業:

    1. 按一下 [Microsoft Office 按鈕] Office 按鈕影像 ,然後按一下 [開啟]。

    2. 瀏覽至資料庫並加以選取,再按一下 [開啟] 按鈕旁的箭號,然後按一下 [獨佔式開啟]。

      在獨佔模式中開啟檔案

  • 編輯或刪除記錄前,請先備份資料庫。雖然某些刪除操作可以還原,但是備份確保您一定可以還原變更。

    備份資料庫

    1. 按一下 [Microsoft Office 按鈕] Office 按鈕影像 ,指向 [管理],然後在 [管理此資料庫] 底下,按一下 [備份資料庫]

    2. [另存新檔] 對話方塊中,指定備份的名稱和位置,然後按一下 [儲存]

      Access 會關閉原始檔案、建立備份,然後重新開啟原始檔案。

      若要回復備份,請關閉並重新命名原始檔案,讓備份使用原始版本的名稱。指定原始版本的名稱給備份,然後在 Access 中開啟重新命名後的備份。

刪除相關資料的準備

如果需要刪除相關資料表中的資料,請記住下列規則:如果資料位於一對多關聯的「多」端,則不需變更關聯即可刪除資料。不過,如果資料是位於一對多關聯的「一」端,則您必須先變更關聯,否則 Acess 會封鎖刪除作業。

刪除相關資料的程序大致依照下列步驟:

  • 判斷哪些記錄位於關聯的「一」端,哪些記錄位於「多」端。

  • 如果需要刪除關聯「一」端上的記錄以及「多」端上的相關記錄,可以啟用稱為「參考完整性」的一組規則,而且可以啟用串接刪除。本節中的步驟說明「參考完整性」以及如何執行上述兩項工作。

  • 如果只需要刪除關聯「一」端上的記錄,則要先刪除該關聯,然後再刪除資料。

    -或-

    如果只需要移除關聯「多」端上的資料,則可以建立並執行刪除查詢,而不必變更關聯。

下列章節中的步驟說明如何準備相關資料的刪除作業。

判斷哪些記錄位於關聯的「一」端,哪些記錄又位於關聯的「多」端。

  1. 在 [資料庫工具] 索引標籤上,按一下 [顯示/隱藏] 群組中的 [資料庫關聯圖]。

    [資料庫關聯圖] 索引標籤隨即出現,並顯示資料庫中的所有資料表,以及各資料表以及每隔一個資料表之間的關聯。每個關聯都會以在欄位之間連接資料表的線條表示。

    下圖表示典型的關聯。大部分 (並非全部) 的關聯都是「一」對「多」的關係。關聯圖表會以數字 1 表示「一」的一端,並以無限大 () 符號表示「多」的一端。

    兩個資料表之間的關聯

    一般而言,刪除關聯性「一」端的記錄時,會同時刪除關聯性「多」端的所有相關記錄。不過,刪除關聯性「多」端的記錄時,通常不會刪除「一」端的記錄。

    同樣地,根據預設,Access 會強制使用一組稱為「參考完整性」的規則。這些規則能確保資料庫中的外部索引鍵包含正確的值。外部索引鍵是一個欄,其值與另一個資料表的主索引鍵資料行中的值相符。

    瞭解參考完整性規則

    • 規則 1:您無法在相關資料表的外部索引鍵欄位中輸入值,除非該值已存在主要資料表的主索引鍵中。不過您可以在外部索引鍵欄位中輸入 Null 值。

    • 規則 2:如果相關資料表中有符合的記錄,則無法從主要資料表中刪除整筆記錄。

      請記住,您可以解決此規則啟用主要和次要資料表之間的關聯的屬性。如需有關如何執行此作業的詳細資訊,請參閱編輯關聯的下一個程序。

    • 規則 3:如果該記錄與其他記錄相關聯,則無法變更主要資料表中的主索引鍵值。

      不過,您可以啟用主要與次要資料表之間關聯性的屬性,藉此處理這項規則。

      除非另行規定,否則每次您新增、編輯或刪除資料庫中的資料時,Access 都會強制執行這些規則。當動作違反規則時,Access 會顯示如下圖中出現的訊息,並取消這個動作。

      訊息:無法刪除或變更此記錄

    當您執行操作時務必記得,雖然大部分情況下 Access 會根據預設啟用參考完整性,但是資料庫仍須先符合下列條件:

    • 主要資料表中符合的欄位必須是主索引鍵或擁有唯一索引。

    • 主要及關聯資料表中的相關欄位必須使用相同的資料類型。

      附註: Access 為這項規則提供兩項例外:如果 [數字] 欄位的 [欄位大小] 屬性設定為 [長整數],則 [自動編號] 欄位可以與該 [數字] 欄位相關聯。同樣地,如果 [自動編號] 欄位的 [欄位大小] 屬性設定為 [複製識別碼],則可以與 [欄位大小] 屬性設定為 [複製識別碼] 的 [數字] 欄位相關聯。

    • 這兩個資料表屬於同一個 Access 資料庫。

      附註: 如果已連結這兩個資料表,則這兩個資料表必須為 Access 格式。同樣地,您必須開啟包含連結資料表的資料庫,並啟用參考完整性。不過,如果連結的資料表來自其他格式的資料庫,例如 Microsoft Office Excel 2007 活頁簿,則無法對其強制執行參考完整性規則。如需啟用參考完整性的詳細資訊,請參閱下一節中的步驟。

  2. 記下關聯性中每一端的資料表欄位名稱。

  3. 開啟每一個資料表並檢視每一個欄位中的資料,確認這些欄位確實包含要刪除的資料。

  4. 讓 [資料庫關聯圖] 窗格維持開啟狀態,然後繼續進行下一節中的步驟。

編輯關聯

請只有在您需要刪除關聯的「一」和「多」端的資料時,才遵照這些步驟進行。

  1. 如果您尚未開啟 [資料庫關聯圖] 窗格,請先開啟。

    在 [資料庫工具] 索引標籤上,按一下 [顯示/隱藏] 群組中的 [資料庫關聯圖]。

  2. 以滑鼠右鍵按一下要執行刪除操作的資料表之間的關聯 (線條),然後按一下快顯功能表上的 [編輯關聯]。

    [編輯關聯] 對話方塊隨即出現。

  3. 請確認已選取 [強迫參考完整性] 核取方塊。

  4. 選取 [串聯刪除關聯記錄] 核取方塊。

    附註: 再次停用這個屬性之前,刪除關聯性「一」端的記錄將會刪除關聯性「多」端的所有相關記錄。

  5. 按一下 [確定],關閉 [資料庫關聯圖] 窗格,然後繼續進行下一組步驟。

刪除關聯

  1. 如果您尚未開啟 [資料庫關聯圖] 窗格,請先開啟。

    在 [資料庫工具] 索引標籤上,按一下 [顯示/隱藏] 群組中的 [資料庫關聯圖]。

  2. 請注意關聯中涉及的欄位,如此才能在刪除資料之後還原關聯。

  3. 以滑鼠右鍵按一下連接刪除作業所涉及之資料表關聯 (線條),然後按一下快顯功能表上的 [刪除]。

    -或-

    請選取關聯性並按 DELETE。

附註: 若要還原關聯,請遵照前述步驟開啟 [資料庫關聯圖] 窗格,然後將主索引鍵欄位從「一」端的資料表拖放到「多」端資料表的外部索引鍵欄位。[編輯關聯] 對話方塊隨即出現。如果舊關聯會強制執行參考完整性,請選取 [強迫參考完整性],然後按一下 [建立]。否則只要按一下 [建立] 即可。

頁面頂端

停止停用模式而不要封鎖查詢

根據預設,如果開啟您尚未選擇信任或不位於受信任位置的資料庫,Access 就會封鎖所有動作查詢,讓它們無法執行。

如果您嘗試執行某個動作查詢,但好像什麼動作都沒有發生,請確認 Access 狀態列是否出現下列訊息:

巨集指令或事件已經被停用模式封鎖。

出現該訊息時,請執行下列步驟:

啟用封鎖的內容

  • 按一下 [訊息列] 上的 [選項]

    [Microsoft Office 安全性選項] 對話方塊隨即出現。

  • 按一下 [啟用這個內容],然後按一下 [確定]。

  • 再次執行查詢。

如果看不到訊息列

  • 按一下 [資料庫工具] 索引標籤,然後按一下 [顯示/隱藏] 群組中的 [訊息列]

如需停用模式與 Access 安全性的詳細資訊,請參閱安全 Access 2007 資料庫的文件。

刪除部分記錄 (一個或多個欄位)

本節中的步驟會說明如何使用更新查詢來刪除部分的記錄 (個別欄位) 資料表的上一個對多關聯 「 多 」 端。您也可以遵循下列步驟,從其他資料與不相關的資料表刪除資料。請記住,執行更新查詢來刪除資料變更現有的值為 NULL,或者零長度字串 (成對的雙引號中之間沒有空格),根據您指定的準則。如需有關使用更新查詢的詳細資訊,請參閱建立與執行更新查詢。

建立選取查詢

  1. 在 [建立] 索引標籤上,按一下 [其他] 群組中的 [查詢設計]。

    查詢設計工具會開啟,[設計] 索引標籤及 [顯示資料表] 對話方塊隨即出現。

  2. 選取包含您要刪除的資料之資料表,按一下 [新增],再按一下 [關閉]。

    該資料表會在查詢設計格線的上方區段中以視窗形式出現。該視窗會列出資料表的所有欄位。此圖顯示設計工具中的典型資料表。

    查詢設計工具中的資料表

  3. 在設計工具的 [欄位] 列上新增要設定為 NULL 的欄位。您可以在每個欄位上按兩下,或拖放每個欄位。

  4. 您可以選擇性地在設計工具的 [準則] 列中,輸入一個或多個欄位的準則。

    您可以使用準則來傳回您要刪除的記錄。否則,更新查詢,就會設定為 NULL 在每一個您在查詢中的欄位中的每一筆記錄。如需有關如何使用準則的詳細資訊,請參閱本文稍後的選取查詢的準則範例

  5. 在 [設計] 索引標籤上,按一下 [結果] 群組中的 [執行]。

    確認查詢傳回您要設定為 NULL 或零長度字串的記錄。如有需要,請重複步驟 3 到 5,並變更您的欄位或準則,直到查詢只傳回您要變更的資料。

  6. 保持查詢開啟,然後繼續進行下一個步驟。

將選取查詢轉換為更新查詢

  1. 按一下 [設計檢視],從資料工作表切換至查詢設計工具。

  2. [設計] 索引標籤上,按一下 [查詢類型] 群組中的 [更新]

    Access 會將選取查詢變更為更新查詢,隱藏設計格線下半部的 [顯示] 列,然後加入 [更新至] 列。

    在 [更新至] 列的每一個欄位,輸入 [空值或零長度字串,一對雙引號中間沒有空格 (」 「)。

  3. 按一下 [執行 按鈕影像 ]。

    Access 會提示您確認變更。

    請務必確定您要變更這些值,然後按一下 [是] 以變更資料。

頁面頂端

刪除整筆記錄

本節中的步驟說明如何使用刪除查詢從資料表刪除整筆記錄。

建立選取查詢

  1. 在 [建立] 索引標籤上,按一下 [其他] 群組中的 [查詢設計]。

    查詢設計工具會開啟,[設計] 索引標籤及 [顯示資料表] 對話方塊隨即出現。

  2. 選取關聯性「一」端的資料表,然後按一下 [新增],再按一下 [關閉]。

    該資料表會在查詢設計格線的上方區段中以視窗形式出現。該視窗會列出資料表的所有欄位。此圖顯示設計工具中的典型資料表。

    查詢設計工具中的資料表

  3. 按兩下星號 (*),將資料表中所有的欄位加入至設計格線。

    加入所有資料表欄位會使刪除查詢移除資料表的整筆記錄 (資料列)。

  4. 您可以選擇性加入可輸入準則的資料表欄位。

    例如,假設您不再與某位客戶往來,而需移除該客戶所有待執行的訂單。若只要尋找這些記錄,可將 [客戶編號] 和 [訂單日期] 欄位加入設計格線中。

  5. 如果您已經按照前述步驟執行,則可以在設計工具格線的 [準則] 列中輸入準則。

    使用準則只會傳回要刪除的資料。刪除查詢則會移除資料表中的每一項記錄。若要繼續前述步驟的範例,請輸入不再往來客戶的編號,以及該客戶訂單開始失效的日期。

    如需有關如何使用準則的詳細資訊,請參閱本文稍後的選取查詢的準則範例

  6. 如果您已經按照前述步驟執行,接著請清除每一個準則欄位中的 [顯示] 核取方塊。

  7. 在 [設計] 索引標籤上,按一下 [結果] 群組中的 [執行]。

    確認查詢傳回您要刪除的記錄。

  8. 保持查詢開啟,然後繼續進行下一個步驟。

將選取查詢轉換成刪除查詢並刪除資料

  1. 按一下 [設計檢視],從資料工作表切換至查詢設計工具。

  2. [設計] 索引標籤上,按一下 [查詢類型] 群組中的 [刪除]

    Access 會將選取查詢變更為刪除查詢,隱藏設計格線下半部的 [顯示] 資料列,然後加入 [刪除] 資料列。

    確認 [*] (所有欄位) 欄中的 [刪除] 列顯示的是 [從]。[條件] 這個詞應該出現在所有準則欄中。

  3. 請確定您想要刪除的資料,然後按一下 [執行 按鈕影像

    Access 會出現提示確認是否刪除。

    按一下 [是],刪除資料。

頁面頂端

選取查詢的準則範例

下表列出一些可用於選取查詢的準則範例,這些準則可以確保只會刪除正確的資料。您可以修改這些範例套用在您自己的資料。其中有些範例會使用萬用字元。

如需有關如何使用萬用字元的詳細資訊,請參閱Access 萬用字元參照

準則

效果

> 234

會傳回所有大於 234 的數字。若要尋找所有小於 234 的數字,請使用 < 234。

>= "Cajhen"

會傳回從 Cajhen 到字母表最後一個字母之間的所有記錄

Between #2/2/2007# And #12/1/2007#

會傳回從 2007 年 2 月 2 日到 2007 年 12 月 1 日之間的日期 (ANSI-89)。如果資料庫使用的是 ANSI-92 萬用字元,請使用單引號 (') 代替井字號 (#)。例如:Between '2/2/2007' And '12/1/2007'。

Not "Germany"

尋找欄位內容不完全等於 "Germany" 的所有記錄。這個準則將會傳回包含 "Germany" 以及其他字元的記錄,例如 "Germany (euro)" 或 "Europe (Germany)"。

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/2007#

會尋找 2007 年 2 月 2 日的所有記錄。如果資料庫使用的是 ANSI-92 萬用字元集,請使用單引號代替井字號括住日期 ('2/2/2007')。

< Date() - 30

會使用 Date 函數,傳回期限超過 30 天的所有日期。

Date()

會使用 Date 函數,傳回包含今天日期的所有記錄。

Between Date() And DateAdd("M", 3, Date())

使用 DateDateAdd 函數,傳回在今天日期和今天日期後 3 個月之間的所有記錄。

Is Null

會傳回包含 Null (空白或未定義) 值的所有記錄。

Is Not Null

會傳回包含任何值 (除了 Null 以外) 的所有記錄。

""

會傳回包含零長度字串的所有記錄。當您需要在必要欄位中輸入某個值,但是還不知道實際的值為何時,就可以使用零長度字串。例如,某個欄位可能需要輸入傳真號碼,但是有些客戶可能沒有傳真機。在這種情況下,您可以輸入一對雙引號,而且引號之間不包含任何空格 (""),而不要輸入數字。

頁面頂端

附註: 機器翻譯免責聲明︰本文係以電腦系統翻譯而成,未經人為介入。Microsoft 提供此等機器翻譯旨在協助非英語系使用者輕鬆閱讀 Microsoft 產品、服務及技術相關內容。基於本文乃由機器翻譯而成,因此文中可能出現詞辭、語法、文法上之錯誤。

擴展您的技能
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×