
【基本情報】SQL入門|SELECT・JOIN・GROUP BYをゼロから攻略
集計の結果を自分で確かめるなら:WHERE・GROUP BY・HAVINGの無料例題で、同じ表からどの行・グループが残るか練習できます。まずこの下の入門で命令の役割を確認し、次に結果表を紙へ書いてください。
基本情報技術者試験のデータベース分野で、避けて通れないのがSQLです。
SQLを見ると、
「SELECTはなんとなく分かるけど、WHEREやGROUP BYが混ざると分からない…」
「JOINが出てくると急に難しく感じる…」
という方も多いのではないでしょうか。
でも、基本情報で問われるSQLは、それぞれの命令が何をしているのかを順番に理解すれば、かなり読みやすくなります。
この記事では、
SELECT
FROM
WHERE
ORDER BY
DISTINCT
GROUP BY
HAVING
集約関数
JOIN
といった頻出ポイントを、SQL初心者向けにゼロから整理します。
⸻
1. そもそもSQLとは?
SQLは、
データベースを操作するための言語
です。
たとえば、ECサイトに次のような商品テーブルがあるとします。

このデータから、
「商品名だけ表示したい」
「1万円以上の商品だけ取り出したい」
「価格が高い順に並べたい」
といった操作をするときにSQLを使います。
⸻
2. まずはSELECTを覚える
SQLの基本中の基本がSELECT文です。
SELECT 商品名
FROM 商品;意味は、
商品テーブルから商品名を取得する
です。
SQLを見るときは、
SELECT → 何を表示する?
FROM → どこから取得する?
と考えましょう。
⸻
3. SELECTとFROM
基本形はこちらです。
SELECT 列名
FROM テーブル名;たとえば、
SELECT 商品名, 価格
FROM 商品;なら、

のように、指定した列だけ取得できます。
⸻
4. 「*」は全ての列
すべての列を取得したい場合は、
SELECT *
FROM 商品;と書きます。
* は、
すべての列
という意味です。
試験でも頻繁に登場するので覚えておきましょう。
⸻
5. WHEREで条件を指定する
次に重要なのがWHEREです。
WHEREは、
条件に一致する行だけを取り出す
ために使います。
たとえば、
SELECT 商品名, 価格
FROM 商品
WHERE 価格 >= 10000;とすると、
価格が10,000円以上の商品
だけ取得できます。
結果は、

となります。
⸻
6. WHEREで使う比較演算子
基本情報では比較演算子も重要です。

たとえば、
WHERE 価格 < 10000なら、
価格が10,000円未満
という意味です。
⸻
7. AND・OR・NOT
複数の条件を組み合わせることもできます。
AND
WHERE 価格 >= 5000
AND 価格 <= 30000両方の条件を満たすデータを取得します。
つまり、
5,000円以上かつ30,000円以下
です。
OR
WHERE カテゴリ = 'PC'
OR カテゴリ = '周辺機器'どちらかの条件を満たせばOKです。
NOT
WHERE NOT カテゴリ = 'PC'指定した条件ではないデータを取得します。
⸻
8. ORDER BYで並び替える
データを並び替えるときは、
ORDER BY
を使います。
SELECT 商品名, 価格
FROM 商品
ORDER BY 価格;基本は昇順です。
つまり、
3,000
8,000
30,000
120,000
のように小さい順になります。
⸻
9. ASCとDESC
並び順は次のように指定できます。

たとえば、
ORDER BY 価格 DESC;なら、
価格が高い順
になります。
120,000
30,000
8,000
3,000です。
覚え方は、
ASC → 小さい → 大きい
DESC → 大きい → 小さいでOKです。
⸻
10. DISTINCTで重複を除く
重複したデータを除きたい場合は、
DISTINCT
を使います。
SELECT DISTINCT カテゴリ
FROM 商品;元のデータに、
PC
周辺機器
周辺機器
周辺機器とあっても、結果は
PC
周辺機器となります。
つまり、
DISTINCT = 重複を除く
です。
⸻
11. SQLで重要な集約関数
ここから少しレベルアップします。
複数のデータをまとめて計算するときに使うのが集約関数です。
基本情報では次の5つを優先して覚えましょう。

⸻
12. COUNT
データの件数を数えるときは、
SELECT COUNT(*)
FROM 商品;とします。
商品が4件なら、
4が返されます。
COUNT = 数える
と覚えましょう。
⸻
13. SUM
合計を求める場合は、
SELECT SUM(価格)
FROM 商品;です。
価格の合計が求められます。
⸻
14. AVG
平均を求める場合は、
SELECT AVG(価格)
FROM 商品;です。
AVG = Average = 平均
なので覚えやすいですね。
⸻
15. MAXとMIN
最大値は、
SELECT MAX(価格)
FROM 商品;最小値は、
SELECT MIN(価格)
FROM 商品;です。
ここまでを整理すると、
COUNT → 件数
SUM → 合計
AVG → 平均
MAX → 最大
MIN → 最小です。
この5つはセットで覚えてしまいましょう。
⸻
16. GROUP BYとは?
SQL初心者がつまずきやすいポイントが、
GROUP BY
です。
GROUP BYは、
同じ値を持つデータをグループにまとめる
ために使います。
たとえば、

というデータがあるとします。
⸻
17. カテゴリごとの件数を求める
SELECT カテゴリ, COUNT(*)
FROM 商品
GROUP BY カテゴリ;すると、

となります。
イメージは、
PC
└ ノートPC
周辺機器
├ マウス
├ キーボード
└ モニターです。
つまり、
GROUP BY → グループに分けて集計する
と覚えると分かりやすいです。
⸻
18. GROUP BYと集約関数はセットで考える
GROUP BYは、
COUNT
SUM
AVG
MAX
MINなどと一緒に登場することが多いです。
たとえば、
SELECT カテゴリ, AVG(価格)
FROM 商品
GROUP BY カテゴリ;なら、
カテゴリごとの平均価格
を求めています。
問題文に、
「○○ごとの」と書かれていたら、GROUP BYを疑いましょう。
たとえば、
部署ごとの人数
商品カテゴリごとの平均価格
都道府県ごとの売上などです。
⸻
19. WHEREとHAVINGの違い
ここは基本情報でも重要です。
どちらも条件指定に使いますが、対象が違います。

たとえば、
SELECT カテゴリ, COUNT(*)
FROM 商品
GROUP BY カテゴリ
HAVING COUNT(*) >= 2;なら、
商品が2件以上あるカテゴリだけ表示する
という意味です。
⸻
20. WHEREとHAVINGをイメージで理解
処理のイメージは、
元データ
↓
WHERE
↓
必要な行だけ残す
↓
GROUP BY
↓
グループ化
↓
HAVING
↓
必要なグループだけ残すです。
ここはかなり重要。
WHERE → 行
HAVING → グループ
と覚えておきましょう。
⸻
21. JOINとは?
ここからSQLの大きな山場、
JOIN
です。
JOINは、
複数のテーブルを結合する
ために使います。
たとえば、
社員テーブル

部署テーブル

があります。
この2つを、
部署IDを使って結び付けます。
⸻
22. INNER JOIN
代表的なのが、
INNER JOIN(内部結合)
です。
SELECT 社員.氏名, 部署.部署名
FROM 社員
INNER JOIN 部署
ON 社員.部署ID = 部署.部署ID;結果は、

となります。
重要なのは、
ON 社員.部署ID = 部署.部署IDです。
これは、
どの列を使ってテーブル同士を結び付けるのか
を指定しています。
⸻
23. JOINを図で理解する
イメージすると、

と考えます。
JOINが苦手な場合は、
「共通している列はどれ?」
を最初に探すのがおすすめです。
⸻
24. INNER JOINとOUTER JOIN
結合にはいくつか種類があります。
まず押さえたいのは、
INNER JOIN
LEFT OUTER JOIN
RIGHT OUTER JOINです。
INNER JOIN
両方のテーブルに対応するデータがあるものだけ
取得します。
LEFT OUTER JOIN
左側のテーブルをすべて残す
結合です。
対応するデータが右側になくても、左側の行は残ります。
RIGHT OUTER JOIN
反対に、
右側のテーブルをすべて残す
結合です。
⸻
25. INNER JOINとLEFT JOINの違い
ここはイメージで覚えましょう。

LEFT JOINでは、対応するデータがなくても左側は残るのがポイントです。
⸻
26. NULLとは?
SQLでは、
NULL
も重要です。
NULLは、
値が存在しない・不明
という状態を表します。
ここで注意。
WHERE 列名 = NULLとは通常書きません。
NULLかどうか調べる場合は、
WHERE 列名 IS NULLを使います。
NULLではない場合は、
WHERE 列名 IS NOT NULLです。
⸻
27. LIKEで文字列を検索する
文字列のパターン検索には、
LIKE
を使います。
たとえば、
WHERE 商品名 LIKE 'ノート%'とすると、
「ノート」で始まる商品名
を検索できます。
% は、
0文字以上の任意の文字列
を表します。
たとえば、
LIKE '%PC%'なら、
途中に「PC」を含む文字列
を検索できます。
⸻
28. BETWEEN
範囲を指定するときには、
WHERE 価格 BETWEEN 5000 AND 30000のように書けます。
これは、
5,000以上30,000以下
という意味です。
⸻
29. IN
複数候補のいずれかに一致するか調べる場合は、
WHERE カテゴリ IN ('PC', '周辺機器')と書けます。
これは、
WHERE カテゴリ = 'PC'
OR カテゴリ = '周辺機器'に近い意味になります。
⸻
30. SQLは「書かれている順番」と「考える順番」が違う
SQLで混乱しやすいポイントです。
たとえば、
SELECT カテゴリ, COUNT(*)
FROM 商品
WHERE 価格 >= 5000
GROUP BY カテゴリ
HAVING COUNT(*) >= 2
ORDER BY COUNT(*) DESC;と書かれていたとします。
SQL上の記述は、
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BYですが、問題を理解するときは、
FROM
↓
WHERE
↓
GROUP BY
↓
HAVING
↓
SELECT
↓
ORDER BYのように、データがどう絞られ、まとめられていくかを考えると理解しやすくなります。
※厳密なDBMS内部の物理実行順序ではなく、SQLを学ぶ際の論理的な理解方法です。
⸻
31. SQL問題を解くときの5ステップ
SQL問題が出たら、いきなり選択肢を見るのではなく、次の順番で確認しましょう。
STEP1:どのテーブルを使う?
FROMを確認します。
STEP2:どの行を使う?
WHEREを確認します。
STEP3:グループ化する?
GROUP BYを確認します。
STEP4:何を表示する?
SELECTを確認します。
STEP5:どう並べる?
ORDER BYを確認します。
複数テーブルなら、
JOIN
ONも確認します。
⸻
32. JOIN問題の解き方
JOINが出たら、まず、
「どの列とどの列を結ぶ?」
を確認します。
たとえば、
FROM 社員
INNER JOIN 部署
ON 社員.部署ID = 部署.部署IDなら、
社員.部署ID
↓
結合
↑
部署.部署IDです。
テーブル全体を一気に理解しようとせず、
結合キーを先に探す
のがコツです。
⸻
33. GROUP BY問題の解き方
GROUP BYが出たら、
「何ごとに分ける?」
を考えます。
GROUP BY カテゴリなら、
カテゴリごと
です。
そのあと、
COUNT(*)
AVG(価格)
SUM(売上)などを確認します。
つまり、
GROUP BY
↓
何ごと?
集約関数
↓
何を計算する?です。
⸻
34. よくある間違い① WHEREとHAVING
混同しやすいので、これだけ覚えましょう。
WHERE
↓
グループ化する前
HAVING
↓
グループ化した後問題文に、
「平均○円以上のカテゴリ」
のような条件が出たらHAVINGが候補になります。
⸻
35. よくある間違い② ORDER BY
ORDER BY 価格 DESCを見て、
「DESCって昇順だっけ?」
となりやすいです。
覚え方は、
ASC ↑ 昇順
DESC ↓ 降順です。
⸻
36. よくある間違い③ COUNTとSUM
COUNT → 数える
SUM → 足すです。
たとえば、
商品数を求める
ならCOUNT。
売上合計を求める
ならSUM。
問題文から判断しましょう。
⸻
37. よくある間違い④ NULL
NULLは普通の値とは少し違います。
= NULLではなく、
IS NULLを使うことを覚えておきましょう。
⸻
38. よくある間違い⑤ JOINの結合条件
JOINでは、
ONの条件が重要です。
たとえば、
ON 社員.部署ID = 部署.部署IDなら、
部署IDが一致するデータを対応付ける
という意味です。
JOIN問題では必ずONを確認しましょう。
⸻
39. 頻出SQLを一気に整理

まずはこの表を覚えるだけでも、SQL問題がかなり読みやすくなります。
⸻
40. SELECT文の基本形を覚える
最後に、この形を覚えておきましょう。
SELECT 列
FROM テーブル
JOIN 別テーブル
ON 結合条件
WHERE 行の条件
GROUP BY グループ化する列
HAVING グループの条件
ORDER BY 並び替える列;全部が毎回登場するわけではありません。
重要なのは、
SELECT → 何を取得?
FROM → どこから?
JOIN → 何と結合?
ON → 何をキーに結合?
WHERE → どの行?
GROUP BY → 何ごと?
HAVING → どのグループ?
ORDER BY → どう並べる?と意味を対応させることです。
⸻
41. ミニ問題①
次のSQLは何を取得するでしょうか?
SELECT 商品名
FROM 商品
WHERE 価格 >= 10000
ORDER BY 価格 DESC;答え
価格が10,000円以上の商品について、商品名を価格の高い順に取得する。
見るポイントは、
SELECT 商品名
WHERE 価格 >= 10000
ORDER BY 価格 DESCです。
⸻
42. ミニ問題②
次のSQLは何を求めているでしょうか?
SELECT カテゴリ, COUNT(*)
FROM 商品
GROUP BY カテゴリ;答え
カテゴリごとの商品数
です。
GROUP BY カテゴリ
↓
カテゴリごと
COUNT(*)
↓
件数と考えましょう。
⸻
43. ミニ問題③
SELECT 部署.部署名, COUNT(*)
FROM 社員
INNER JOIN 部署
ON 社員.部署ID = 部署.部署ID
GROUP BY 部署.部署名;何を求めているでしょうか?
答え
部署ごとの社員数
です。
この問題では、
JOIN
↓
社員と部署を結合
GROUP BY
↓
部署ごと
COUNT
↓
社員数を数えると分解すると読みやすくなります。
⸻
44. 試験直前チェックリスト
SQL対策では、次を確認しておきましょう。
◻︎SELECTの意味が分かる
◻︎FROMの意味が分かる
◻︎WHEREで条件を指定できる
◻︎AND・OR・NOTを理解している
◻︎ASCとDESCを区別できる
◻︎DISTINCTの意味が分かる
◻︎COUNT・SUM・AVG・MAX・MINを区別できる
◻︎GROUP BYの意味が分かる
◻︎WHEREとHAVINGを区別できる
◻︎INNER JOINの意味が分かる
◻︎LEFT JOINの意味が分かる
◻︎ONで結合条件を確認できる
◻︎NULLにはIS NULLを使うと分かる
◻︎LIKEの意味が分かる
◻︎SQLを処理の流れに沿って読める
⸻
45. 最後にこれだけ覚える
試験直前なら、まずこの8個を優先してください。
SELECT
→ 何を取得する?
FROM
→ どのテーブル?
WHERE
→ どの行?
GROUP BY
→ 何ごとにまとめる?
HAVING
→ どのグループ?
ORDER BY
→ どう並べる?
JOIN
→ どのテーブルを結合する?
ON
→ 何を使って結合する?そして集約関数は、
COUNT → 件数
SUM → 合計
AVG → 平均
MAX → 最大
MIN → 最小です。
⸻
まとめ
SQLは最初に見ると英単語や記号が多く、難しそうに感じます。
でも、基本情報対策では一つずつ役割を分解して考えることが重要です。
特に、
SELECT・WHERE・GROUP BY・HAVING・JOIN
は優先して理解しておきましょう。
SQL問題で迷ったら、
① どのテーブル?
↓
② どの行?
↓
③ グループ化する?
↓
④ 何を取得する?
↓
⑤ どう並べる?の順番で整理してみてください。
JOINがあれば、
「どの列とどの列を結ぶ?」
も確認します。
SQLは丸暗記するより、実際のテーブルを見ながら「このSQLを実行すると何が残る?」と追いかける練習をするのがおすすめです。
最初はSELECTとWHEREだけ。
次にGROUP BY。
最後にJOIN。
この順番で理解していけば、SQLは十分得点源にできます🔥
この記事は無料なので、SQL対策の復習用として保存して繰り返し使ってみてください!