削除クエリを作成して実行する
Applies ToAccess for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Access デスクトップ データベースで大量のデータをすばやく削除したり、一連のデータを定期的に削除したりする場合は、クエリで条件を指定してデータをすばやく検索および削除できるため、削除クエリまたは更新クエリが便利な場合があります。 保存されたクエリを再利用できるため、クエリの使用は時間短縮になる可能性もあります。

注: データを削除する前、または削除クエリを実行する前に、Access デスクトップ データベースのバックアップを作成していることを確認してください。

削除するレコードが数件の場合は、クエリを使う必要はありません。 データシート ビューでテーブルを開き、削除するフィールド (列) またはレコード (行) を選んで、Del キーを押すだけです。

重要: この記事の内容が該当するのは、削除クエリをデスクトップ データベースで使う場合だけです。 削除クエリや更新クエリを Access Web アプリケーションで使うことはできません。

この記事の内容

クエリの種類を選ぶ

データベースからデータを削除するには、更新クエリまたは削除クエリを使います。 次の表の詳細情報に基づいて、クエリを選んでください。

クエリの種類

用途

結果

削除クエリを使用する

レコード (行) 全体を 1 つのテーブルまたは関連する 2 つのテーブルから同時に削除する。

注: レコードが一対多リレーションシップの "一" 側に存在する場合、削除クエリを実行する前にリレーションシップの変更が必要となる場合があります。 「関連テーブルからデータを削除する」セクションをご覧ください。

クエリを削除すると、レコードを一意に識別するためのキー値も含め、各フィールドのすべてのデータが削除されます。

更新クエリを使用する

テーブルの個々のフィールド値を削除する。

既存の値を NULL 値 (データなし) または長さ 0 の文字列 (間にスペースのない二重引用符のペア) に更新することで、値を簡単に削除できます。

ページの先頭へ

クエリを使ってデータを削除する前の確認事項

  • ファイルが読み取り専用でないことを確認します。

    1. [スタート] を右クリックして、[エクスプローラー] をクリックします。

    2. データベース ファイルを右クリックして、[プロパティ] をクリックします。

    3. [読み取り専用] 属性がオンになっているか確認します。

  • レコードをデータベースから削除するために必要な権限があることを確認します。 判断できない場合は、システム管理者またはデータベース デザイナーに問い合わせてください。

  • データベース内のコンテンツが有効になっていることを確認します。 既定では、データベースが信頼されていない場合、すべてのアクション クエリ (削除、更新、テーブル作成クエリ) がブロックされます。 データベースの信頼の詳細については、「無効モードによってクエリがブロックされないようにする」セクションをご覧ください。

  • 削除するデータを使用しているすべてのテーブル、フォーム、クエリ、レポートを閉じるよう、データベースの他のユーザーにお願いします。 これにより、ロック違反を回避できます。

  • レコードを編集または削除する前に、変更した内容を元に戻したい場合に備えて、データベースのバックアップ コピーを作成することをお勧めします。

ヒント: 多数のユーザーがデータベースに接続している場合、場合によっては、データベースを閉じてから、[排他] モードでもう一度開く必要があります。

データベースを排他モードで開くには、次の手順に従います。

  1. [ファイル]、[開く] の順にクリックします。

  2. データベースを参照して選び、[開く] の右側にある下向き矢印をクリックして、[排他モードで開く] をクリックします。

    ファイルを排他モードで開く

データベースをバックアップする

  1. [ファイル] をクリックし、[名前を付けて保存] をポイントします。

  2. [データベースに名前を付けて保存] をクリックし、[データベースのバックアップ] をクリックします。 元のファイルが閉じられてバックアップが作成され、元のファイルが再度開かれます。

  3. [名前を付けて保存] をクリックし、バックアップ コピーの名前と場所を指定し、[保存] をクリックします。

注: 読み取り専用のデータベース、または前のバージョンの Access で作成されたデータベースを使っている場合、データベースのバックアップを作成できないという旨のメッセージが表示されることがあります。

バックアップに戻すには、元のファイルを閉じて名前を変更し、バックアップ コピーが元のバージョンの名前を使用できるようにします。 元のバージョンの名前をバックアップ コピーに指定し、名前を変更したバックアップ コピーを Access で開きます。

削除クエリを使用する

削除クエリを作成するには、[作成] タブの [クエリ] グループで [クエリ デザイン] をクリックします。 レコードを削除する各テーブルをダブルクリックし、[ 閉じる] をクリックします。

クエリ デザインの上の部分に、テーブルがウィンドウとして表示されます。 フィールドの一覧で、アスタリスク (*) をダブルクリックして、テーブル内のすべてのフィールドをデザイン グリッドに追加します。

削除クエリで特定の抽出条件を使用する

重要: 抽出条件を使って、削除したいレコードだけが返されるようにします。 そうしないと、削除クエリによりテーブル内のすべてのレコードが削除されます。

削除の条件として指定するフィールドをダブルクリックし、クエリ デザイナーの [抽出条件] 行に条件を 1 つ入力してから、各抽出条件フィールドの [表示] チェック ボックスをオフにします。

たとえば、このオプションは、得意先の保留中の注文をすべて削除したい場合などに使います。 このようなレコードだけを検索するには、クエリ デザインのグリッドに [得意先 ID] フィールドと [受注日] フィールドを追加してから、得意先の ID 番号、その得意先の注文が無効になった日付を入力します。

  1. [デザイン] タブで、[表示]、[データシート ビュー] の順にクリックします。

  2. 削除したいレコードがクエリで返されたことを確認してから、Ctrl キーを押しながら S キーを押してクエリを保存します。

  3. クエリを実行するには、ナビゲーション ウィンドウでクエリをダブルクリックします。

ページの先頭へ

更新クエリを使用する

注: Access Web アプリでは、更新クエリ オプションを利用できません。

このセクションでは、更新クエリを使ってテーブルのフィールドを個別に削除する方法について説明します。 更新クエリを実行してデータを削除すると、指定した抽出条件に応じて、既存の値が NULL または長さ 0 の文字列 (間にスペースのない二重引用符のペア) に変わります。

  1. [作成] タブの [クエリ] で [クエリ デザイン] をクリックします。

  2. 削除するデータが含まれているテーブル (テーブルが関連付けられている場合は、リレーションシップの "一" 側のテーブル) を選び、[追加] をクリックして、[閉じる] をクリックします。

    クエリ デザインの上の部分に、テーブルがウィンドウとして表示されます。 このウィンドウには、選択したテーブルのすべてのフィールドが一覧表示されます。

  3. アスタリスク (*) をダブルクリックして、テーブル内のすべてのフィールドをデザイン グリッドに追加します。 すべてのテーブル フィールドを追加すると、テーブルからレコード (行) 全体を削除する削除クエリが有効になります。

    必要に応じて、デザイナーの [抽出条件] 行の 1 つ以上のフィールドに条件を入力し、各抽出条件フィールドの [表示] チェック ボックスをオフにすることもできます。 抽出条件の使用方法の詳細については、「選択クエリのサンプル抽出条件」テーブルをご覧ください。

    注: 抽出条件を使って、変更するレコードだけが返されるようにします。 そうしないと、更新クエリにより、クエリの各フィールドのすべてのレコードが NULL に設定されます。

  4. [デザイン] タブの [結果] グループで [表示] をクリックし、[データシート ビュー] をクリックします。

  5. NULL または長さ 0 の文字列 (間にスペースのない二重引用符のペア "") に設定するレコードだけがクエリで返されることを確認します。

  6. 削除するデータだけがクエリで返されるまで、必要に応じて手順 3. ~ 5. を繰り返してから、Ctrl キーを押しながら S キーを押してクエリを保存します。

  7. クエリを実行するには、ナビゲーション ウィンドウでクエリをダブルクリックします。

ページの先頭へ

追加情報

関連テーブルからデータを削除する

複数の関連テーブルからデータを削除するには、リレーションシップごとに [参照整合性] と [レコードの連鎖削除] オプションを有効にする必要があります。 これにより、リレーションシップの "一" 側と "多" 側のテーブルのデータをクエリで削除できるようになります。 関連データを削除できるようにするには、次のことを確認する必要があります。

  • リレーションシップの "一" 側および "多" 側に存在するレコードを調べます。

  • リレーションシップの "一" 側のレコードと "多" 側のその関連レコードを削除する必要がある場合は、「参照整合性」という一連のルールを有効にして連鎖削除できるようにします。 このセクションでは、参照整合性を有効にする手順と、その実行方法について説明します。

  • リレーションシップの "一" 側にあるレコードだけを削除する場合は、まずリレーションシップを削除してから、データを削除します。

リレーションシップの "多" 側にあるデータだけを削除する場合は、リレーションシップを変更せずに、削除クエリを作成して実行できます。

リレーションシップの "一" 側と "多" 側に存在しているレコードを確認するには、[データベース ツール] タブの [リレーションシップ] グループで [リレーションシップ] をクリックします。 [リレーションシップ] タブに、データベースのテーブルとそのリレーションシップが表示されます。 各リレーションシップは、テーブルをつないでいる線としてフィールド間に描画されます。

一般的なリレーションシップを次の図に示します。 すべてではありませんが、データベースのほとんどのリレーションシップに "一" 側と "多" 側があります。 このリレーションシップの図は、"一" 側を数字の 1、"多" 側を無限の記号 () で示しています。

2 つのテーブル間のリレーションシップ

リレーションシップの "一" 側のレコードを削除すると、そのリレーションシップの "多" 側のすべての関連レコードも削除されます。 これに対して、リレーションシップの "多" 側のレコードを削除しても、"一" 側のレコードは削除されないのが一般的です。

Access では、参照整合性というルールが自動的に適用されます。 このルールでは、データベースの外部キーに正しい値が含まれているかを確認します。 外部キーとは、別のテーブルの主キーの列に含まれている値と一致する値を持つ列です。

リレーションシップを編集する

次の手順は、リレーションシップの "一" 側と "多" 側にあるデータを削除する場合のみ実行してください。

  1. [データベース ツール] タブの [リレーションシップ] グループで [リレーションシップ] をクリックします。

  2. 削除に関係するテーブルを接続しているリレーションシップ (線) を右クリックし、ショートカット メニューの [リレーションシップの編集] をクリックします。

  3. [リレーションシップ] ダイアログ ボックスで、[参照整合性] チェック ボックスがオンになっていることを確認します。

  4. [レコードの連鎖削除] チェック ボックスをオンにします。

    注: このプロパティを再び無効にするまでは、リレーションシップの "一" 側にあるレコードを削除すると、リレーションシップの "多" 側にあるすべての関連レコードが削除されます。

  5. [OK] をクリックして [リレーションシップ] ウィンドウを閉じてから、次の手順に進みます。

リレーションシップを削除する

  1. [リレーションシップ] ウィンドウを開いていない場合は、開きます。

  2. [データベース ツール] タブの [リレーションシップ] グループで [リレーションシップ] をクリックします。

    データを削除した後でリレーションシップを復元できるように、リレーションシップに関係するフィールドを書き留めます。

  3. 削除に関係するテーブルを接続しているリレーションシップ (線) を右クリックし、ショートカット メニューの [削除] をクリックします。

注: リレーションシップを復元するには、前述の手順に従って [リレーションシップ] ウィンドウを開き、"一" 側のテーブルの主キー フィールドを "多" 側のテーブルの外部キー フィールドまでドラッグ アンド ドロップします。 [リレーションシップ] ダイアログ ボックスが表示されます。 古いリレーションシップに参照整合性が適用されていた場合は、[参照整合性] をオンにしてから [作成] をクリックします。 そうでない場合は、[作成] をクリックします。

ページの先頭へ

選択クエリのサンプル抽出条件

削除対象のデータのみ削除されることを確認したい場合に、選択クエリで使用できるサンプル抽出条件を次の表に示します。 一部の例ではワイルドカード文字を使います。

抽出条件

効果

> 234

234 より大きいすべての数値を返します。 234 より小さいすべて数値を検索するには、<234 を使用します。

>= "Cajhen"

アルファベット順で Cajhen 以降のすべてのレコードを返します。

Between #10/02/02# And #10/12/01#

2010 年 2 月 2 日から 2010 年 12 月 1 日までの日付を返します (ANSI-89)。 データベースで ANSI-92 ワイルドカード文字が使用されている場合、シャープ記号 (#) の代わりに単一引用符 (') を使用します。 例: Between '10/02/02' And '10/12/01'

Not "千葉県"

フィールドの内容が "千葉県" と完全に一致しないすべてのレコードを検索します。 この抽出条件は、"千葉県" およびそれ以外の文字 ("千葉県 (関東)" や "関東 (千葉県)" など) が含まれるレコードも返します。

Not "タ*"

先頭が "タ" 以外のすべてのレコードを検索します。データベースで ANSI-92 ワイルドカード文字セットが使用されている場合、アスタリスク (*) の代わりにパーセント記号 (%) を使用します。

Not "*ト"

末尾の文字が "タ" でないすべてのレコードを検索します。 データベースで ANSI-92 ワイルドカード文字セットが使用されている場合、アスタリスク (*) の代わりにパーセント記号 (%) を使用します。

In(東京都,大阪府)

リストから "東京都" または "大阪府" を含むすべてのレコードを検索します。

Like "[ア-サ]*"

[テキスト] フィールドから、A から D で始まるレコードをすべて検索します。データベースで ANSI-92 ワイルドカード文字セットが使用されている場合、アスタリスク (*) の代わりにパーセント記号 (%) を使用します。

Like "*株式*"

"株式" という文字シーケンスが含まれたすべてのレコードを検索します。 データベースで ANSI-92 ワイルドカード文字セットが使用されている場合は、アスタリスク (*) の代わりにパーセント記号 (%) を使用します。

Like "株式会社?"

先頭の 4 文字が "株式会社" でその後に任意の 1 文字が続く 5 文字のすべてのレコードを検索します。 データベースで ANSI-92 ワイルドカード文字セットが使用されている場合、疑問符 (?) の代わりにアンダースコア (_) を使用します。

#10/02/02#

2010 年 2 月 2 日のレコードをすべて検索します。 ANSI-92 ワイルドカード文字を使用するデータベースの場合は、データをシャープ記号ではなく引用符で囲みます ('10/02/02')。

< Date() - 30

Date 関数を使用して、30 日前よりも古いすべての日付を返します。

Date()

Date 関数を使用して、今日の日付を含むすべてのレコードを返します。

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

Date 関数と DateAdd 関数を使用して、今日の日付から 3 か月後までのすべてのレコードを返します。

Is Null

Null 値 (空白または未定義の値) を含むすべてのレコードを返します。

Is Not Null

任意の値 (NULL ではない値) が含まれるすべてのレコードを返します。

""

長さがゼロの文字列を含むレコードをすべて返します。 長さ 0 の文字列は、必須フィールドに値を追加する必要があるが、実際の値がわからない場合に使います。 たとえば、フィールドに FAX 番号を入力する必要があるのに、FAX を持っていない顧客がいる場合があります。 この場合、数値を入力する代わりに、間にスペースのない二重引用符のペア ("") を入力します。

ページの先頭へ

トラブルシューティングのヒント

エラー メッセージが表示される原因と修正方法

複数のテーブルを使用する削除クエリを作成し、そのクエリの "固有のレコード" プロパティを [いいえ] に設定している場合、クエリの実行時に "指定されたテーブルから削除できませんでした。" というエラー メッセージが表示されます。

この問題を修正するには、クエリの "固有のレコード" プロパティを [はい] に設定します。

  1. デザイン ビューで削除クエリを開きます。

  2. クエリ プロパティ シートが開いていない場合は、F4 キーを押して開きます。

  3. クエリ デザイナーをクリックして、フィールドのプロパティではなくクエリのプロパティを表示します。

  4. クエリ プロパティ シートの [固有のレコード] ボックスを [はい] に設定します。

無効モードでクエリがブロックされないようにする

既定では、信頼していないデスクトップ データベースや信頼できる場所以外にあるデータベースを開くと、すべてのアクション クエリの実行がブロックされます。

アクション クエリを実行しようとしたのに、何も実行されていないように思われる場合は、Access ステータス バーに次のメッセージが表示されていないか確認してください。

無効モードのため、アクションまたはイベントはブロックされました。

このメッセージが表示された場合は、次の手順に従い、ブロックされたコンテンツを有効にします。

  • [セキュリティ警告] メッセージ バーの [コンテンツの有効化] をクリックして、クエリをもう一度実行します。

ページの先頭へ

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。