【完全保存版】Access SQLの基本解説と実践例まとめ

Accessで業務システムを作るうえで、SQL(クエリ)は避けて通れない重要なスキルです。
しかし「難しい」「実務でどう書けばいいかわからない」と感じる方も多いでしょう。
本記事ではAccess SQLの基本解説から現場でそのまま使える実践例までを分かりやすく解説します。
- Access SQLの基本構文
- 抽出・集計・更新・削除の書き方
- JOINやサブクエリの実務例
- VBAと連携したSQLの活用方法
SQLとは
SQL(Structured Query Language)とは、データベースを操作するための専用言語です。
データの「検索・追加・更新・削除」といった処理を、命令文として記述できます。
AccessではテーブルやクエリをGUI操作で作成できますが、内部的にはすべてSQLで処理されています。
そのため、SQLを理解することでより柔軟で高度なデータ操作が可能になります。
AccessでSQLを使うメリット
SQLを使うメリット
Accessでは画面操作だけでもデータ処理ができますが、SQLを使うことでより高速で柔軟な処理が可能になります。
業務システムを本格的に作るならSQLの習得は大きな武器になります。
主なメリットは次のとおりです。
- 複雑な条件検索・集計が簡単に書ける
- 大量データでも高速に処理できる
- 集計・分析処理が楽になる
- VBAと連携して自動化できる
SQLを使うと「何が変わる」のか
クエリデザイン画面でも条件設定は可能ですがSQLを直接記述できるようになると、
より細かい条件指定や複雑な集計処理がスムーズに行えます。
例えば、次のような処理もSQLならシンプルなコードで実現できます。
- 複数テーブルを結合して一覧を作成する
- 条件ごとに集計結果を出し分ける
- サブクエリを使った高度な抽出を行う
画面操作に頼るよりも処理の仕組みを理解しながらデータ操作ができる点が大きな違いです。
Access SQLの基本構文
SELECT(取得する列を指定)
SELECTは「どの列を取得するか」を指定する命令です。
SQLの中で最も基本となる部分です。
SELECT 商品名, 金額
FROM 売上データ;この例では、「商品名」と「金額」の列だけを取得しています。
すべての列を取得したい場合は、アスタリスク(*)を使用します。
SELECT *
FROM 売上データ;ポイント
実務では必要な列だけを指定するほうが処理効率が良くなります。
FROM(テーブルを指定)
FROMは「どのテーブルからデータを取得するか」を指定します。
SELECT *
FROM 売上データ;複数のテーブルを扱う場合は、JOINと組み合わせて使用します。
FROMはデータの取得元を決める重要な部分です。
WHERE(条件指定)
WHEREは「どんな条件のデータを取得するか」を指定します。
SELECT *
FROM 売上データ
WHERE 金額 >= 100000;この例では、金額が10万円以上のデータのみを抽出しています。
文字列の場合はシングルクォーテーションで囲みます。
WHERE 担当者 = '田中'複数条件も指定できます。
WHERE 金額 >= 100000 AND 担当者 = '田中'ORDER BY(並び替え)
ORDER BYは取得したデータを並び替えるために使用します。
SELECT *
FROM 売上データ
ORDER BY 金額;昇順(小さい順)がデフォルトです。
降順にしたい場合は DESC を指定します。
ORDER BY 金額 DESC;実務では、日付順・金額順などで並び替える場面が多くあります。
GROUP BY(グループ化)
GROUP BYは、データをグループ単位でまとめるために使用します。
主に集計関数(SUMやCOUNTなど)と組み合わせて使います。
SELECT 担当者, SUM(金額) AS 合計金額
FROM 売上データ
GROUP BY 担当者;この例では、担当者ごとの売上合計を算出しています。
GROUP BYを使う場合、SELECTに書く列は「集計対象」または「グループ化している列」である必要があります。
HAVING(集計条件)
HAVINGは、GROUP BYで集計した結果に対して条件を指定するために使います。
SELECT 担当者, SUM(金額) AS 合計金額
FROM 売上データ
GROUP BY 担当者
HAVING SUM(金額) >= 500000;この例では、売上合計が50万円以上の担当者だけを表示します。
ポイント
WHEREは「集計前」に条件をかけるHAVINGは「集計後」に条件をかける
よく使うSQL文の実践例
ここでは、実務でよく使われる代表的なSQL文を紹介します。
Accessで業務アプリを作る際に頻出する処理ばかりです。
条件を指定してデータを抽出する(SELECT + WHERE)
例えば「2025年1月の売上データだけを抽出したい」場合
SELECT *
FROM 売上データ
WHERE 売上日 BETWEEN #2025/01/01# AND #2025/01/31#;Accessでは、日付は「#」で囲むのが特徴です。
特定の担当者のデータを抽出する例
SELECT 商品名, 金額
FROM 売上データ
WHERE 担当者 = '田中';実務では「特定期間」「特定担当者」「一定金額以上」などの条件抽出が頻繁に使われます。
データを集計する(GROUP BY + 集計関数)
担当者ごとの売上合計を出す例
SELECT 担当者, SUM(金額) AS 合計金額
FROM 売上データ
GROUP BY 担当者;件数を数える場合
SELECT COUNT(*) AS 件数
FROM 売上データ;よく使う集計関数は以下の通りです。
- SUM(合計)
- COUNT(件数)
- AVG(平均)
- MAX(最大値)
- MIN(最小値)
データを更新する(UPDATE)
特定条件のデータを一括で更新できます。
例:消費税率を変更する
UPDATE 商品マスタ
SET 税率 = 0.1
WHERE 税率 = 0.08;例:売上金額を一括値上げ
UPDATE 売上データ
SET 金額 = 金額 * 1.1;※UPDATEは影響範囲が大きいため、実行前に必ずバックアップを取るのがおすすめです。
データを削除する(DELETE)
不要データを一括削除する場合:
DELETE FROM 売上データ
WHERE 売上日 < #2024/01/01#;古いデータの整理やテストデータ削除に使われます。
注意点
DELETEは元に戻せないため、特に注意が必要です。
データを追加する(INSERT)
新しいデータを追加する場合
INSERT INTO 商品マスタ (商品名, 金額)
VALUES ('新商品A', 5000);VBAと組み合わせて自動登録処理を作る場面で活躍します。
実務で役立つ応用テクニック
JOINで複数テーブルを結合する
実務では「売上データ+商品マスタ」のように、複数テーブルを組み合わせる処理がほぼ必須です。
SELECT 売上データ.売上日, 商品マスタ.商品名, 売上データ.金額
FROM 売上データ
INNER JOIN 商品マスタ ON 売上データ.商品ID = 商品マスタ.商品ID;ポイント
INNER JOIN:一致するデータだけ取得LEFT JOIN:左側のデータはすべて取得
業務システムでは「トランザクション+マスタ」の結合が頻出です。
JOINを理解すると実務レベルに一気に近づきます。
サブクエリで高度な抽出を行う
サブクエリとは、SQLの中に別のSQLを書く方法です。
例えば「平均以上の売上だけ抽出する」場合
SELECT *
FROM 売上データ
WHERE 金額 >= (
SELECT AVG(金額)
FROM 売上データ
);ポイント
- 集計結果を条件に使える
- 「平均以上」「最大値のデータ」などの抽出に便利
分析系の処理ではよく使われるテクニックです。
VBAと組み合わせて自動化する
SQLはVBAから実行できます。これができると業務自動化の幅が一気に広がります。
CurrentDb.Execute "UPDATE 売上データ SET 金額 = 金額 * 1.1"活用例
- ボタン1つで一括更新
- バッチ処理
- トランザクション処理と組み合わせた安全な更新
SQL単体で終わらせずVBAと連携させることで、実務レベルの業務アプリが作れるようになります。
まとめ
今回はAccess SQLの基本解説と実践例まとめについて解説しました。
SQLの基本を知ることでAccessでのシステム開発の幅を広げることができます。
まずは基本的なSQLから習得し書き方を覚えることから始めてみましょう。

コメント