※当サイトはPRを含みます

SQLのチートシート①

テーブルからデータをクエリする

# テーブルからc1, c2の列のデータをクエリする
SELECT c1, c2 FROM t;

# テーブルからすべての行と列のデータをクエリする
SELECT * FROM t;

# データをクエリし、条件を満たす行をフィルタリングする
SELECT c1, c2 FROM t
WHERE condition;

#テーブルから重複しない行をクエリする
SELECT DISTINCT c1 FROM t
WHERE condition;

# 結果セットを昇順または降順でソートする
SELECT c1, c2 FROM t
ORDER BY c1 ASC [DESC];

# 行のオフセットをスキップし、次のn行を返す
SELECT c1, c2 FROM t
ORDER BY c1 
LIMIT n OFFSET offset;

# 集約関数を使用して行をグループ化する
SELECT c1, aggregate(c2)
FROM t
GROUP BY c1;

# HAVING句を使用してグループをフィルタリングする
SELECT c1, aggregate(c2)
FROM t
GROUP BY c1
HAVING condition;

複数のテーブルからクエリする

# t1とt2を内部結合する
SELECT c1, c2 
FROM t1
INNER JOIN t2 ON condition;

# t1とt2を左結合する
SELECT c1, c2 
FROM t1
LEFT JOIN t2 ON condition;

# t1とt2を右結合する
SELECT c1, c2 
FROM t1
RIGHT JOIN t2 ON condition;

# 完全外部結合を実行する
SELECT c1, c2 
FROM t1
FULL OUTER JOIN t2 ON condition;

#テーブルの行のデカルト積を生成する
SELECT c1, c2 
FROM t1
CROSS JOIN t2;

#クロス結合を実行する別の方法
SELECT c1, c2 
FROM t1, t2;

# INNER JOIN句を使用してt1を自身に結合する
SELECT c1, c2
FROM t1 A
INNER JOIN t1 B ON condition;

SQL演算子を使用する

# 二つのクエリから行を結合する
SELECT c1, c2 FROM t1
UNION [ALL]
SELECT c1, c2 FROM t2;

#二つのクエリの交差部分を返す
SELECT c1, c2 FROM t1
INTERSECT
SELECT c1, c2 FROM t2;

# 一つの結果セットから別の結果セットを減算する
SELECT c1, c2 FROM t1
MINUS
SELECT c1, c2 FROM t2;

# パターンマッチング %, _ を使用して行をクエリする
SELECT c1, c2 FROM t1
WHERE c1 [NOT] LIKE pattern;

# リスト内の行をクエリする
SELECT c1, c2 FROM t
WHERE c1 [NOT] IN value_list;

# 二つの値の間の行をクエリする
SELECT c1, c2 FROM t
WHERE c1 BETWEEN low AND high;

# テーブルの値がNULLかどうかを確認する
SELECT c1, c2 FROM t
WHERE c1 IS [NOT] NULL;