SQL入門向けチートシート

データベース操作の基本をマスター
2025年3月22日

📚 SQLの基本

SQLはStructured Query Language(構造化問合せ言語)の略で、データベースを操作するための標準言語です。

🔍 主な特徴

  • データベースの作成・変更・削除
  • データの検索・追加・更新・削除
  • アクセス権限の設定
SQLは大文字と小文字を区別しないことが多いですが、データベース製品によって異なります。

🔤 基本構文

✏️ SELECT文の基本

SELECT カラム名 FROM テーブル名
WHERE 条件
ORDER BY カラム名 [ASC|DESC]
LIMIT 件数;

✏️ 簡単な例

SELECT * FROM users
WHERE age >= 20
ORDER BY created_at DESC
LIMIT 10;
文の終わりにはセミコロン(;)をつけます。

🔢 データ型

データ型 説明
INTEGER 整数型
NUMERIC 固定小数点数型
VARCHAR 可変長文字列
TEXT 長い文字列
DATE 日付
BOOLEAN 真偽値
データベース製品によって使用できるデータ型は異なります。

🔍 WHERE句と演算子

⚙️ 比較演算子

演算子 意味
= 等しい
!=, <> 等しくない
> より大きい
< より小さい
>= 以上
<= 以下

⚙️ 論理演算子

WHERE 条件1 AND 条件2
WHERE 条件1 OR 条件2
WHERE NOT 条件

⚙️ 特殊演算子

WHERE カラム名 LIKE 'パターン'
WHERE カラム名 IN (値1, 値2, ...)
WHERE カラム名 BETWEEN 値1 AND 値2
WHERE カラム名 IS [NOT] NULL

⚙️ CASE式

条件に応じて異なる値を返す条件分岐式です。

-- 単純CASE式
CASE カラム名
  WHEN 値1 THEN 結果1
  WHEN 値2 THEN 結果2
  ELSE 結果3
END AS エイリアス

-- 検索CASE式
CASE
  WHEN 条件1 THEN 結果1
  WHEN 条件2 THEN 結果2
  ELSE 結果3
END AS エイリアス

✏️ CASE式の使用例

SELECT name,
  CASE
    WHEN age < 20 THEN '未成年'
    WHEN age < 65 THEN '成人'
    ELSE '高齢者'
  END AS age_group
FROM users;
CASE式はSELECT句だけでなく、WHERE句ORDER BY句でも使用できます。

🔄 JOIN句

複数のテーブルを結合して一つの結果セットを得るための構文です。

🔵⚪
INNER JOIN
🔵⚪➡️
LEFT JOIN
⚪🔵⬅️
RIGHT JOIN

✏️ INNER JOIN

SELECT a.name, b.value
FROM table_a AS a
INNER JOIN table_b AS b
ON a.id = b.a_id;

✏️ LEFT JOIN

SELECT a.name, b.value
FROM table_a AS a
LEFT JOIN table_b AS b
ON a.id = b.a_id;

🔗 集合演算子

複数のSELECT文の結果を結合する演算子です。

⚙️ UNION

2つのクエリ結果を結合し、重複を除去します。

SELECT name FROM employees
UNION
SELECT name FROM customers;

⚙️ UNION ALL

重複を除去せずにすべての行を結合します。

SELECT name FROM employees
UNION ALL
SELECT name FROM customers;

⚙️ INTERSECT

両方のクエリ結果に存在する行のみを返します。

SELECT product_id FROM orders_2023
INTERSECT
SELECT product_id FROM orders_2024;

⚙️ EXCEPT(MINUS)

最初のクエリ結果から2番目のクエリ結果を除いた行を返します。

SELECT student_id FROM all_students
EXCEPT
SELECT student_id FROM graduated_students;
集合演算子を使用する際は、各SELECT文のカラム数とデータ型が一致している必要があります。

📊 集計関数

関数 説明
COUNT() 行数を数える
SUM() 合計を計算する
AVG() 平均値を計算する
MAX() 最大値を取得する
MIN() 最小値を取得する
SELECT COUNT(*) FROM users;
SELECT AVG(price) FROM products;
SELECT MAX(score), MIN(score) FROM exams;

📝 データ操作

➕ INSERT

INSERT INTO テーブル名 (カラム1, カラム2, ...)
VALUES (値1, 値2, ...);

🔄 UPDATE

UPDATE テーブル名
SET カラム1 = 値1, カラム2 = 値2, ...
WHERE 条件;

❌ DELETE

DELETE FROM テーブル名
WHERE 条件;
WHERE句を省略するとすべての行が対象になります。注意しましょう!

🏗️ テーブル操作

🆕 CREATE TABLE

CREATE TABLE テーブル名 (
  カラム名1 データ型 [制約],
  カラム名2 データ型 [制約],
  ...
);

🔄 ALTER TABLE

-- カラム追加
ALTER TABLE テーブル名
ADD カラム名 データ型 [制約];

-- カラム変更
ALTER TABLE テーブル名
ALTER COLUMN カラム名 データ型 [制約];

-- カラム削除
ALTER TABLE テーブル名
DROP COLUMN カラム名;

❌ DROP TABLE

DROP TABLE テーブル名;

🔍 GROUP BY と HAVING

GROUP BYはデータをグループ化し、HAVINGはグループに対する条件を指定します。

SELECT category, COUNT(*) as count
FROM products
GROUP BY category
HAVING COUNT(*) > 5
ORDER BY count DESC;
GROUP BY データをグループ化
集計関数 各グループに対して計算
HAVING グループに対する条件
ORDER BY 結果の並べ替え

💡 便利なTIPS

  • クエリはインデントと改行を使って読みやすく書きましょう
  • 複雑なクエリはサブクエリを活用しましょう
  • テーブルやカラムにはわかりやすい名前をつけましょう
  • 重要なデータを操作する前にバックアップを取りましょう
  • 本番環境ではトランザクションを適切に使いましょう
実行前にSELECTでの確認を習慣にしましょう。特にUPDATEやDELETEの前には重要です。