[SQL] チートシート

sql-sheet
INDEX

はじめに

SQL文について学習しました。
その結果をチートシートとしてまとめました。

前提条件

itemsというテーブルに下記のデータが保存しております。
id
1
2
3
salesというテーブルに下記のデータが保存しております。
iddateitem_nameitem_contpricecustomerdiscountdiscount_rate
12024-01-01リンゴ3260A さんTrue0.1
22024-01-02バナナ2340B さんFalsenull
32024-01-03イチゴ4550C さんFalsenull
42024-01-04リンゴ5670D さんFalsenull
52024-01-05バナナ1560E さんFalsenull
62024-01-06バナナ4340F さんTrue0.5
72024-01-07イチゴ6230G さんFalsenull
82024-01-08リンゴ2410H さんTrue0.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

全てデータを削除する

基本構文

DELETE FROM テーブル名

サンプル

salesのテーブルの全データを削除する
DELETE FROM sales WHERE

データを削除する

基本構文

DELETE FROM テーブル名 WHERE 条件式

サンプル

2024-01-01のデータを削除する
DELETE FROM sales WHERE date = '2024-01-01'

DROP

テーブルを削除する

基本構文

DROP TABLE テーブル名

サンプル

salesのテーブルを削除する
DROP TABLE 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.カラム名

サンプル

salesitemsidが同じのitemsのデータを取得する
SELECT item_name FROM sales
INNER JOIN items ON sales.id = items.id

条件を含めてテーブルを結合してデータを取得する

基本構文

SELECT カラム FROM テーブル名A
INNER JOIN テーブル名B ON テーブル名A.カラム名 = テーブル名B.カラム名
WHERE 条件式

サンプル

salesitemsのidが同じのitemsのデータの中でitem_cont2より多いデータを取得する
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

全データを取得する

基本構文

SELECT * FROM テーブル名

サンプル

salesの全てのカラムの値を取得する
SELECT * FROM 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

サンプル

price300400の間に該当する値を取得する
SELECT * FROM sales WHERE price BETWEEN 300 AND 400

計算した値を取得する

基本構文

SELECT 計算 FROM テーブル名

サンプル

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_namecustomerの値を取得する
SELECT item_name, customer FROM sales

特定の範囲を満さないデータを取得する

基本構文

SELECT * FROM テーブル名 WHERE カラム名 NOt BETWEEN 条件A AND 条件B

サンプル

price300400の間に該当しない値を取得する
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句
よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

Born in 1994
Engineer's career is from 2020.10
Skill: Next.js, TypeScript, Django, Python, HTML, CSS

INDEX