建立並執行刪除查詢

套用到
Microsoft 365 Access Access 2024 Access 2021 Access 2019 Access 2016

當您想要快速刪除大量資料,或定期刪除 Access 桌面資料庫中的一組資料時,刪除或更新查詢可能會很有用,因為查詢可以指定快速尋找和刪除資料的準則。 使用查詢也可以節省時間,因為您可以重複使用已儲存的查詢。

注意

在您刪除任何資料,或執行刪除查詢之前,請確認您已備份 Access 桌面資料庫。

如果您只想刪除幾筆記錄,則不需要查詢。 只要在 [資料工作表檢視] 中開啟資料表,選取要刪除的欄位 (欄) 或記錄 (列) ,然後按 DELETE。

重要

本文中的資訊專用於桌面資料庫。 您無法在 Access Web 應用程式中使用刪除或更新查詢。

本文內容

選擇查詢類型

您可以使用更新查詢或刪除查詢來刪除資料庫中的資料。 根據下表中的詳細資料選取查詢:

查詢類型 使用時機 結果​​
使用刪除查詢 同時從資料表或兩個相關資料表中移除) 整筆記錄 (資料列。
注意: 如果記錄位於一對多關聯性的「一」端,您可能需要先變更關聯,才能執行刪除查詢。 請參閱從 相關資料表刪除資料一節。
刪除查詢會移除每個欄位中的所有資料,包括讓記錄唯一的索引鍵值
使用更新查詢 刪除資料表中的個別欄位值。 透過將現有值更新為 Null 值 (,也就是沒有資料) ,或 (一對雙引號之間沒有空格的零長度字串,) ,以更輕鬆地刪除值。

頁面頂端

使用查詢刪除任何資料之前要確認的事項

  • 請確定該檔案不是唯讀檔案:

    1. 以滑鼠右鍵按一下 [ 開始] ,然後按一下 [ 開啟 Windows 檔案總管]。
    2. 以滑鼠右鍵按一下資料庫檔案,然後按一下 [內容]。
    3. 查看是否選取 唯讀 屬性。
  • 確認您擁有從資料庫中刪除記錄的必要權限。 如果您不確定,請連絡您的系統管理員或資料庫設計者。

  • 請確定您已啟用資料庫中的內容。 根據預設,除非您先信任該資料庫,否則 Access 會封鎖所有巨集指令查詢 (刪除、更新和產生資料表查詢) 。 如需信任資料庫的詳細資訊,請參閱 停止停用模式封鎖查詢一節。

  • 要求資料庫的其他使用者關閉使用您要刪除之資料的所有資料表、表單、查詢和報表。 這有助於避免鎖定違規。

  • 在編輯或刪除記錄之前,最好先 製作資料庫的備份副本 ,以防您想要恢復變更。

秘訣

如果有大量使用者連線到資料庫,您可能需要關閉資料庫,然後以 獨佔 模式重新開啟。

在獨佔模式中開啟資料庫

  1. 按一下 [檔案 ] 索引標籤 >[開啟]。
  2. 瀏覽至並指向以選取資料庫,按一下 [開啟] 按鈕旁的箭號,然後按一下 [開啟獨佔]。
    在獨佔模式中開啟檔案

備份資料庫

  1. 按一下 [檔案 ] 索引標籤,指向 [另存新檔]。
  2. 按一下 [資料庫另存新檔], 按一下 [ 備份資料庫]。 Access 會關閉原始檔案、建立備份複本,然後重新開啟原始檔案。
  3. 按一下 [另存新檔] ,指定備份副本的名稱和位置,然後按一下 [儲存]。

注意

如果您使用的是唯讀資料庫或在舊版 Access 中建立的資料庫,您可能會收到無法建立資料庫備份的訊息。

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

使用刪除查詢

若要建立刪除查詢,請按一下 建立 索引標籤,在 查詢 群組中,按一下 查詢設計。 按兩下要從中刪除記錄的每個資料表,然後按一下 [關閉]。

資料表會顯示為位於查詢設計格線上方區段的視窗。 從欄位清單中,按兩下星號 (*) ,將資料表中的所有欄位新增至設計格線。

在刪除查詢中使用特定準則

重要

使用準則只傳回要刪除的記錄。 否則,刪除查詢會移除資料表中的每筆記錄。

按兩下您要指定做為刪除準則的欄位,在查詢設計工具的 [準則 ] 列中輸入其中一個準則,然後清除每個準則欄位的 [ 顯示 ] 核取方塊。

可能想要使用此選項的時機範例: 假設您想要移除客戶的所有擱置訂單。 若要只尋找這些記錄,您需要將 [客戶識別碼] 和 [訂單日期] 欄位新增至查詢設計格線,然後輸入客戶的識別碼號碼,以及該客戶的訂單失效的日期。

  1. 在 [ 設計 ] 索引標籤上,按一下 [檢視>資料工作表檢視]。
  2. 確認查詢會傳回您想要刪除的記錄,然後按 CTRL+S 儲存查詢。
  3. 若要執行查詢,請按兩下 [瀏覽窗格] 中的查詢。

頁面頂端

使用更新查詢

注意

您無法在 Access Web 應用程式中使用更新查詢選項。

本節說明如何使用更新查詢來刪除資料表中的個別欄位。 請記住,執行更新查詢以刪除資料會根據您指定的準則,將現有的值變更為 NULL 或零長度字串, (一對雙引號,兩) 之間沒有空格。

  1. 按一下 建立 索引標籤,然後在 查詢 群組中,按一下 查詢設計

  2. 選取含有您要刪除之資料的資料表, (如果該資料表相關,請選取關聯) 「一」側的資料表,按一下 [新增],然後按一下 [ 關閉]。
    資料表會顯示為位於查詢設計格線上方區段的視窗。 視窗會列出所選資料表中的所有欄位。

  3. 按兩下星號 (*) ,將資料表中的所有欄位新增至設計格線。 新增所有資料表欄位可讓刪除查詢從資料表中移除整筆記錄 () 的資料列。
    您可以選擇性地在設計工具的 [準則 ] 列中輸入一或多個欄位的準則,然後清除每個準則欄位的 [ 顯示 ] 核取方塊。 如需使用準則的詳細資訊,請參閱 選取查詢的範例準則 表格。

    注意

    您可以使用準則只傳回要變更的記錄。 否則,更新查詢會將查詢中每個欄位中的每筆記錄設為 NULL。

  4. 在 [設計] 索引標籤的 [結果] 群組中,按一下 [檢視],再按一下 [資料工作表檢視]

  5. 確認查詢會傳回您想要設為 NULL 的記錄,或 (一對雙引號之間沒有空格的零長度字串, (“”) 。

  6. 視需要重複步驟 3 到 5 並變更欄位或準則,直到查詢只傳回您要刪除的資料為止,然後按 CTRL+S 儲存查詢。

  7. 若要執行查詢,請按兩下 [瀏覽窗格] 中的查詢。

頁面頂端

其他資訊

如果您想要從數個相關資料表中刪除資料,您必須為每個關聯啟用 [ 參考完整性 ] 和 [串聯刪除關聯記錄 ] 選項。 這可讓您的查詢從關聯的「一端」和「多端」資料表中刪除資料。 準備刪除的相關資料需要驗證下列項目:

  • 判斷哪些記錄位於關係的「一」端,而哪些記錄位於「多」端。
  • 如果您需要刪除關聯中「一」端的記錄,以及「多」端的相關記錄,您可以啟用一組稱為「參考完整性」的規則,並啟用串聯刪除。 本節中的步驟說明參考完整性,以及如何執行這兩項工作。
  • 如果您只需要刪除關聯「一」端的記錄,請先刪除該關聯,然後再刪除資料。

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

若要找出哪些記錄位於關聯的「一」端和「多端」,請在 [ 資料庫工具 ] 索引標籤的 [資料庫 關聯圖] 群組中按一下 [ 關聯]。 [ 資料庫關聯 圖] 索引標籤會顯示資料庫中的資料表和關聯。 每個關聯都描繪成一條連接欄位之間資料表的線條。

下圖顯示一般關聯性。 資料庫中大部分(如果不是全部)關聯都有「一」端和「多」端。 關聯性圖表表示含有數字 1 (1) 的「一」邊,以及含有無窮大 () 符號的「多」邊。

兩個資料表之間的關聯

當您刪除關聯「一」端的記錄時,也會刪除關聯「多」端的所有相關記錄。 不過,當您刪除關聯中「多端」的記錄時,通常不會刪除「一」端的記錄。

此外,Access 會自動強制執行一組稱為參考完整性的規則。 這些規則可確保資料庫中的外部索引鍵包含正確的值。 外部索引鍵是值符合其他資料表主索引鍵欄中的值的欄位。

編輯關聯

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

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

  2. 以滑鼠右鍵按一下連接刪除作業中涉及之資料表) 線 (關聯,然後按一下捷徑功能表上的 [ 編輯關聯 ]。

  3. [編輯關聯性 ] 對話方塊中,確保已選取 [強制參考完整性 ] 核取方塊。

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

    注意

    在您再次停用此屬性之前,刪除關聯「一」端的記錄將會刪除關聯「多」端的所有相關記錄。

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

刪除關聯

  1. 如果您尚未這麼做,請開啟 [資料庫關聯圖 ] 窗格。
  2. 在 [資料庫工具] 索引標籤上的 [資料庫關聯圖] 群組中,按一下 [資料庫關聯圖]
    記下關聯中涉及的欄位,以便在刪除資料後還原關聯。
  3. 以滑鼠右鍵按一下刪除作業中涉及之資料表) 連接線 (關聯,然後按一下捷徑功能表上的 Delete

注意

若要還原關聯,請依照先前步驟開啟 [資料庫關聯圖 ] 窗格,然後從 “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()) 使用 DateDateAdd 函數傳回今天日期到今天起三個月內的所有記錄。
Is Null 會傳回包含 Null (空白或未定義) 值的所有記錄。
Is Not Null 傳回包含任何非 Null) 值 (的所有記錄。
"" 會傳回包含零長度字串的所有記錄。 當您需要將值新增至必要欄位,但還不知道實際值為何時,您可以使用零長度字串。 例如,某個欄位可能需要輸入傳真號碼,但有些客戶可能沒有傳真機。 在此情況下,請不要輸入數字,而是輸入一對雙引號,雙引號之間沒有任何空格, (“”) 。

頁面頂端

疑難排解提示

我為何會看見這則錯誤訊息,以及要如何修正錯誤?

如果您使用多個資料表建立刪除查詢,且查詢的 [唯一記錄] 屬性設為 [否],Access 會顯示錯誤訊息;執行查詢時 無法從指定的資料表刪除

若要修正這個問題,請將查詢的 [唯一記錄] 屬性設定為 [是]

  1. 在 [設計檢視] 中開啟刪除查詢。
  2. 如果查詢屬性表沒有開啟,請按 F4 加以開啟。
  3. 按一下查詢設計工具以顯示查詢屬性 (而非欄位屬性)。
  4. 在查詢屬性表中,找出 [唯一記錄] 屬性,並且將它設定為 [是]

防止停用模式封鎖查詢

根據預設,如果您開啟的桌面資料庫尚未選擇信任,或不位於信任的位置,Access 會封鎖所有巨集指令查詢的執行。

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

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

當您看到該訊息時,請採取以下步驟來啟用封鎖的內容:

  • [安全性警告 訊息列] 上,按一下 [ 啟用內容],然後再次執行查詢。

頁面頂端