データベース

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)
idnamedeptsalary
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 JOINLEFT 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文はどの順序で処理されるか」が問われることもあります。

  1. FROM(テーブルの選択)
  2. WHERE(行の絞り込み)
  3. GROUP BY(グループ化)
  4. HAVING(グループの絞り込み)
  5. SELECT(列の選択)
  6. ORDER BY(並び替え)

試験対策まとめ

SQLの理解を深めたら、過去問・AI演習で実力を確認しましょう。

科目A演習サイトで練習する

← 記事一覧に戻る