0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SQL チートシート

Posted at

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);
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?