INDEX
はじめに
SQL文について学習しました。
その結果をチートシートとしてまとめました。
itemsというテーブルに下記のデータが保存しております。
salesというテーブルに下記のデータが保存しております。
id | date | item_name | item_cont | price | customer | discount | discount_rate |
---|
1 | 2024-01-01 | リンゴ | 3 | 260 | A さん | True | 0.1 |
2 | 2024-01-02 | バナナ | 2 | 340 | B さん | False | null |
3 | 2024-01-03 | イチゴ | 4 | 550 | C さん | False | null |
4 | 2024-01-04 | リンゴ | 5 | 670 | D さん | False | null |
5 | 2024-01-05 | バナナ | 1 | 560 | E さん | False | null |
6 | 2024-01-06 | バナナ | 4 | 340 | F さん | True | 0.5 |
7 | 2024-01-07 | イチゴ | 6 | 230 | G さん | False | null |
8 | 2024-01-08 | リンゴ | 2 | 410 | H さん | True | 0.3 |
CREATE
テーブルを作成する
基本構文
CREATE TABLE テーブル名 (
カラム名A データ型,
カラム名B データ型,
カラム名C データ型,
...
)
サンプル
salesを下記データ型で設定する
CREATE TABLE sales (
id SERIAL PRIMARY KEY,
date DATE,
item_name VARCHAR(50),
item_cont INT,
price INT,
customer VARCHAR(50),
discount BOOLEAN,
discount_rate REAL
);
DELETE
全てデータを削除する
基本構文
サンプル
salesのテーブルの全データを削除する
データを削除する
基本構文
DELETE FROM テーブル名 WHERE 条件式
サンプル
2024-01-01のデータを削除する
DELETE FROM sales WHERE date = '2024-01-01'
DROP
テーブルを削除する
基本構文
サンプル
salesのテーブルを削除する
INSERT
データを作成する
基本構文
INSERT INTO テーブル名 VALUES
(カラム名Aのデータ1, カラム名Bのデータ1, カラム名Cのデータ1),
(カラム名Aのデータ2, カラム名Bのデータ2, カラム名Cのデータ2),
(カラム名Aのデータ3, カラム名Bのデータ3, カラム名Cのデータ3),
サンプル
salesに8件のデータを作成する
INSERT INTO sales VALUES
(1, '2024-01-01', 'リンゴ', 3, 260, 'Aさん', TRUE, 0.1),
(2, '2024-01-02', 'バナナ', 2, 340, 'Bさん', FALSE, NULL),
(3, '2024-01-03', 'イチゴ', 4, 550, 'Cさん', FALSE, NULL),
(4, '2024-01-04', 'リンゴ', 5, 670, 'Dさん', FALSE, NULL),
(5, '2024-01-05', 'バナナ', 1, 560, 'Eさん', FALSE, NULL),
(6, '2024-01-06', 'バナナ', 4, 340, 'Fさん', TRUE, 0.5),
(7, '2024-01-07', 'イチゴ', 6, 230, 'Gさん', FALSE, NULL),
(8, '2024-01-08', 'リンゴ', 2, 410, 'Hさん', TRUE, 0.3);
JOIN
テーブルを結合してデータを取得する
基本構文
SELECT カラム FROM テーブル名A
INNER JOIN テーブル名B ON テーブル名A.カラム名 = テーブル名B.カラム名
サンプル
salesとitemsのidが同じのitemsのデータを取得する
SELECT item_name FROM sales
INNER JOIN items ON sales.id = items.id
条件を含めてテーブルを結合してデータを取得する
基本構文
SELECT カラム FROM テーブル名A
INNER JOIN テーブル名B ON テーブル名A.カラム名 = テーブル名B.カラム名
WHERE 条件式
サンプル
salesとitemsのidが同じのitemsのデータの中でitem_contが2より多いデータを取得する
SELECT item_name FROM sales
INNER JOIN items ON sales.id = items.id
WHERE item_cont > 2
UPDATE
データを更新する
基本構文
UPDATE テーブル名 SET カラム名 = 設定したい値 WHERE 条件式
サンプル
2024-01-01のデータを2024-01-15に更新する
UPDATE sales SET date = '2024-01-15' WHERE date = '2024-01-01'
SELECT
全データを取得する
基本構文
サンプル
salesの全てのカラムの値を取得する
AND条件を満たすデータを取得する
基本構文
SELECT * FROM テーブル名 WHERE 条件式1 AND 条件式2
サンプル
item_name = 'リンゴ'かつ'2024-01-04'以降に該当する値を取得する
SELECT * FROM sales WHERE item_name = 'リンゴ' AND date >= '2024-01-04'
カラムを別名にしてデータを取得する
基本構文
SELECT カラム名 AS 別カラム名 FROM テーブル名
サンプル
item_name -> 商品名として値を取得する
SELECT item_name AS 商品名 FROM sales
データの平均値を取得する
基本構文
SELECT AVG(カラム名) FROM テーブル名
サンプル
priceの平均値を取得する
SELECT AVG(price) FROM sales
特定の範囲を満たすデータを取得する
基本構文
SELECT * FROM テーブル名 WHERE カラム名 BETWEEN 条件A AND 条件B
サンプル
priceが300と400の間に該当する値を取得する
SELECT * FROM sales WHERE price BETWEEN 300 AND 400
計算した値を取得する
基本構文
サンプル
item_name x priceの値を取得する
SELECT item_cont * price as 合計値段 FROM sales
データ数を取得する
基本構文
SELECT COUNT(*) FROM テーブル名
サンプル
salesのデータ数を取得する
SELECT COUNT(*) FROM sales
重複を取り除いたデータを取得する
基本構文
SELECT DISTINCT カラム名 FROM テーブル名
サンプル
item_nameの値を取得し重複を取り除く
SELECT DISTINCT item_name FROM sales
グループ化する条件を加えてデータを取得する
基本構文
SELECT カラム名A, 集計関数 FROM テーブル名 GROUP BY カラム名A HAVING 条件式
サンプル
各item_nameのデータ数で3回以上のデータを取得する
SELECT item_name, COUNT(*) FROM sales GROUP BY item_name HAVING COUNT(*) >= 3
データをグループ化して取得する
基本構文
SELECT カラム名A, 関数(引数) FROM テーブル名 GROUP BY カラム名A
サンプル
各item_nameのデータ数を取得する
SELECT item_name, COUNT(*) FROM sales GROUP BY item_name
IN条件を満たすデータを取得する
基本構文
SELECT * FROM テーブル名 WHERE カラム名 IN (データ名1, データ名2, ...)
サンプル
'item_name'で'リンゴ', 'バナナ'に該当する値を取得する
SELECT * FROM sales WHERE item_name IN ('リンゴ', 'バナナ')
データの最大値を取得する
基本構文
SELECT MAX(カラム名) FROM テーブル名
サンプル
priceの最大値を取得する
SELECT MAX(price) FROM sales
データの最低値を取得する
基本構文
SELECT MIN(カラム名) FROM テーブル名
サンプル
priceの最低値を取得する
SELECT MIN(price) FROM sales
複数カラムのデータを取得する
基本構文
SELECT カラム名1, カラム名2, ... FROM テーブル名
サンプル
item_nameとcustomerの値を取得する
SELECT item_name, customer FROM sales
特定の範囲を満さないデータを取得する
基本構文
SELECT * FROM テーブル名 WHERE カラム名 NOt BETWEEN 条件A AND 条件B
サンプル
priceが300と400の間に該当しない値を取得する
SELECT * FROM sales WHERE price NOt BETWEEN 300 AND 400
NOT IN条件を満たすデータを取得する
基本構文
SELECT * FROM テーブル名 WHERE カラム名 NOT IN (データ名1, データ名2, ...)
サンプル
'item_name'で'リンゴ', 'バナナ'に該当しない値を取得する
SELECT * FROM sales WHERE item_name NOT IN ('リンゴ', 'バナナ')
条件を満たさないデータを取得する
基本構文
SELECT * FROM テーブル名 WHERE NOT 条件式
サンプル
item_name = 'リンゴ'に該当しない値を取得する
SELECT * FROM sales WHERE NOT item_name = 'リンゴ'
OR条件を満たすデータを取得する
基本構文
SELECT * FROM テーブル名 WHERE 条件式1 OR 条件式2
サンプル
item_name = 'リンゴ'かitem_name != バナナに該当する値を取得する
SELECT * FROM sales WHERE item_name = 'リンゴ' OR item_name <> 'バナナ'
降順にデータを並べ替える
基本構文
SELECT * FROM テーブル名 ORDER BY 並べ替え基準のカラム名 DESC
サンプル
priceが高い順に値を取得する
複数の条件でデータを並べ替える
基本構文
SELECT * FROM テーブル名 ORDER BY 並べ替え基準のカラム名A, 並べ替え基準のカラム名B, ...
サンプル
priceが安い順に並べた後にitem_contの小さい順に値を取得する
SELECT * FROM sales ORDER BY price, item_cont
昇順にデータを並べ替える
基本構文
SELECT * FROM テーブル名 ORDER BY 並べ替え基準のカラム名
サンプル
priceが安い順に値を取得する
SELECT * FROM sales ORDER BY price
データの合計値を取得する
基本構文
SELECT SUM(カラム名) FROM テーブル名
サンプル
priceの合計値を取得する
SELECT SUM(price) FROM sales
条件を満たすデータを取得する
基本構文
SELECT * FROM テーブル名 WHERE 条件式
サンプル
item_name = 'リンゴ'に該当する値を取得する
SELECT * FROM sales WHERE item_name = 'リンゴ'
備考
記号の種類
記号 | 意味 |
---|
= | 左辺と右辺が同じ |
< | 左辺が右辺より小さい |
> | 左辺が右辺より大きい |
<= | 左辺が右辺以下 |
>= | 左辺が右辺以上 |
<> | 左辺と右辺が異なる |
算術演算子
演算子 | 意味 |
---|
+ | 足し算 |
– | 引き算 |
* | 掛け算 |
/ | 割り算 |
% | 割り算の余りを求める |
SQL 実行順番
優先順位 | 説明 | 句 |
---|
1 | データを取り出すテーブルを指定する | – |
2 | テーブルを結合す | INNER JOIN句, ON句 |
3 | 取り出すデータの条件を付ける | WHERE句 |
4 | グループ化 | GROUP BY句 |
5 | グループ化した後に条件を付ける | HAVING句 |
6 | 取り出すカラムを指定する | SELECT句 |
7 | レコードを並べ替える | ORDER BY句 |