データベース
SQL基礎:SELECT・WHERE・JOINの使い方【基本情報技術者試験対策】
公開日: 2026年5月6日
基本情報技術者試験の科目A・科目Bでは、SQL(Structured Query Language)の問題が必ず出題されます。SELECT文・WHERE句・JOIN・集計関数など、基本的な構文をしっかり理解しておきましょう。
この記事では、試験に出る主要なSQL構文を例題つきで解説します。
基本的なSELECT文
テーブルからデータを取得するには SELECT 文を使います。
SELECT 列名1, 列名2
FROM テーブル名
WHERE 条件;
例:社員テーブルから部署が「営業部」の社員名を取得
社員テーブル(employees)
| id | name | dept | salary |
| 1 | 山田太郎 | 営業部 | 350000 |
| 2 | 鈴木花子 | 開発部 | 420000 |
| 3 | 田中一郎 | 営業部 | 380000 |
SELECT name
FROM employees
WHERE dept = '営業部';
-- 結果: 山田太郎、田中一郎
ORDER BY・LIMIT
SELECT name, salary
FROM employees
ORDER BY salary DESC -- 降順(高い順)
LIMIT 2; -- 上位2件のみ
-- 結果: 鈴木花子(42万)、田中一郎(38万)
集計関数(GROUP BY)
データをグループ化して集計するには GROUP BY を使います。
SELECT dept, COUNT(*) AS 人数, AVG(salary) AS 平均給与
FROM employees
GROUP BY dept;
-- 結果:
-- 営業部 | 2 | 365000
-- 開発部 | 1 | 420000
主な集計関数:
| 関数 | 意味 |
| COUNT(*) | 行数を数える |
| SUM(列) | 合計を求める |
| AVG(列) | 平均を求める |
| MAX(列) | 最大値を求める |
| MIN(列) | 最小値を求める |
HAVING句:GROUP BY の後でさらに条件を絞りたい場合は WHERE ではなく HAVING を使います。例:HAVING COUNT(*) >= 2
JOIN(テーブルの結合)
複数のテーブルを結合してデータを取得します。試験で最も頻出なのが INNER JOIN と LEFT JOIN の違いです。
INNER JOIN(内部結合)
両方のテーブルに一致するデータのみ取得。
SELECT e.name, d.dept_name
FROM employees e
INNER JOIN departments d ON e.dept_id = d.id;
LEFT JOIN(左外部結合)
左テーブルの全行を取得。右テーブルに一致しない場合は NULL になる。
SELECT e.name, d.dept_name
FROM employees e
LEFT JOIN departments d ON e.dept_id = d.id;
-- 部署が未設定の社員も結果に含まれる(dept_name は NULL)
| 種類 | 取得する行 |
| INNER JOIN | 両テーブルで一致した行のみ |
| LEFT JOIN | 左テーブルの全行+右テーブルの一致行(なければNULL) |
| RIGHT JOIN | 右テーブルの全行+左テーブルの一致行(なければNULL) |
副問合せ(サブクエリ)
SELECT文の中に別のSELECT文を入れることができます。
-- 平均給与より高い給与の社員を取得
SELECT name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
SQL文の実行順序(重要)
試験では「SQL文はどの順序で処理されるか」が問われることもあります。
- FROM(テーブルの選択)
- WHERE(行の絞り込み)
- GROUP BY(グループ化)
- HAVING(グループの絞り込み)
- SELECT(列の選択)
- ORDER BY(並び替え)
試験対策まとめ
- SELECT〜FROM〜WHERE の基本構文を確実に書ける
- GROUP BY と HAVING の使い分けを理解する
- INNER JOIN(一致のみ)と LEFT JOIN(左テーブル全行)の違いを押さえる
- 集計関数(COUNT・SUM・AVG・MAX・MIN)を覚える
- 副問合せ(サブクエリ)の書き方を理解する
← 記事一覧に戻る