當你想快速刪除大量資料,或定期刪除 Access 桌面資料庫中的一組資料時,刪除或更新查詢可能很有用,因為這些查詢讓你能指定條件,快速找到並刪除資料。 使用查詢也可以節省時間,因為你可以重複使用已儲存的查詢。
注意
在您刪除任何資料,或執行刪除查詢之前,請確認您已備份 Access 桌面資料庫。
如果你只想刪除少數紀錄,其實不需要查詢。 只要在資料表檢視中打開表格,選擇欄位 (欄位) 或記錄 (列) ,然後按下刪除。
重要
本文資訊僅供桌面資料庫使用。 你不能在 Access 網頁應用程式中使用刪除或更新查詢。
本文內容
選擇查詢類型
你可以使用更新查詢或刪除查詢來刪除資料庫中的資料。 請根據下表的細節選擇查詢:
| 查詢類型 | 使用時機 | 結果 |
|---|---|---|
| 使用刪除查詢 | 若要移除整筆紀錄 (列,則可同時從一個資料表或兩個相關資料表) 。 註: 如果紀錄位於一對多關係的「一」側,你可能需要在執行刪除查詢前先更改該關係。 請參閱刪除 相關資料表資料的章節。 |
刪除查詢會移除每個欄位中的所有資料,包括使記錄唯一的鍵值 |
| 使用更新查詢 | 從表格中刪除個別欄位值。 | 透過將現有值更新為空值(也就是沒有資料) )或是 (一對雙引號且間距無空格的零長字串, () 來更容易刪除。 |
在使用查詢刪除任何資料前需要驗證的事項
請確認該檔案不是唯讀檔案:
- 右鍵點擊 開始 ,然後點 選「開啟 Windows 檔案總管」。
- 右鍵點選資料庫檔案,然後點 選屬性。
- 看看是否選擇 了唯讀 屬性。
確認你有刪除資料庫紀錄所需的權限。 如果不確定,請聯絡你的系統管理員或資料庫設計者。
請確保你在資料庫中啟用了內容。 預設情況下,Access 會阻擋所有動作查詢 (刪除、更新和建立資料表) 的查詢,除非你先信任資料庫。 關於信任資料庫的資訊,請參閱 「停止停用模式阻擋查詢」章節。
請其他資料庫使用者關閉所有使用你想刪除資料的資料表、表單、查詢和報告。 這有助於避免鎖的違規。
在編輯或刪除紀錄之前, 先備份 資料庫副本是個好主意,以防你想反轉變更。
秘訣
如果有大量使用者連接到資料庫,你可能需要關閉資料庫,然後再以 專屬 模式重新開啟。
以獨佔模式開啟資料庫
- 點擊「檔案」標籤>「開啟」。
- 瀏覽到資料庫並指向選擇,點擊 「開啟 」按鈕旁的箭頭,然後點擊 「開啟獨家」。
備份資料庫
- 點選 「檔案 」標籤,指向 另存新檔。
- 點選 「另存資料庫為新」,點選 「備份資料庫」。 Access 會關閉原始檔案、建立備份複本,然後重新開啟原始檔案。
- 點選 另存新檔 ,指定備份副本的名稱和位置,然後點 選儲存。
注意
如果你使用的是唯讀或在前版本 Access 建立的資料庫,可能會收到無法備份資料庫的訊息。
若要回復至備份,請關閉並重新命名原始檔案,讓備份複本可以使用原始版本的名稱。 指派原始版本的名稱給備份複本,然後在 Access 中開啟重新命名後的備份。
使用 delete 查詢
要建立刪除查詢,請點擊 「建立 」標籤,在 查詢 群組中點選 「查詢設計」。 雙擊你想刪除記錄的每個表格,然後點擊 關閉。
該表格會以視窗的形式出現在查詢設計網格的上方。 從欄位列表中,雙擊星號 (*) ,將表格中所有欄位加入設計網格。
在刪除查詢中使用特定條件
重要
使用條件只回傳你想刪除的紀錄。 否則,刪除查詢會移除資料表中的所有紀錄。
雙擊你想指定為刪除條件的欄位,在查詢設計器的 Criteria 列輸入其中一個條件,然後清除每個條件欄位的 「顯示 」勾選框。
舉個例子說明你可能想使用這個選項:假設你想移除所有客戶待處理的訂單。 要找到這些紀錄,你可以將客戶ID和訂單日期欄位加入查詢設計網格,然後輸入客戶的ID號碼,以及該顧客訂單失效的日期。
- 在 設計 標籤中,點選 檢視>資料表檢視。
- 確認查詢是否回傳你想刪除的紀錄,然後按 CTRL+S 儲存查詢。
- 要執行查詢,請在導覽窗格中雙擊查詢。
使用更新查詢
注意
你無法在 Access 網頁應用程式中使用更新查詢選項。
本節說明如何使用更新查詢刪除資料表中的個別欄位。 請記得,執行更新查詢刪除資料時,現有值會根據你指定的條件,變成 NULL 或是) (一對雙引號且中間沒有空格的零長度字串。
點選「 建立 」標籤,在 查詢 群組中點選 「查詢設計」。
如果資料表有相關資料,請選擇包含你想刪除的資料 (該資料表,選擇關係) 「一」側的資料表,點 選新增,然後點 選關閉。
該表格會以視窗的形式出現在查詢設計網格的上方。 視窗會列出所選資料表中的所有欄位。雙擊星號 (*) ,即可將表格中的所有欄位加入設計網格。 新增所有資料表欄位後,刪除查詢能從資料表中移除整筆 (列) 紀錄。
你可以選擇性地在設計器的 條件 列輸入一個或多個欄位的條件,然後對每個條件欄位的「 顯示 」勾選框。 欲了解更多使用標準的資訊,請參閱 「選擇查詢範例標準 」表格。注意
你用條件只會回傳你想更改的紀錄。 否則,更新查詢會將查詢中每個欄位的每筆紀錄設為 NULL。
在 [設計] 索引標籤的 [結果] 群組中,按一下 [檢視],再按一下 [資料工作表檢視]。
確認查詢是否回傳你想設定為 NULL 或零長度字串的紀錄, (一對雙引號且中間沒有空格 (「」) 。
視需要重複步驟 3 到 5,並更改欄位或條件,直到查詢只回傳你想刪除的資料,然後按 CTRL+S 儲存查詢。
要執行查詢,請在導覽窗格中雙擊查詢。
其他資訊
從相關資料表中刪除資料
若您想刪除多個相關資料表的資料,必須啟用每個關聯的 參照完整性 與 串聯刪除相關紀錄 選項。 這允許你的查詢刪除關係中「一」端和「多端」資料表的資料。 準備刪除相關資料需驗證以下事項:
- 判斷哪些紀錄屬於關係的「一方」,哪些屬於「多方」一方。
- 如果你需要刪除關係中「一」端的紀錄,以及「多」側的相關紀錄,你就啟用一組稱為參照完整性的規則,並啟用連鎖刪除。 本節步驟說明參照完整性,以及如何執行這兩項任務。
- 如果你只需要刪除關係中「一邊」的紀錄,你先刪除那個關係,再刪除資料。
如果你只想移除關係中「多」端的資料,你可以建立並執行刪除查詢,而不必改變關係。
要查詢哪些紀錄位於關係的「一」面與「多面」,請在資料庫工具標籤的關係群組中點擊「關係」。 「 關係」 標籤會顯示你資料庫中的資料表和關係。 每個關係都以一條連接欄位間資料表的線表示。
下圖顯示了典型的關係。 資料庫中的大多數關係都有「單方」和「多方」兩側。 關係圖以 數字 一表示「一」側 (1) ,「多」側則用無限大 (∞) 符號表示。
當你刪除關係中「一側」的紀錄時,也會刪除「多方」所有相關紀錄。 然而,當你刪除關係中「多」側的紀錄時,通常不會刪除「一」側的紀錄。
此外,Access 會自動強制執行一套稱為參照完整性的規則。 這些規則確保資料庫中的外鍵包含正確的值。 外鍵是指一個欄位,其值與另一個資料表的主鍵欄位值相符。
編輯關係
只有在你需要刪除關係中「一」或「多」雙方的資料時,才會遵循這些步驟。
在 [資料庫工具] 索引標籤上的 [資料庫關聯圖] 群組中,按一下 [資料庫關聯圖]。
右鍵點擊連接刪除操作中資料表) 線 (關係,然後在快捷鍵選單點擊 「編輯關係 」。
在 「編輯關係」 對話框中,確保已勾選「 強制執行引用完整性 」勾選框。
選擇「連鎖刪除相關紀錄」的勾選框。
注意
除非你再次停用這個屬性,刪除關係中「一」側的紀錄會刪除該關係「多」側的所有相關紀錄。
點擊 確定,關閉 關係 欄,然後繼續下一步。
刪除關聯
- 如果你還沒這麼做,請打開 「關係 」視窗。
- 在 [資料庫工具] 索引標籤上的 [資料庫關聯圖] 群組中,按一下 [資料庫關聯圖]。
記錄關係中涉及的欄位,這樣刪除資料後可以恢復關係。 - 右鍵點擊連接刪除操作中資料表) 線 (關係,然後在快捷鍵選單點擊 刪除 。
注意
要恢復關係,請依照前述步驟打開 關係 窗格,然後從「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()) | 使用 Date 和 DateAdd 函式回傳今天日期到三個月之間的所有紀錄。 |
| Is Null | 會傳回包含 Null (空白或未定義) 值的所有記錄。 |
| Is Not Null | 回傳所有包含非空值 () 的紀錄。 |
| "" | 會傳回包含零長度字串的所有記錄。 當你需要在需要為必填欄位加入值,但還不知道實際值是什麼時,你會使用零長度的字串。 例如,某個欄位可能需要輸入傳真號碼,但有些客戶可能沒有傳真機。 在這種情況下,你不是輸入數字,而是輸入一對雙引號,中間沒有空格, (「 」) 。 |
疑難排解提示
我為何會看見這則錯誤訊息,以及要如何修正錯誤?
如果你使用多個資料表建立刪除查詢,且查詢的 Unique Records 屬性設為 「否」,Access 會顯示錯誤訊息;執行查詢時 無法從指定的資料表刪除 資料。
若要修正這個問題,請將查詢的 [唯一記錄] 屬性設定為 [是]。
- 在 [設計檢視] 中開啟刪除查詢。
- 如果查詢屬性表沒有開啟,請按 F4 加以開啟。
- 按一下查詢設計工具以顯示查詢屬性 (而非欄位屬性)。
- 在查詢屬性表中,找出 [唯一記錄] 屬性,並且將它設定為 [是]。
防止停用模式封鎖查詢
預設情況下,如果你開啟一個你未選擇信任或不在可信地點的桌面資料庫,Access 會阻擋所有動作查詢的執行。
如果您嘗試執行某個動作查詢,但好像什麼動作都沒有發生,請確認 Access 狀態列是否出現下列訊息:
[巨集指令或事件已經被停用模式封鎖。]
當你看到該訊息時,請採取以下步驟來啟用被封鎖的內容:
- 在 安全警告 訊息欄中,點擊 啟用內容,然後再次執行你的查詢。