SQL チートシート
1. 基本的なSELECT文
-- テーブルからすべての列を取得
SELECT * FROM table_name;
-- 特定の列を取得
SELECT column1, column2 FROM table_name;
2. WHERE句でデータをフィルタリング
-- 条件に一致するレコードを取得
SELECT * FROM table_name WHERE column1 = 'value';
-- 複数条件を指定 (AND、ORを使用)
SELECT * FROM table_name WHERE column1 = 'value' AND column2 > 10;
SELECT * FROM table_name WHERE column1 = 'value' OR column2 < 100;
3. LIKE句を使って部分一致検索
-- 部分一致でレコードを取得
SELECT * FROM table_name WHERE column1 LIKE 'A%'; -- Aで始まる
SELECT * FROM table_name WHERE column1 LIKE '%B'; -- Bで終わる
SELECT * FROM table_name WHERE column1 LIKE '%C%'; -- Cを含む
4. NULLの取り扱い
-- NULL値を条件に指定
SELECT * FROM table_name WHERE column1 IS NULL;
SELECT * FROM table_name WHERE column1 IS NOT NULL;
5. データの並び替え(ORDER BY)
-- 昇順で並び替え
SELECT * FROM table_name ORDER BY column1 ASC;
-- 降順で並び替え
SELECT * FROM table_name ORDER BY column1 DESC;
6. GROUP BYと集計関数
-- COUNT, SUM, AVG, MIN, MAXを使って集計
SELECT column1, COUNT(*), SUM(column2), AVG(column3)
FROM table_name
GROUP BY column1;
-- HAVINGで集計結果にフィルターをかける
SELECT column1, COUNT(*)
FROM table_name
GROUP BY column1
HAVING COUNT(*) > 1;
7. JOIN(テーブル結合)
-- INNER JOIN: 両方のテーブルに存在するデータのみ取得
SELECT A.column1, B.column2
FROM table1 A
INNER JOIN table2 B ON A.id = B.id;
-- LEFT JOIN: 左のテーブルのデータをすべて取得、右のテーブルで一致しない場合はNULL
SELECT A.column1, B.column2
FROM table1 A
LEFT JOIN table2 B ON A.id = B.id;
-- RIGHT JOIN: 右のテーブルのデータをすべて取得、左のテーブルで一致しない場合はNULL
SELECT A.column1, B.column2
FROM table1 A
RIGHT JOIN table2 B ON A.id = B.id;
-- FULL OUTER JOIN: 両方のテーブルのデータをすべて取得し、どちらかに一致しない場合はNULL
SELECT A.column1, B.column2
FROM table1 A
FULL OUTER JOIN table2 B ON A.id = B.id;
8. サブクエリ
-- サブクエリを使ったデータの取得
SELECT * FROM table_name
WHERE column1 = (SELECT MAX(column1) FROM table_name);
-- サブクエリをFROM句で使用
SELECT sub.column1
FROM (SELECT column1 FROM table_name WHERE column2 > 100) sub;
9. INSERT INTO文(データの挿入)
-- データを新規挿入
INSERT INTO table_name (column1, column2, column3)
VALUES ('value1', 'value2', 'value3');
-- 複数行を一度に挿入
INSERT INTO table_name (column1, column2, column3)
VALUES ('value1', 'value2', 'value3'), ('value4', 'value5', 'value6');
10. UPDATE文(データの更新)
-- 条件に一致するレコードを更新
UPDATE table_name
SET column1 = 'new_value', column2 = 'another_value'
WHERE column3 = 'some_value';
-- 条件を省略するとすべてのレコードが更新されるので注意
UPDATE table_name
SET column1 = 'new_value';
11. DELETE文(データの削除)
-- 条件に一致するレコードを削除
DELETE FROM table_name WHERE column1 = 'value';
-- 条件を省略するとすべてのレコードが削除されるので注意
DELETE FROM table_name;
12. LIMIT句で取得する行数を制限
-- 先頭から5行だけ取得
SELECT * FROM table_name LIMIT 5;
-- 6行目から5行取得 (オフセット付き)
SELECT * FROM table_name LIMIT 5 OFFSET 5;
13. DISTINCTを使って重複排除
-- 重複を除いたデータを取得
SELECT DISTINCT column1 FROM table_name;
14. CASE文を使った条件分岐
-- 条件に応じて異なる値を返す
SELECT column1,
CASE
WHEN column2 > 100 THEN 'High'
WHEN column2 BETWEEN 50 AND 100 THEN 'Medium'
ELSE 'Low'
END as column2_category
FROM table_name;
15. データベースやテーブルの作成
-- データベースを作成
CREATE DATABASE database_name;
-- テーブルを作成
CREATE TABLE table_name (
column1 INT PRIMARY KEY,
column2 VARCHAR(100),
column3 DATE
);
-- テーブルを削除
DROP TABLE table_name;
16. データ型
-- INT: 整数型
-- VARCHAR: 可変長文字列型
-- DATE: 日付型
-- TIMESTAMP: 日時型
-- BOOLEAN: 真偽値
17. インデックスの作成
-- テーブルにインデックスを作成して検索を高速化
CREATE INDEX idx_column1 ON table_name (column1);