建立並執行刪除查詢

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

當你想快速刪除大量資料,或定期刪除 Access 桌面資料庫中的一組資料時,刪除或更新查詢可能很有用,因為這些查詢讓你能指定條件,快速找到並刪除資料。 使用查詢也可以節省時間,因為你可以重複使用已儲存的查詢。

注意

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

如果你只想刪除少數紀錄,其實不需要查詢。 只要在資料表檢視中打開表格,選擇欄位 (欄位) 或記錄 (列) ,然後按下刪除。

重要

本文資訊僅供桌面資料庫使用。 你不能在 Access 網頁應用程式中使用刪除或更新查詢。

本文內容

選擇查詢類型

你可以使用更新查詢或刪除查詢來刪除資料庫中的資料。 請根據下表的細節選擇查詢:

查詢類型 使用時機 結果​​
使用刪除查詢 若要移除整筆紀錄 (列,則可同時從一個資料表或兩個相關資料表) 。
註: 如果紀錄位於一對多關係的「一」側,你可能需要在執行刪除查詢前先更改該關係。 請參閱刪除 相關資料表資料的章節。
刪除查詢會移除每個欄位中的所有資料,包括使記錄唯一的鍵值
使用更新查詢 從表格中刪除個別欄位值。 透過將現有值更新為空值(也就是沒有資料) )或是 (一對雙引號且間距無空格的零長字串, () 來更容易刪除。

頁面頂端

在使用查詢刪除任何資料前需要驗證的事項

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

    1. 右鍵點擊 開始 ,然後點 選「開啟 Windows 檔案總管」。
    2. 右鍵點選資料庫檔案,然後點 選屬性
    3. 看看是否選擇 了唯讀 屬性。
  • 確認你有刪除資料庫紀錄所需的權限。 如果不確定,請聯絡你的系統管理員或資料庫設計者。

  • 請確保你在資料庫中啟用了內容。 預設情況下,Access 會阻擋所有動作查詢 (刪除、更新和建立資料表) 的查詢,除非你先信任資料庫。 關於信任資料庫的資訊,請參閱 「停止停用模式阻擋查詢」章節。

  • 請其他資料庫使用者關閉所有使用你想刪除資料的資料表、表單、查詢和報告。 這有助於避免鎖的違規。

  • 在編輯或刪除紀錄之前, 先備份 資料庫副本是個好主意,以防你想反轉變更。

秘訣

如果有大量使用者連接到資料庫,你可能需要關閉資料庫,然後再以 專屬 模式重新開啟。

以獨佔模式開啟資料庫

  1. 點擊「檔案」標籤>「開啟」。
  2. 瀏覽到資料庫並指向選擇,點擊 「開啟 」按鈕旁的箭頭,然後點擊 「開啟獨家」。
    在獨佔模式中開啟檔案

備份資料庫

  1. 點選 「檔案 」標籤,指向 另存新檔
  2. 點選 「另存資料庫為新」,點選 「備份資料庫」。 Access 會關閉原始檔案、建立備份複本,然後重新開啟原始檔案。
  3. 點選 另存新檔 ,指定備份副本的名稱和位置,然後點 選儲存

注意

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

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

使用 delete 查詢

要建立刪除查詢,請點擊 「建立 」標籤,在 查詢 群組中點選 「查詢設計」。 雙擊你想刪除記錄的每個表格,然後點擊 關閉

該表格會以視窗的形式出現在查詢設計網格的上方。 從欄位列表中,雙擊星號 (*) ,將表格中所有欄位加入設計網格。

在刪除查詢中使用特定條件

重要

使用條件只回傳你想刪除的紀錄。 否則,刪除查詢會移除資料表中的所有紀錄。

雙擊你想指定為刪除條件的欄位,在查詢設計器的 Criteria 列輸入其中一個條件,然後清除每個條件欄位的 「顯示 」勾選框。

舉個例子說明你可能想使用這個選項:假設你想移除所有客戶待處理的訂單。 要找到這些紀錄,你可以將客戶ID和訂單日期欄位加入查詢設計網格,然後輸入客戶的ID號碼,以及該顧客訂單失效的日期。

  1. 設計 標籤中,點選 檢視>資料表檢視
  2. 確認查詢是否回傳你想刪除的紀錄,然後按 CTRL+S 儲存查詢。
  3. 要執行查詢,請在導覽窗格中雙擊查詢。

頁面頂端

使用更新查詢

注意

你無法在 Access 網頁應用程式中使用更新查詢選項。

本節說明如何使用更新查詢刪除資料表中的個別欄位。 請記得,執行更新查詢刪除資料時,現有值會根據你指定的條件,變成 NULL 或是) (一對雙引號且中間沒有空格的零長度字串。

  1. 點選「 建立 」標籤,在 查詢 群組中點選 「查詢設計」。

  2. 如果資料表有相關資料,請選擇包含你想刪除的資料 (該資料表,選擇關係) 「一」側的資料表,點 選新增,然後點 選關閉
    該表格會以視窗的形式出現在查詢設計網格的上方。 視窗會列出所選資料表中的所有欄位。

  3. 雙擊星號 (*) ,即可將表格中的所有欄位加入設計網格。 新增所有資料表欄位後,刪除查詢能從資料表中移除整筆 (列) 紀錄。
    你可以選擇性地在設計器的 條件 列輸入一個或多個欄位的條件,然後對每個條件欄位的「 顯示 」勾選框。 欲了解更多使用標準的資訊,請參閱 「選擇查詢範例標準 」表格。

    注意

    你用條件只會回傳你想更改的紀錄。 否則,更新查詢會將查詢中每個欄位的每筆紀錄設為 NULL。

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

  5. 確認查詢是否回傳你想設定為 NULL 或零長度字串的紀錄, (一對雙引號且中間沒有空格 (「」) 。

  6. 視需要重複步驟 3 到 5,並更改欄位或條件,直到查詢只回傳你想刪除的資料,然後按 CTRL+S 儲存查詢。

  7. 要執行查詢,請在導覽窗格中雙擊查詢。

頁面頂端

其他資訊

若您想刪除多個相關資料表的資料,必須啟用每個關聯的 參照完整性串聯刪除相關紀錄 選項。 這允許你的查詢刪除關係中「一」端和「多端」資料表的資料。 準備刪除相關資料需驗證以下事項:

  • 判斷哪些紀錄屬於關係的「一方」,哪些屬於「多方」一方。
  • 如果你需要刪除關係中「一」端的紀錄,以及「多」側的相關紀錄,你就啟用一組稱為參照完整性的規則,並啟用連鎖刪除。 本節步驟說明參照完整性,以及如何執行這兩項任務。
  • 如果你只需要刪除關係中「一邊」的紀錄,你先刪除那個關係,再刪除資料。

如果你只想移除關係中「多」端的資料,你可以建立並執行刪除查詢,而不必改變關係。

要查詢哪些紀錄位於關係的「一」面與「多面」,請在資料庫工具標籤的關係群組中點擊「關係」。關係」 標籤會顯示你資料庫中的資料表和關係。 每個關係都以一條連接欄位間資料表的線表示。

下圖顯示了典型的關係。 資料庫中的大多數關係都有「單方」和「多方」兩側。 關係圖以 數字 一表示「一」側 (1) ,「多」側則用無限大 () 符號表示。

兩個資料表之間的關聯

當你刪除關係中「一側」的紀錄時,也會刪除「多方」所有相關紀錄。 然而,當你刪除關係中「多」側的紀錄時,通常不會刪除「一」側的紀錄。

此外,Access 會自動強制執行一套稱為參照完整性的規則。 這些規則確保資料庫中的外鍵包含正確的值。 外鍵是指一個欄位,其值與另一個資料表的主鍵欄位值相符。

編輯關係

只有在你需要刪除關係中「一」或「多」雙方的資料時,才會遵循這些步驟。

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

  2. 右鍵點擊連接刪除操作中資料表) 線 (關係,然後在快捷鍵選單點擊 「編輯關係 」。

  3. 「編輯關係」 對話框中,確保已勾選「 強制執行引用完整性 」勾選框。

  4. 選擇「連鎖刪除相關紀錄」的勾選框。

    注意

    除非你再次停用這個屬性,刪除關係中「一」側的紀錄會刪除該關係「多」側的所有相關紀錄。

  5. 點擊 確定,關閉 關係 欄,然後繼續下一步。

刪除關聯

  1. 如果你還沒這麼做,請打開 「關係 」視窗。
  2. 在 [資料庫工具] 索引標籤上的 [資料庫關聯圖] 群組中,按一下 [資料庫關聯圖]
    記錄關係中涉及的欄位,這樣刪除資料後可以恢復關係。
  3. 右鍵點擊連接刪除操作中資料表) 線 (關係,然後在快捷鍵選單點擊 刪除

注意

要恢復關係,請依照前述步驟打開 關係 窗格,然後從「one」表拖曳主鍵欄位,將其放到「多」表的外鍵欄位。 會出現 「編輯關係 」對話框。 如果舊關係強制執行參照完整性,請選擇 強制執行參照完整性,然後點擊 建立。 否則,只要點擊 建立即可。

頁面頂端

選擇查詢的範例標準

下表列出了一些範例標準,當你想確保只刪除想刪除的資料時,可以在特定查詢中使用。 其中一些例子使用了萬用字元。

Criteria 影響
> 234 傳回所有大於 234 的數字。 要找到所有小於234的數字,請使用 < 234。
>= 「Cajhen」 傳回從 Cajhen 到字母表最後一個字母之間的所有記錄。
2010年2月2日#至#12月1日之間# 申報日期為2010年2月2日至2010年12月1日, (ANSI-89) 。 如果你的資料庫使用 ANSI-92 萬用字元,請在 #) (使用單引號 ( ) 代替井號。 舉例:在「2010年2月2日」到「2010年12月1日之間」。
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/2/2010') 。
< 日期 () - 30 會使用 Date 函數,傳回 30 天以前的所有日期。
Date() 會使用 Date 函數,傳回包含今天日期的所有記錄。
Between Date() And DateAdd("M", 3, Date()) 使用 DateDateAdd 函式回傳今天日期到三個月之間的所有紀錄。
Is Null 會傳回包含 Null (空白或未定義) 值的所有記錄。
Is Not Null 回傳所有包含非空值 () 的紀錄。
"" 會傳回包含零長度字串的所有記錄。 當你需要在需要為必填欄位加入值,但還不知道實際值是什麼時,你會使用零長度的字串。 例如,某個欄位可能需要輸入傳真號碼,但有些客戶可能沒有傳真機。 在這種情況下,你不是輸入數字,而是輸入一對雙引號,中間沒有空格, (「 ) 。

頁面頂端

疑難排解提示

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

如果你使用多個資料表建立刪除查詢,且查詢的 Unique Records 屬性設為 「否」,Access 會顯示錯誤訊息;執行查詢時 無法從指定的資料表刪除 資料。

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

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

防止停用模式封鎖查詢

預設情況下,如果你開啟一個你未選擇信任或不在可信地點的桌面資料庫,Access 會阻擋所有動作查詢的執行。

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

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

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

  • 安全警告 訊息欄中,點擊 啟用內容,然後再次執行你的查詢。

頁面頂端