Accessのアクションクエリは、テーブルのデータを一括で更新・削除・追加・新規テーブルとして保存できる機能です。データを読み取るだけの選択クエリと異なり、アクションクエリはテーブルの中身そのものを変更します。
単価表の一括改定・期限切れレコードの月末削除・処理済み注文の履歴テーブルへの移動といった定型業務を、ボタンひとつで実行できるのがアクションクエリの最大の利点です。本記事では更新・削除・追加・テーブル作成の4種類について、作成手順・抽出条件の書き方・SQLビューでの確認・実行前の安全手順・実務パターンを体系的に解説します。
「マクロやVBAに頼らずAccessでデータを一括操作したい」「MOS Access試験のアクションクエリ問題を確実に取りたい」という方はぜひ最後までお読みください。
アクションクエリ4種類の概要と使い分け
アクションクエリは操作の種類によって4つに分類されます。デザインビューで選択クエリと同じようにテーブルとフィールドを設定し、「クエリデザイン」タブの「クエリの種類」グループで種別を切り替えます。
| 種類 | SQLコマンド | 処理内容 | 主な用途 |
|---|---|---|---|
| 更新クエリ | UPDATE | 既存レコードのフィールド値を変更する | 単価改定・ステータス更新・空欄への既定値設定 |
| 削除クエリ | DELETE | 条件に合うレコードをテーブルから削除する | 古いログ削除・処理済みデータの整理 |
| 追加クエリ | INSERT INTO | 別テーブルや外部データからレコードを追加する | 月次集計テーブルへの蓄積・データ移行 |
| テーブル作成クエリ | SELECT INTO | SELECT結果を新しいテーブルとして保存する | スナップショット作成・バックアップ用テーブル生成 |
アクションクエリは実行すると元に戻せません(Ctrl+Zは効きません)。必ずバックアップを取ってから実行するか、先に選択クエリで対象レコードを確認してから切り替えるのが鉄則です。
更新クエリ(UPDATE)の作成手順
更新クエリは既存レコードの特定フィールドを一括で書き換えます。「商品テーブルのカテゴリが『衣料品』の単価を全件5%引き上げる」のような処理が数ステップで完了します。
更新クエリの作成手順
| 手順 | 操作 | 補足 |
|---|---|---|
| ① テーブルを追加 | 「作成」タブ→「クエリデザイン」を開き「テーブルの表示」で対象テーブルを追加 | 選択クエリと同じ出発点 |
| ② クエリの種類を変更 | 「クエリデザイン」タブ→「更新」ボタンをクリック | デザイングリッドに「レコードの更新」行が追加される |
| ③ 更新フィールドを追加 | 書き換えたいフィールドをグリッドにドラッグ | 更新するフィールドだけ追加すればOK |
| ④ 更新式を入力 | 「レコードの更新」行に新しい値または計算式を入力 | 例:[単価]*1.05(単価を5%引き上げ) |
| ⑤ 抽出条件を入力 | 「抽出条件」行に絞り込み条件を入力 | 例:”衣料品”(省略すると全件更新) |
| ⑥ 対象件数を確認 | 「表示」でデータシートビューに切り替えて対象件数を目視確認 | この時点ではまだ更新されない |
| ⑦ 実行 | 「クエリデザイン」タブ→「実行」ボタン(!)→確認ダイアログ「はい」 | ここで初めてテーブルが書き換えられる |
更新クエリの実務パターン別設定例
「表示」→「SQLビュー」で確認すると、デザインビューの設定がSQL文に変換されています。複雑な条件はSQLビューで直接記述するほうが正確です。
| 実務パターン | 「レコードの更新」欄 | 「抽出条件」欄 |
|---|---|---|
| 単価を5%引き上げ | [単価]*1.05 | [カテゴリ]=”衣料品” |
| 受注ステータスを「処理済」に変更 | “処理済” | [処理日] Is Not Null |
| 空欄の担当者に既定値を設定 | “未設定” | [担当者] Is Null |
| 承認済みレコードの承認日を今日の日付に設定 | Date() | [承認フラグ]=-1 |
文字列はダブルクォート(” “)、日付は#2026/03/31#のようにシャープで囲みます。フィールド名は角括弧([ ])で囲む習慣をつけると、フィールド名に空白が含まれる場合の構文エラーを防げます。
削除クエリ(DELETE)の作成手順
削除クエリは条件に合うレコードをまとめて削除します。「3年以上前のアクセスログを毎月末に一括削除する」「返品済みステータスの受注データを整理する」といった定期メンテナンス処理で活用されます。
削除クエリの作成手順
| 手順 | 操作 | 補足 |
|---|---|---|
| ① テーブルを追加 | 「クエリデザイン」を開き対象テーブルを追加 | 削除元のテーブル1つだけでOK |
| ② クエリの種類を変更 | 「クエリデザイン」タブ→「削除」ボタンをクリック | グリッドに「削除」行が追加される |
| ③ アスタリスクをドラッグ | テーブルの「*」(全フィールド)をグリッドにドラッグ | 「削除」欄に「From」が入る |
| ④ 条件フィールドを追加 | 抽出条件に使うフィールドをグリッドにドラッグ | 「削除」欄に「Where」が入る |
| ⑤ 抽出条件を入力 | 「抽出条件」行に削除対象の条件を入力 | 例:[登録日] < #2023/01/01# |
| ⑥ 対象件数を確認 | データシートビューに切り替えて削除予定レコードを目視確認 | 削除前の最重要チェック |
| ⑦ 実行 | 「実行」ボタン→確認ダイアログ「はい」 | 削除したレコードはゴミ箱に入らない |
参照整合性エラーへの対処
リレーションシップで参照整合性を設定している場合、子テーブルに関連レコードが残っている親テーブルのレコードを削除しようとするとエラーが発生します。
| 状況 | 対処方法 |
|---|---|
| 子テーブルの関連レコードを先に削除したい | 子テーブル側の削除クエリを先に実行してから親テーブルの削除クエリを実行する |
| 親削除時に子を自動削除したい | リレーションシップの設定で「関連フィールドの連鎖削除」にチェックを入れる |
| 参照整合性を一時的に外したい | リレーションシップウィンドウで対象リレーションを右クリック→「リレーションシップの編集」でチェックを外す(本番環境では慎重に) |
追加クエリ(INSERT INTO)の作成手順
追加クエリは選択クエリで抽出したレコードを別テーブルに追加します。「今月の受注データを月次集計テーブルに蓄積する」「仮テーブルで確認したデータを本テーブルに取り込む」といった用途で使います。
追加クエリの作成手順
| 手順 | 操作 | 補足 |
|---|---|---|
| ① ソーステーブルを追加 | 「クエリデザイン」を開き追加元のテーブルを追加 | クエリや複数テーブルの結合でもOK |
| ② クエリの種類を変更 | 「クエリデザイン」タブ→「追加」ボタンをクリック | 「追加」ダイアログが開く |
| ③ 追加先テーブルを指定 | 「テーブル名」欄でデータを追加したいテーブルを選択 | 同じデータベース内または別のデータベース指定も可能 |
| ④ 追加フィールドを設定 | ソーステーブルのフィールドをグリッドにドラッグ | 「追加先」行に追加先フィールド名が自動表示される |
| ⑤ フィールドの対応を確認 | 「追加先」行で追加先フィールド名が正しいか確認・修正 | フィールド名が違う場合はドロップダウンから手動選択 |
| ⑥ 抽出条件を入力 | 追加するレコードを絞り込む条件を「抽出条件」行に入力 | 省略すると全件追加 |
| ⑦ 実行 | 「実行」ボタン→確認ダイアログ「はい」 | 重複主キーがあるとエラーになる |
追加クエリで注意すべきフィールドの型と制約
| 注意事項 | 内容 | 対処法 |
|---|---|---|
| 主キー重複エラー | 追加先に同じ主キー値のレコードが既に存在する | 追加前に削除クエリで重複を排除するかオートナンバー型に変更する |
| データ型の不一致 | ソースが数値型なのに追加先がテキスト型など | 追加先テーブルのフィールドのデータ型をソースに合わせて修正する |
| 必須フィールドのNull | 追加先の「必須入力」フィールドに値がない | ソースクエリで固定値を計算フィールドとして設定するか追加先の必須制約を解除する |
| フィールド数の不一致 | 追加先フィールドが多い・少ない | 「追加先」行の不要フィールド対応を空欄にする(NullまたはDefaultが入る) |
テーブル作成クエリの作成手順
テーブル作成クエリは選択クエリの実行結果を新しいテーブルとして保存します。「月末時点の在庫スナップショットを保管する」「集計結果を別システムに渡すためのテーブルを生成する」といった用途に使います。追加クエリと異なり、実行するたびに指定した名前のテーブルを上書き(再作成)する点に注意してください。
| 手順 | 操作 | 補足 |
|---|---|---|
| ① テーブルを追加 | 「クエリデザイン」を開き元データのテーブルを追加 | 複数テーブルの結合クエリでも作成可能 |
| ② クエリの種類を変更 | 「クエリデザイン」タブ→「テーブルの作成」ボタンをクリック | 「テーブルの作成」ダイアログが開く |
| ③ 新テーブル名を入力 | 「テーブル名」欄に作成するテーブルの名前を入力 | 既存テーブル名を指定すると上書きされる(警告あり) |
| ④ フィールドを設定 | 保存したいフィールドをグリッドにドラッグ | 並べ替え・抽出条件の設定も選択クエリと同じ方法 |
| ⑤ 実行 | 「実行」ボタン→確認ダイアログ「はい」 | 指定したテーブルが新規作成される(既存は上書き) |
テーブル作成クエリで生成されたテーブルには、元テーブルの主キー設定・インデックス・入力規則は引き継がれません。スナップショット用途では問題ありませんが、生成テーブルを業務で本格利用する場合はデザインビューで制約を再設定してください。
アクションクエリ実行前の安全3ステップ
アクションクエリはデータを不可逆的に変更します。以下の3ステップを習慣化することで、意図しないデータ破壊を防げます。
| ステップ | 内容 | 具体的な方法 |
|---|---|---|
| ① バックアップ取得 | データベースファイル(.accdb)をコピーして別フォルダに保存する | エクスプローラーでファイルをコピー貼り付け。または「ファイル」→「名前を付けて保存」→「データベースのバックアップ」 |
| ② 選択クエリで件数確認 | アクションクエリに設定した条件と同じ条件で選択クエリを実行し、対象レコード数を目視確認する | デザインビューで「クエリの種類」を「選択」のままデータシートビューで確認。件数が予想と大幅にずれている場合は条件を見直す |
| ③ テスト用コピーで試実行 | 本番テーブルのコピーを作り、コピーに対してアクションクエリを試実行する | テーブルを右クリック→「コピー」→「貼り付け」→「構造とデータ」で複製。複製テーブルで実行して結果を確認してから本番テーブルに切り替える |
Accessではアクション実行時に「X件のレコードを更新/削除/追加します。よろしいですか?」という確認ダイアログが表示されます。この件数が想定と合っているかを必ず確認してから「はい」をクリックしてください。
実務シナリオ別 アクションクエリ活用パターン
| 業種・場面 | 処理内容 | 使うクエリ種 |
|---|---|---|
| 小売業:季節ごとの値引き | 「秋冬商品」カテゴリの単価を一括15%引き下げ | 更新クエリ |
| 受注管理:月次アーカイブ | 前月の受注レコードを「受注履歴テーブル」に移動(追加→削除の2段階) | 追加クエリ+削除クエリ |
| 会員管理:退会処理 | 退会申請フラグが立ったユーザーのステータスを「退会済」に更新 | 更新クエリ |
| 在庫管理:棚卸しスナップショット | 月末時点の在庫数量テーブルをコピーして保管 | テーブル作成クエリ |
| 人事:異動後のデータ整理 | 異動済み社員レコードを「旧部署記録テーブル」に移動し本テーブルから削除 | 追加クエリ+削除クエリ |
| ログ管理:古いレコード削除 | 3年以上前の操作ログを定期削除 | 削除クエリ |
| 帳票用一時テーブル作成 | 月次レポート用に集計済みデータを別テーブルに切り出す | テーブル作成クエリ |
「追加クエリ+削除クエリ」の2段構成は、データを別テーブルに「移動」する標準的なパターンです。追加が成功したことを確認してから削除クエリを実行する順序を必ず守ってください。逆順で実行すると、追加前にデータが消えてしまいます。
MOS Access試験での出題傾向と対策
MOS Access 365&2019では、アクションクエリは「クエリを使ったデータ操作」のスキル区分で出題されます。特に更新クエリと削除クエリが頻出で、追加クエリ・テーブル作成クエリも出題されます。
- 更新クエリの作成:「クエリデザイン」タブ→「更新」ボタンへの切り替え→「レコードの更新」欄への式入力と「抽出条件」欄への条件入力。フィールド参照の角括弧([ ])と文字列のダブルクォートの書き方を正確に覚える
- 削除クエリの作成:「削除」ボタンへの切り替え→アスタリスク(*)と条件フィールドの両方をグリッドに追加する2段階の操作。アスタリスクを忘れると「From」行が表示されずエラーになる
- 追加クエリの作成:「追加」ボタン→追加先テーブルの指定ダイアログ→「追加先」行でのフィールド対応確認。フィールド名が異なる場合の手動対応も練習しておく
- テーブル作成クエリの作成:「テーブルの作成」ボタン→テーブル名入力ダイアログ→フィールド設定→実行。作成したテーブルがナビゲーションウィンドウに表示されることを確認するところまでが操作の完結
- 確認ダイアログへの対応:試験では実行後に確認ダイアログが表示される。「はい」をクリックして実際にレコードが変更されたことを確認するところまでが採点対象
MOS試験の出題傾向別チェックリスト
| 出題領域 | 確認すべき操作 | 難易度 |
|---|---|---|
| 更新クエリの作成と実行 | 「更新」ボタン→「レコードの更新」欄に式入力→「実行」→確認ダイアログ「はい」 | ★★☆ |
| 削除クエリの作成と実行 | 「削除」ボタン→*と条件フィールドを追加→条件入力→実行 | ★★☆ |
| 追加クエリの作成と実行 | 「追加」ボタン→追加先テーブル指定→フィールド対応確認→実行 | ★★★ |
| テーブル作成クエリの作成 | 「テーブルの作成」ボタン→テーブル名入力→フィールド設定→実行 | ★★☆ |
| 抽出条件の記述 | 文字列はダブルクォート、日付はシャープ(#)、NULL判定はIs Null/Is Not Null | ★★★ |
MOS試験ではクエリを保存してから実行するケースと実行するだけのケースの両方が出ます。問題文の指示を正確に読み、「実行して保存」「保存して閉じる」のどちらが求められているかを確認してから操作を進めてください。
まとめ:アクションクエリ4種を使い分けてAccessの業務自動化を実現する
本記事のポイントをまとめます。
- 更新クエリ(UPDATE):「クエリデザイン」タブ→「更新」ボタンで切り替え。「レコードの更新」欄に計算式や固定値を入力し、「抽出条件」欄で対象レコードを絞り込む
- 削除クエリ(DELETE):「削除」ボタンで切り替え。アスタリスク(*)と条件フィールドの2つをグリッドに追加してから抽出条件を設定する
- 追加クエリ(INSERT INTO):「追加」ボタンで切り替え→追加先テーブルを指定ダイアログで選択→「追加先」行でフィールドの対応を確認する
- テーブル作成クエリ(SELECT INTO):「テーブルの作成」ボタンで切り替え→新テーブル名を指定→実行するたびに同名テーブルを上書きする点に注意
- 実行前の安全3ステップ:①バックアップ取得→②選択クエリで件数確認→③テスト用コピーで試実行。確認ダイアログの件数が想定と合っていることを確認してから「はい」をクリック
- 参照整合性エラー:削除クエリで親テーブルを削除する前に子テーブルのレコードを先に削除するか、「関連フィールドの連鎖削除」を設定しておく
- MOS試験対策:更新・削除・追加・テーブル作成の4種すべてでボタン→設定→実行の操作経路を練習する。抽出条件の記述(文字列/日付/NULL)の書き分けを確実にする
アクションクエリを使いこなすと、これまで手作業で行っていたデータの更新・削除・移動処理を自動化できます。繰り返し実行する定型処理はクエリとして保存し、Accessのマクロやフォームのボタンと組み合わせることで、さらに効率的な業務データベースが構築できます。MOS試験対策としては4種類の切り替え手順と抽出条件の書き方を繰り返し練習することが、最短の得点アップ策です。
