文系出身がゼロからSQLを学んでみた 〜全体像編〜
はじめに
SQLを学び始めたとき、最初に感じたのは、「覚えることが多くて、全部バラバラに見える」ということでした。
ですが、一通り触ってみると、SQLは実はとてもシンプルで、「データを作る・見る・変える・消す」という基本の流れで成り立っていると分かりました。
この記事では、SQLの基本操作から少し応用的な内容まで、学習の流れに沿って全体像をまとめます。
カレントディレクトリとは
SQLそのものの用語ではありませんが、開発学習の中でよく出てくる言葉です。
カレントディレクトリとは今、自分が作業しているフォルダ(場所)のことです。
ファイルやデータベースを扱うときの基準になるため、SQL学習とあわせて覚えておくと理解しやすくなります。
SQLの基本操作(CRUD)
SQLは主に、次の4つの操作で成り立っています。
Create:作る
→ データやテーブルを作成する
Read:読む
→ データを取得して確認する
Update:更新する
→ 既存のデータを書き換える
Delete:削除する
→ データを削除する
この4つを意識すると、SQL全体の整理がしやすくなります。
テーブルの作成(CREATE)
CREATE TABLE users (
id INTEGER,
name TEXT
);
これは、データを入れるための箱を作るイメージです。
テーブルを作ることで、どんな種類のデータを保存するのかを決められます。
データの追加(INSERT)
INSERT INTO users (id, name)
VALUES (1, 'Taro');
テーブルにデータを追加する操作です。
ここで大事なのは、カラムの順番と値の順番を必ずそろえることです。
データの取得(SELECT)
SELECT name FROM users;
データを取り出す基本の命令です。
最低限必要なのは、次の2つです。
- SELECT:どのデータを取り出すか
- FROM:どのテーブルから取り出すか
複数カラムを取得することもできます。
SELECT id, name FROM users;
すべてのカラムを取得したい場合は、次のように書きます。
SELECT * FROM users;
データの更新(UPDATE)
UPDATE users
SET name = 'Jiro';
既存のデータを書き換える操作です。
計算を使った更新もできます。
UPDATE users
SET id = id + 1;
ただし、WHEREを付けないとテーブル内の全データが更新されるため注意が必要です。
データの削除(DELETE)
DELETE FROM users;
データを削除する操作です。
こちらもWHEREを付けないと、すべてのデータが削除されるので注意が必要です。
並び替え(ORDER BY)
SELECT * FROM users
ORDER BY id DESC;
取得したデータを並び替えるときに使います。
- ASC:昇順(小さい順)
- DESC:降順(大きい順)
データを見やすく整理したいときによく使います。
SQLの実行順序(重要)
SQLは、書く順番と実際に処理される順番が違うという特徴があります。
書く順番は次の通りです。
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
ただし、処理の流れを理解するときは、次の順番で考えると整理しやすいです。
- FROM
- WHERE
- GROUP BY
- HAVING
- SELECT
- ORDER BY
この違いは、最初につまずきやすいポイントのひとつでした。
条件で絞る(WHERE)
SELECT * FROM users
WHERE id = 1;
WHEREは、条件に合うデータだけを取り出したいときに使います。
ポイントは、グループ化する前のデータに対して条件を付けることです。
集計とグループ化(GROUP BY)
SELECT artist, COUNT(*)
FROM songs
GROUP BY artist;
GROUP BYは、同じ値ごとにデータをまとめるために使います。
この例では、artistごとに曲数を数えています。
集計関数
よく使う集計関数は次の通りです。
| 集計関数 | 目的 | 例 |
|---|---|---|
| COUNT | 件数を数える | COUNT(*) |
| SUM | 合計を求める | SUM(price) |
| AVG | 平均を求める | AVG(score) |
| MAX | 最大値を求める | MAX(score) |
| MIN | 最小値を求める | MIN(score) |
たとえば平均点を求める場合は、次のように書きます。
SELECT AVG(score) FROM tests;
HAVING(グループ化した後の条件)
SELECT artist, COUNT(*)
FROM songs
GROUP BY artist
HAVING COUNT(*) > 10;
HAVINGは、グループ化した後の結果に条件を付けるときに使います。
WHEREと似ていますが、
- WHERE:グループ化前に条件を付ける
- HAVING:グループ化後に条件を付ける
という違いがあります。
NULLの扱い
WHERE name IS NULL
NULLを条件に使うときは、= ではなく IS NULLを使います。
これはSQLの中でも最初に少し戸惑いやすいポイントでした。
DISTINCT(重複を除く)
SELECT DISTINCT name FROM users;
DISTINCTは、重複した値を除いて表示したいときに使います。
同じ名前が複数回出てくるデータでも、一覧としては1回だけ表示できます。
件数制限(LIMIT / OFFSET)
SELECT * FROM users
LIMIT 10 OFFSET 5;
これは、5件分スキップして、その後の10件を取得するという意味です。
大量のデータを少しずつ表示したいときに便利です。
JOIN(テーブル結合)
SELECT *
FROM users
JOIN countries
ON countries.id = users.country_id;
JOINは、複数のテーブルをつなげて扱うための機能です。
たとえば、usersテーブルとcountriesテーブルを結び付けることで、ユーザー情報と国情報を一緒に取得できます。
主なJOINは次の通りです。
| 主なJOIN | 目的 |
|---|---|
| INNER JOIN | 両方に一致するデータだけ取得する |
| LEFT JOIN | 左のテーブルをすべて残す |
| RIGHT JOIN | 右のテーブルをすべて残す |
| FULL JOIN | 両方のテーブルをすべて残す |
| CROSS JOIN | 全組み合わせを作る |
サブクエリ
SELECT *
FROM users
WHERE country_id = (
SELECT id FROM countries WHERE name = 'Japan'
);
サブクエリは、SQLの中にSQLを書く方法です。
この例では、まずcountriesテーブルからJapanのidを取得し、その結果を使ってusersテーブルを絞り込んでいます。
JOINとサブクエリの違い
JOINとサブクエリは、どちらも複数テーブルを使う場面で登場するため、最初は混乱しやすい部分でした。
ざっくり次のように考えると分かりやすいです。
-
両方のテーブルのデータを一緒に見たい
→ JOIN -
条件として別テーブルの情報を使いたい
→ サブクエリ
用途で考えると整理しやすくなります。
EXISTS
SELECT *
FROM users u
WHERE EXISTS (
SELECT 1
FROM countries c
WHERE c.id = u.country_id
);
EXISTSは、条件に合うデータが存在するかどうかを確認したいときに使います。
ポイントは、値そのものを取り出したいのではなく、「あるか・ないか」を判定したいときに向いていることです。
IN
SELECT *
FROM users
WHERE id IN (1, 2, 3);
INは、指定した複数の値の中に含まれているかどうかを調べるときに使います。
複数条件をまとめて書けるので、シンプルに書きたいときに便利です。
まとめ
SQLは一見難しく見えますが、整理すると「データをどう扱うか」を決めるルールです。
基本となるのは、次の4つです。
- SELECT:見る
- INSERT:追加する
- UPDATE:変更する
- DELETE:削除する
この軸が分かると、SQL全体がかなり理解しやすくなります。
最初は用語や文法を暗記しようとして詰まりましたが、「何をしたいのか」で考えることが大切だと気づいてから、かなり楽になりました。
SQLは細かいルールが多く見えますが、やりたいことに沿って整理すると、少しずつつながって見えてきます。
これから学ぶ人にとっても、まずは全体像をざっくりつかんでから一つずつ理解していくことが、学びやすさにつながると感じています。
クラスメソッドオペレーションズ株式会社について
クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイトをぜひご覧ください。
※2026年1月 アノテーション㈱から社名変更しました。








