はじめに
SQLを勉強し始めると、
- SQLって何から覚えればいいの?
- 構文が多くて覚えられない……
- 実際の案件ではどんなSQLを使うの?
- 案件に参画する前に、最低限何を覚えればいい?
このように悩むことがあると思います。
SQLにはたくさんの構文がありますが、最初からすべて覚える必要はありません。
今回は、SQL初心者が案件に参画するまでに覚えておきたい基本構文10選を紹介します。
実際のSQLを見ながら、1つずつ確認していきましょう。
目次
- SQLとは?
- 1. SELECT
- 2. WHERE
- 3. ORDER BY
- 4. INSERT
- 5. UPDATE
- 6. DELETE
- 7. GROUP BY
- 8. HAVING
- 9. JOIN
- 10. COUNT・SUM・AVG
- 実務でよく使うSQLの組み合わせ
- 参画前に特に覚えておきたい構文
- SQLを覚えるときのポイント
- まとめ
SQLとは?
SQL(Structured Query Language)は、データベースを操作するための言語です。
例えば、ユーザー情報がデータベースに保存されているとします。
| id | name | age |
|---|---|---|
| 1 | 田中 | 25 |
| 2 | 佐藤 | 30 |
| 3 | 鈴木 | 18 |
SQLを使うことで、
- データを取得する
- データを追加する
- データを更新する
- データを削除する
- 条件を指定して検索する
- 複数のテーブルを結合する
- データを集計する
といった操作ができます。
1. SELECT
SELECTとは?
SELECTは、データを取得するための構文です。
SQLを勉強するなら、まず覚えておきたい基本中の基本です。
SELECT name
FROM users;
このSQLは、
usersテーブルからnameを取得する
という意味です。
すべての項目を取得する
SELECT *
FROM users;
*を使うと、すべての項目を取得できます。
複数の項目を取得する
SELECT name, age
FROM users;
nameとageだけを取得します。
ポイント
SELECT → 何を取得する?
FROM → どのテーブルから?
まずはこの2つをセットで覚えましょう。
2.WHERE
WHEREとは?
WHEREは、取得するデータに条件を指定するための構文です。
例えば、
20歳以上のユーザーだけ取得したい
という場合は、次のように書きます。
SELECT *
FROM users
WHERE age >= 20;
よく使う比較演算子
| 演算子 | 意味 |
|---|---|
= |
等しい |
<> |
等しくない |
> |
より大きい |
< |
より小さい |
>= |
以上 |
<= |
以下 |
例えば、30歳のユーザーを取得する場合は、
SELECT *
FROM users
WHERE age = 30;
となります。
複数条件を指定する
ANDを使うことで、複数の条件を指定できます。
SELECT *
FROM users
WHERE age >= 20
AND age <= 30;
これは、
20歳以上かつ30歳以下
という意味です。
3. ORDER BY
ORDER BYとは?
ORDER BYは、取得したデータを並び替えるための構文です。
例えば、年齢が高い順に並べたい場合、
SELECT *
FROM users
ORDER BY age DESC;
と書きます。
昇順と降順
| 指定 | 意味 |
|---|---|
ASC |
昇順 |
DESC |
降順 |
-- 年齢が低い順
SELECT *
FROM users
ORDER BY age ASC;
-- 年齢が高い順
SELECT *
FROM users
ORDER BY age DESC;
ASCは省略されることもあります。
SELECT *
FROM users
ORDER BY age;
この場合は基本的に昇順になります。
4. INSERT
INSERTとは?
INSERTは、データを追加するための構文です。
例えば、usersテーブルに新しいユーザーを追加します。
INSERT INTO users (name, age)
VALUES ('山田', 25);
これで、
name:山田
age :25
というデータが追加されます。
基本構文
INSERT INTO テーブル名 (カラム名)
VALUES (追加する値);
注意点
文字列を指定するときは、基本的にシングルクォートで囲みます。
'山田'
数値の場合は、
25
のように、そのまま指定します。
5. UPDATE
UPDATEとは?
UPDATEは、すでに登録されているデータを更新するための構文です。
例えば、山田さんの年齢を26歳に変更します。
UPDATE users
SET age = 26
WHERE name = '山田';
基本構文
UPDATE テーブル名
SET カラム名 = 更新する値
WHERE 条件;
WHEREの付け忘れに注意
例えば、
UPDATE users
SET age = 26;
とすると、usersテーブルの全ユーザーの年齢が26になる可能性があります。
そのため、UPDATEを使用するときは、
「どのデータを更新するのか?」
を必ず確認しましょう。
6. DELETE
DELETEとは?
DELETEは、データを削除するための構文です。
例えば、idが3のユーザーを削除する場合、
DELETE FROM users
WHERE id = 3;
と書きます。
基本構文
DELETE FROM テーブル名
WHERE 条件;
DELETEもWHEREに注意
DELETE FROM users;
とすると、テーブル内のデータをすべて削除する可能性があります。
実務では特に注意が必要な構文です。
7. GROUP BY
GROUP BYとは?
GROUP BYは、同じ値をグループ化するための構文です。
例えば、購入履歴を管理しているordersテーブルがあるとします。
| id | user_id | price |
|---|---|---|
| 1 | 1 | 1000 |
| 2 | 1 | 2000 |
| 3 | 2 | 1500 |
| 4 | 2 | 3000 |
ユーザーごとに購入金額を集計したい場合、
SELECT user_id, SUM(price)
FROM orders
GROUP BY user_id;
とします。
すると、
user_id 1 → 3000円
user_id 2 → 4500円
のように、ユーザーごとにまとめることができます。
GROUP BYのイメージ
バラバラのデータ
↓
同じ値ごとにグループ化
↓
グループごとに集計
GROUP BYは、後述するCOUNTやSUMなどの集計関数と一緒に使うことが多いです。
8. HAVING
HAVINGとは?
HAVINGは、GROUP BYでグループ化した後のデータに条件を指定するための構文です。
例えば、
ユーザーごとの購入金額を集計して、合計金額が3000円以上のユーザーだけ取得したい
場合、
SELECT user_id, SUM(price)
FROM orders
GROUP BY user_id
HAVING SUM(price) >= 3000;
と書きます。
WHEREとの違い
ここは初心者が混乱しやすいポイントです。
WHERE
→ グループ化する前のデータに条件を指定
HAVING
→ GROUP BYでグループ化した後のデータに条件を指定
まずは、
WHEREはデータ、HAVINGはグループ
と覚えると分かりやすいです。
9. JOIN
JOINとは?
JOINは、複数のテーブルを結合するための構文です。
実際のデータベースでは、すべての情報を1つのテーブルに保存するとは限りません。
例えば、
usersテーブル
| id | name |
|---|---|
| 1 | 山田 |
| 2 | 佐藤 |
ordersテーブル
| id | user_id | price |
|---|---|---|
| 1 | 1 | 1000 |
| 2 | 2 | 2000 |
この2つのテーブルから、
ユーザー名と購入金額を一緒に取得したい
場合は、JOINを使用します。
SELECT users.name, orders.price
FROM users
INNER JOIN orders
ON users.id = orders.user_id;
INNER JOIN
INNER JOINは、両方のテーブルに一致するデータを取得します。
SELECT users.name, orders.price
FROM users
INNER JOIN orders
ON users.id = orders.user_id;
LEFT JOIN
LEFT JOINは、左側のテーブルのデータを基本的に残しながら結合します。
SELECT users.name, orders.price
FROM users
LEFT JOIN orders
ON users.id = orders.user_id;
JOINは実務でも重要
SQL案件では複数のテーブルからデータを取得することが多いため、
INNER JOINLEFT JOINON
あたりは、参画前に理解しておきたいポイントです。
10. COUNT・SUM・AVG
COUNT・SUM・AVGとは?
これらは、データを集計するときに使用する関数です。
COUNT
データの件数を数えます。
SELECT COUNT(*)
FROM users;
usersテーブルに何件のデータがあるかを取得できます。
SUM
数値を合計します。
SELECT SUM(price)
FROM orders;
購入金額の合計などを取得できます。
AVG
平均値を求めます。
SELECT AVG(age)
FROM users;
ユーザーの平均年齢などを取得できます。
よく使う集計関数
| 関数 | 意味 |
|---|---|
COUNT |
件数 |
SUM |
合計 |
AVG |
平均 |
MAX |
最大値 |
MIN |
最小値 |
まずはCOUNT、SUM、AVGを覚えておくとよいでしょう。
実務でよく使うSQLの組み合わせ
SQLは、1つの構文だけで使うよりも、複数の構文を組み合わせて使用することが多いです。
例えば、
20歳以上のユーザーを取得し、年齢が高い順に並べる
場合、
SELECT name, age
FROM users
WHERE age >= 20
ORDER BY age DESC;
となります。
さらにJOINを組み合わせると、
SELECT users.name, orders.price
FROM users
INNER JOIN orders
ON users.id = orders.user_id
WHERE orders.price >= 1000
ORDER BY orders.price DESC;
のようなSQLになります。
最初は難しく感じるかもしれませんが、
SELECT → 何を取得する?
FROM → どこから?
JOIN → 他のテーブルと結合する?
WHERE → どんな条件?
ORDER BY → どう並べる?
と、それぞれの役割を考えると理解しやすくなります。
参画前に特に覚えておきたい構文
10個すべてを完璧に覚えるのが難しい場合は、まず以下を優先しましょう。
優先度 ★★★
SELECT
WHERE
ORDER BY
JOIN
GROUP BY
このあたりは、SQLでデータを検索・取得するときによく登場します。
特にSELECTとWHEREは、SQLの基本なので最優先で覚えておきましょう。
優先度 ★★
INSERT
UPDATE
DELETE
HAVING
COUNT / SUM / AVG
こちらも実務で使用するため、基本的な使い方は理解しておくと安心です。
SQLを覚えるときのポイント
SQLは、構文を丸暗記するだけではなかなか身につきません。
例えば、
SELECT name
FROM users
WHERE age >= 20;
を見たときに、
「usersテーブルから、20歳以上の人のnameを取得している」
と、日本語で説明できるようになることが重要です。
SQLを見たら日本語に変換してみる
SELECT
↓
「何を取得する?」
FROM
↓
「どのテーブル?」
WHERE
↓
「どんな条件?」
このように考える癖をつけると、SQLの理解が進みやすくなります。
まとめ
今回は、SQL初心者が案件に参画するまでに覚えておきたい構文を10個紹介しました。
| # | 構文 | 役割 |
|---|---|---|
| 1 | SELECT |
データを取得 |
| 2 | WHERE |
条件を指定 |
| 3 | ORDER BY |
並び替え |
| 4 | INSERT |
データを追加 |
| 5 | UPDATE |
データを更新 |
| 6 | DELETE |
データを削除 |
| 7 | GROUP BY |
データをグループ化 |
| 8 | HAVING |
グループに条件を指定 |
| 9 | JOIN |
テーブルを結合 |
| 10 |
COUNT・SUM・AVG
|
データを集計 |
SQLにはたくさんの構文がありますが、最初からすべて覚える必要はありません。
まずは、
SELECT → WHERE → ORDER BY → JOIN → GROUP BY
を中心に学習し、少しずつ使える構文を増やしていきましょう。
実際にSQLを書いて、データがどのように取得されるのかを確認することが、SQLを身につける近道です。
最後まで読んでいただきありがとうございます!