「Accessのクエリって難しそう」と感じていませんか。Accessのクエリは「テーブルに保存されたデータを目的に応じて取り出し・加工・集計する」仕組みで、データベース操作の中核を担う最重要機能です。クエリを使いこなせば、数千件のデータから特定の条件に合う情報だけを瞬時に抽出したり、部門別・月別の売上合計を自動集計したり、条件に合う全レコードを一括更新したりといった作業を数クリックで完了できます。本記事ではAccessのクエリを4種類(選択クエリ・集計クエリ・クロス集計クエリ・アクションクエリ)に分けてデザインビューでの操作手順から抽出条件の書き方・テーブル結合・SQLビューの読み方まで2026年最新版で体系的に解説します。MOS Access 365試験の出題パターンと対策も詳しく説明するので試験勉強にも役立ててください。
Accessのクエリとは何か(基本概念と種類)
クエリがデータベース操作を劇的に効率化する仕組み
Accessにおけるクエリとは「テーブルのデータに対して実行する問い合わせ・操作の定義」です。Excelであれば数万行のデータをフィルタリングして必要な行だけを抽出したり、SUMIF関数で条件付き集計をしたりしますが、これと同じことをAccessではクエリで実現します。クエリはテーブル本体のデータを変更せず(アクションクエリを除く)、元のデータを保ちながら必要な情報を動的に取り出す点が特徴です。
クエリを使う主なメリットは3つあります。第一に、毎回同じ条件でフィルタリング・集計を繰り返す作業をクエリとして保存しておけば、次回以降はクエリをダブルクリックするだけで最新データを対象にした結果を即座に確認できること。第二に、複数のテーブルをリレーションシップでつないで横断的な情報を一覧表示できること。第三に、フォームやレポートのデータソースとしてクエリを設定することで、フォーム・レポートを開くたびに最新データが反映されること。テーブルとクエリの組み合わせがAccessデータベース設計の基本構造です。
Accessクエリの4つの種類と使い分け
Accessのクエリは大きく4種類に分類されます。①選択クエリは最も基本的なクエリで、テーブルから特定のフィールドを選んで条件に合うレコードを抽出し、結果を一覧表示します。②集計クエリは選択クエリに「グループ化」や「合計・件数・平均」などの集計関数を追加して数値を集計する機能です。③クロス集計クエリは行と列の2軸で集計結果を表形式にまとめるクエリで、Excelのピボットテーブルに相当します。④アクションクエリはレコードを実際に変更・追加・削除する操作型クエリです(更新クエリ・追加クエリ・削除クエリ・テーブル作成クエリの4種が含まれます)。
用途別の使い分けの目安を説明します。「条件に合うデータを確認したい・フォームやレポートに表示したい」→選択クエリ。「月別合計・担当者別件数などの集計をしたい」→集計クエリ。「縦横2軸の集計表が必要」→クロス集計クエリ。「特定条件のレコードをまとめて修正・削除したい」→アクションクエリ。最初はすべて選択クエリから作り始め、集計が必要になったら集計クエリに変換するという進め方が分かりやすいです。
クエリとテーブルの違い(ビューの概念)
初学者がよく混乱するのがクエリとテーブルの違いです。テーブルはデータを実際に格納するオブジェクトです。一方、選択クエリの実行結果はデータを保持しているように見えますが、実際には「クエリを実行するたびにその時点のテーブルデータを参照して一時的に生成される仮想の表(ビュー)」です。クエリの結果シートを閉じてもテーブルのデータは変わらず、クエリを再度開けば最新のデータで結果が生成されます。
ただし選択クエリの結果シート上でセルを直接編集すると、元テーブルのデータが変更されます。複数テーブルの結合クエリや集計クエリでは編集不可の場合があり、その場合はセルがグレーアウトされます。編集可否の基準を簡単にまとめると、1つのテーブルのみを使う選択クエリは基本的に編集可能、集計クエリや複数テーブルの特定の結合パターンは編集不可になります。データの整合性を守るためにも意図しない編集を防ぐ設定(クエリのプロパティで「レコードセット」を変更不可に設定)を活用してください。
選択クエリの作成と抽出条件の書き方
デザインビューで選択クエリを作成する基本手順
選択クエリをデザインビューで作成する手順を順番に説明します。①「作成」タブの「クエリ デザイン」ボタンをクリックします。②「テーブルの表示」ダイアログが開くので、クエリに使用するテーブルを選んで「追加」ボタンをクリックし、使用するテーブルをすべて追加したら「閉じる」を押します。③上部のテーブル一覧(フィールドリスト)から、抽出・表示したいフィールド名をダブルクリックすると、下部のデザイングリッドにフィールドが追加されます。④「実行」ボタン(赤い!マーク)をクリックするとクエリ結果が表示されます。⑤クイックアクセスツールバーの保存ボタンでクエリを名前を付けて保存します。
デザイングリッドの各行の役割を確認しておきます。「フィールド」行はどのフィールドを表示するか。「テーブル」行はそのフィールドがどのテーブルのものか。「並べ替え」行は昇順・降順・なしの設定。「表示」行のチェックボックスはクエリ結果に表示するかどうか(チェックなしにすると抽出条件に使いながら結果には表示しない)。「抽出条件」行と「または」行は後述する抽出条件の入力場所です。フィールドの順序はデザイングリッド上でドラッグして変更できます。
抽出条件の書き方(数値・文字列・日付・ワイルドカード)
抽出条件(WHERE条件)はデザイングリッドの「抽出条件」行に記述します。数値の条件は「>=1000」「<5000」のように比較演算子を直接入力します。文字列の条件は「"東京"」のようにダブルクォーテーションで囲みますが、Accessは入力後に自動的にクォーテーションを付ける仕様のため半角の東京と入力するだけでも構いません。日付の条件は「#2026/01/01#」のように#で囲みます。Accessは日付の#囲みも自動補完しますが、年月日の区切りはスラッシュ(/)を使います。
ワイルドカードを使った部分一致検索はLike演算子で行います。「Like “東京*”」は東京で始まる文字列、「Like “*部”」は部で終わる文字列、「Like “*営業*”」は営業を含む文字列に一致します。Accessのワイルドカードは「*」(0文字以上の任意の文字列)と「?」(任意の1文字)です(Excelの「*」「?」と同じ役割ですがSQL標準では「%」と「_」を使う点に注意)。Between演算子を使うと範囲指定が簡潔に書けます。「Between #2026/01/01# And #2026/03/31#」は2026年1月1日~3月31日の期間を指定します。
複数条件の指定方法を整理します。AND条件(すべての条件が成立)は同じ「抽出条件」行に複数フィールドの条件を並べて記述します。OR条件(いずれかの条件が成立)は「抽出条件」行と「または」行に分けて条件を入力します。同一フィールドのOR条件は「”東京” Or “大阪”」とOr演算子で1行に書くこともできます。Not演算子で除外条件も設定できます。「Not “東京”」は東京以外のレコードを抽出します。Is Null / Is Not Nullはフィールドが空かどうかを判定する条件で、未入力レコードの抽出によく使います。
複数テーブルの結合(JOIN)クエリの設定
2つ以上のテーブルを横断してデータを取り出すには、テーブル間をリレーションシップでつないだ結合クエリを使います。デザインビューに複数テーブルを追加すると、あらかじめ設定されたリレーションシップが結合線として自動表示されます。この結合線が内部結合(INNER JOIN)の設定で、両方のテーブルに一致するレコードのみ表示されます。
結合の種類は結合線をダブルクリックして変更できます。「1のオプション」は内部結合(一致するレコードのみ)、「2のオプション」は左外部結合(左テーブルの全レコード+右テーブルの一致分)、「3のオプション」は右外部結合(右テーブルの全レコード+左テーブルの一致分)です。例えば受注テーブルと顧客テーブルを結合するとき、受注がない顧客も一覧に含めたい場合は左外部結合を選択します。外部結合を使うと左テーブル(または右テーブル)にのみ存在するレコードも結果に含まれ、対応するフィールドはNull(空)で表示されます。
集計クエリで数値を集計・分析する
集計クエリの作成手順(グループ化と集計関数)
集計クエリは選択クエリをベースに「集計」機能をONにして作成します。デザインビューで「クエリ ツール デザイン」タブ(またはデザインタブ)の「集計」ボタン(Σマーク)をクリックすると、デザイングリッドに「集計」行が追加されます。各フィールドの「集計」行には「グループ化」「合計(Sum)」「件数(Count)」「平均(Avg)」「最大値(Max)」「最小値(Min)」などのオプションが表示されます。
集計クエリの基本的な考え方は「グループ化するフィールド」と「集計するフィールド」の2種類に分けることです。例えば担当者別の売上合計を出したい場合、担当者フィールドは「グループ化」、売上金額フィールドは「合計(Sum)」に設定します。グループ化したフィールドの値の組み合わせが集計の単位になります。担当者フィールドと月フィールドの両方をグループ化にすると「担当者×月」ごとの集計になります。集計行を「Where」にするとそのフィールドの値を抽出条件として使用しながら集計結果には表示しないフィールドを設定できます。
主要な集計関数の使い方と注意点
Accessで使える主要な集計関数の動作と注意点をまとめます。Sum(合計)は指定フィールドの数値合計を計算します。Null(空)のレコードはゼロとして扱われません(無視されます)。Null混じりのフィールドでSumを使う場合はNz関数「Nz([売上金額],0)」でNullをゼロに変換してからSumを適用する計算フィールドを使うと正確な結果になります。
Count(件数)は指定フィールドの値が入力されているレコード数をカウントします。Nullのレコードはカウントされません。全件数をカウントするには「Count(*)」を使うか、必ず値が入っているフィールド(主キーなど)を指定します。Avg(平均)もNullを除外して計算します。Max(最大値)・Min(最小値)は数値だけでなく日付・文字列にも使え、文字列は辞書順で最大・最小を判定します。First(最初のレコードの値)・Last(最後のレコードの値)も集計関数として使えますが、並べ替えを事前に行っていない場合は結果が不定になる場合があります。
クロス集計クエリで2軸の集計表を作る
クロス集計クエリはExcelのピボットテーブルに相当する機能で、行見出し・列見出し・集計値の3要素で表形式の集計表を生成します。作成手順は「作成」タブの「クエリウィザード」→「クロス集計クエリウィザード」から始めるのが最もシンプルです。ウィザードで①集計対象のテーブル(またはクエリ)を選択、②行見出しにするフィールドを最大3つ選択、③列見出しにするフィールドを1つ選択、④集計値(SumやCount等)とそのフィールドを選択、という順に設定します。
クロス集計クエリをデザインビューで手動作成する場合は、集計クエリを作成した後に「クエリの種類」を「クロス集計」に変更します。デザイングリッドに「集計」行と「クロス集計」行が追加され、各フィールドを「行見出し」「列見出し」「値」のいずれかに設定します。クロス集計クエリの制限として、列見出しの値が事前に不明な場合(動的に増える場合)はクエリ実行のたびに列数が変わります。固定した列見出しを設定するには「クエリのプロパティ」の「列見出し」欄に固定値を入力します。
アクションクエリでデータを一括操作する
更新クエリで特定条件のデータを一括変更する
更新クエリは抽出条件に合うレコードの特定フィールドを一括で変更します。例えば「都道府県フィールドが”東京都”のレコードの地区コードフィールドを”TK”に更新する」「単価が1000円未満の商品の価格を一律10%引きにする」といった操作が一回の実行で完了します。作成手順はまず選択クエリとして作り、対象レコードが正しく抽出されていることを確認してから「クエリの種類」を「更新クエリ」に変更します。デザイングリッドに「レコードの更新」行が追加されるので、更新したい値または数式を入力します。
更新クエリの実行は元に戻せないため(Ctrl+Zは使えません)、必ず事前にテーブルをバックアップしてから実行してください。実行前に選択クエリとして確認し、更新対象のレコード数が意図した件数であることを「実行」→確認ダイアログの件数表示で確認する習慣をつけてください。更新クエリを実行すると「○件のレコードが更新されます」という確認ダイアログが表示されます。本番データへの適用前に別の環境でテストすることを強く推奨します。
追加クエリでデータを別テーブルにコピーする
追加クエリは選択クエリの結果を別のテーブルに追加(INSERT)します。「過去データをアーカイブテーブルに移す」「複数拠点のデータを一つの集約テーブルに統合する」などの用途に使います。作成手順は選択クエリを作成後「クエリの種類」を「追加クエリ」に変更し、追加先のテーブルを指定します。デザイングリッドに「レコードの追加先」行が表示され、ソースのフィールドと追加先テーブルのフィールドの対応関係を設定します。
追加クエリの注意点を3つ挙げます。第一に、追加先テーブルに主キーが設定されている場合、重複するキー値を追加しようとするとエラーが発生します。第二に、追加先テーブルに必須フィールド(Required=はい)がある場合、ソースにその値がないとレコードが追加されません。第三に、数値型・日付型などデータ型が一致しないフィールドへの追加は型変換エラーの原因になります。エラーが発生した場合は追加されなかったレコード数がダイアログで表示され、Accessのエラーテーブルに記録されます。
削除クエリで条件に合うレコードを一括削除する
削除クエリは抽出条件に合うレコードを一括で削除します。「期限切れのデータを削除する」「テスト用に入力したレコードをまとめて除去する」といった場面で活用します。作成手順は選択クエリで削除対象レコードを抽出→「クエリの種類」を「削除クエリ」に変更→実行の順です。削除クエリのデザイングリッドには「削除」行が追加され「From」(元テーブルのフィールド)または「Where」(削除条件のみに使うフィールド)を設定します。
削除クエリの実行も元に戻せないため、事前バックアップは必須です。また参照整合性が設定されたリレーションシップでは、子テーブルに関連レコードが存在する親テーブルのレコードを削除しようとするとエラーが発生します(連鎖削除を設定している場合は子レコードも自動的に削除されます)。削除クエリ実行前は必ず選択クエリで対象件数を確認してください。誤って全件削除することを防ぐために、抽出条件を設定せずに削除クエリを実行するとAccessが警告を表示しますが、それでも実行はできてしまいます。常に条件を設定してから実行する運用ルールを徹底してください。
SQLビューで直接SQL文を確認・編集する
SQLビューへの切り替えとSELECT文の基本構造
AccessのクエリはデザインビューでGUI操作するだけでなく、SQLビューでSQL文を直接確認・編集することができます。SQLビューへの切り替えは「ホーム」タブの「表示」ドロップダウンから「SQLビュー」を選択するか、デザインビューの左上のボタンをクリックして切り替えます。SQLビューを確認することで、デザインビューの操作がどのようなSQL文に変換されているかを理解できます。
AccessのSELECT文の基本構造を確認します。「SELECT フィールド名1, フィールド名2 FROM テーブル名 WHERE 条件 ORDER BY フィールド名;」が最も基本的な形です。フィールド名にスペースや日本語が含まれる場合は角括弧で囲みます(例:[担当者名])。「SELECT *」と書くとテーブルのすべてのフィールドを取得します。デザインビューの「表示」チェックボックスをOFFにしたフィールドはSQLに「WHERE」句の条件フィールドとして現れますが、SELECT句には含まれません。SQLビューの理解はMOS Access試験の応用レベルおよびVBAでのクエリ操作にも直結するスキルです。
WHERE句・ORDER BY句・GROUP BY句のSQL記法
WHERE句は抽出条件を記述します。「WHERE [担当者名]=”山田” AND [売上金額]>=100000」のようにAND・OR・NOT演算子で複数条件を結合します。デザインビューで入力したLike条件は「WHERE [商品名] Like “電子*”」のようにSQLに変換されます。Between条件は「WHERE [受注日] Between #2026/01/01# And #2026/03/31#」と表示されます。
ORDER BY句は並べ替えを指定します。「ORDER BY [売上金額] DESC」は売上金額の降順(大→小)、「ORDER BY [受注日] ASC」は昇順(古→新)です。複数フィールドの並べ替えは「ORDER BY [担当者名] ASC, [受注日] DESC」のようにカンマで区切ります。GROUP BY句は集計クエリで使われ「GROUP BY [担当者名]」のように集計の単位フィールドを指定します。HAVING句はGROUP BYの後で集計結果に対する絞り込み条件を追加します(例:「HAVING Sum([売上金額])>=500000」で合計売上50万円以上のグループのみ表示)。HAVINGはWHEREが個々のレコードに対する条件であるのに対して集計後の結果行に対する条件という違いがあります。
MOS Access試験でクエリが出題される場面
MOS Access 365試験のクエリ出題パターン
MOS Access 365試験においてクエリは全体問題の25~35%を占める最頻出分野です。試験はプロジェクト形式で出題され、1プロジェクトに3~7個のタスクが含まれます。クエリ関連のタスクは「既存のクエリを編集して特定の条件を追加する」「新しいクエリを作成してデータを抽出する」「集計クエリを使って合計・件数を求める」「アクションクエリでデータを更新・削除する」といったパターンが中心です。
頻出の具体的なタスク例を列挙します。「クエリに抽出条件を追加して特定の値を持つレコードのみを表示する」「フィールドを追加・削除してクエリの結果列を変更する」「集計クエリを使って部門ごとの件数を求める」「クロス集計クエリウィザードを使って月別集計表を作成する」「更新クエリを実行して特定フィールドの値を一括変更する」「デザインビューでフィールドの並べ替えを昇順・降順に設定する」の6パターンが特に頻出です。試験のタスク指示文には「昇順」「降順」「特定の値以上」「含む」等の条件が明記されるので指示を正確に読んで設定してください。
試験でのよくある操作ミスと対策
MOS Access試験のクエリタスクでよく見られるミスを確認します。第一のミスは抽出条件の入力後に「Enter」を押し忘れてデザインビューを閉じてしまうパターンです。条件を入力したら必ずEnterまたはTabで確定してから保存してください。確定前にウィンドウを閉じると条件が保存されない場合があります。
第二のミスはLike条件のワイルドカードです。Accessのワイルドカードは「*」(0文字以上)と「?」(1文字)ですが、SQLビューモードでの入力は「%」と「_」を使う必要がある場合があります。試験環境ではデザインビューで入力して「*」を使う方法が安全です。第三のミスは集計クエリで「集計」ボタンを押し忘れることです。「集計」ボタンを押さないと「グループ化」設定ができず集計クエリになりません。デザイングリッドに「集計」行が表示されているかを必ず確認してください。第四のミスはアクションクエリの「実行」後に保存を忘れることです。アクションクエリ自体の保存(クエリオブジェクトの保存)はデータ変更の実行とは別の操作です。「実行」でデータを変更した後、クエリ定義の保存も忘れずに行ってください。
試験対策として最も効果的な練習方法は、実際にサンプルデータベースを使って各クエリタイプを繰り返し作成することです。デザインビューとSQLビューを行き来しながら、自分が設定した条件がどのようなSQL文に変換されているかを確認する習慣をつけると理解が深まります。Microsoftが提供するAccess学習用サンプルデータベース「Northwind」を使った練習が特に推奨されます。
Accessクエリ設計のよくある質問(FAQ)
- Q. クエリを実行するたびに「パラメーターの入力」ダイアログが表示されるのはなぜですか?
- A. フィールド名・テーブル名・関数名のスペルミスが最も多い原因です。Accessが認識できない名前をパラメーター(変数)として解釈するためダイアログが表示されます。デザイングリッドのフィールド名を確認し、テーブル名とフィールド名が正しいかチェックしてください。日本語フィールド名を使っている場合は角括弧([ ])で囲むと確実です。
- Q. 選択クエリの結果を編集しようとするとセルがグレーになって入力できません。
- A. 複数テーブルの結合クエリや集計クエリでは、データの更新可否がAccessによって自動判定されます。主に「集計関数を使っている」「DISTINCT(ユニーク値のみ)設定をしている」「外部結合の外側テーブルのフィールド」の場合に編集不可になります。直接テーブルで編集するか、更新クエリを使ってください。
- Q. 削除クエリを実行したら「レコードを削除できません」というエラーが出ました。
- A. 参照整合性が設定されたリレーションシップの親テーブルのレコードを削除しようとしたときに発生します。子テーブルに関連レコードが存在するためです。対処法は①子テーブルのレコードを先に削除する②リレーションシップで「連鎖削除」を有効にする③リレーションシップを一時的に解除して削除後に再設定するの3つです。本番データを扱う場合は①の子→親の順で削除するのが最も安全です。
- Q. Access 2019とAccess 365でクエリの操作に違いはありますか?
- A. 基本的なクエリ操作はほとんど同じです。主な違いはAccess 365では一部のUI配置が更新されている点と、定期的な機能追加がある点です。MOS試験のバージョンに合わせた環境で練習することを推奨します。試験バージョンはMOS Access 365(サブスクリプション版)とMOS Access 2019(パッケージ版)が別試験として設定されています。
まとめ:Accessクエリ設計の学習ロードマップ
Accessのクエリ設計を習得するための学習順序を整理します。第一段階は選択クエリの作成と抽出条件の設定です。デザインビューでテーブルを追加し、フィールドを選択して基本的な等値条件・範囲条件・Like条件を入力する操作をスムーズに行えるようにします。第二段階は複数テーブルの結合クエリです。内部結合と外部結合の違いを理解し、リレーションシップを確認しながら結合クエリを正確に設定できるようにします。第三段階は集計クエリとクロス集計クエリです。グループ化と集計関数の組み合わせを練習し、集計結果に対する絞り込みHAVINGの使い方まで習得します。第四段階はアクションクエリです。更新・追加・削除の各アクションクエリを安全に実行するための事前確認とバックアップの手順を身につけます。
MOS Access 365試験を目標にしている場合は、上記の第一段階と第二段階を確実に固めることが最優先です。クエリはAccessの機能の中でも出題比率が最も高い分野であり、ここで安定して得点できれば合格ラインに大きく近づきます。本記事で紹介した各クエリタイプを実際にサンプルデータベースで繰り返し操作し、手順を体で覚えることが合格への最短ルートです。
