koheitakahashiのブログ

2020.07.01にプログラマーとして生を受けた私が学んだことや、日常について徒然に書いていきます。

SQL構文まとめ

SQL構文について、自分が覚えておけるように大雑把ですが、まとめてみました😆

SELECT文

列を検索する構文です。

列を出力する

SELECT 表示したい列 
  FROM テーブル名;

列に名前をつける

SELECT 表示したい列 AS つけたい名前
  FROM テーブル名;

結果から重複文を省く

SELECT DISTINCT 表示したい列 
  FROM テーブル名;

特定の行のみを洗濯

SELECT 表示したい列 
  FROM テーブル名
  WHERE 行の条件を指定;

※WHERE句は行に対して条件を指定します。HAVING句とは条件を指定する対象が異なります。

テーブルの行数を数える

SELECT COUNT(*) 
  FROM テーブル名;

NULLを除外して行数を数える

SELECT COUNT(数えたい列名)
  FROM テーブル名;

合計を求める

SELECT SUM(列名)
  FROM テーブル名;

平均を求める

SELECT AVG(列名)
  FROM テーブル名;

最大値・最小値を求める

SELECT MAX or MIN(列名)
  FROM テーブル名;

重複値を除外して集約関数を使う

SELECT COUNT(DISTINCT 列名)
  FROM テーブル名;

テーブルをグループに切り分ける

SELECT 列名
  FROM テーブル名
  GROUP BY 列名;

集約した結果に条件を指定する

SELECT 列名
  FROM テーブル名
  GROUP BY 列名
  HAVING グループに対する条件;

検索結果を並べ替える

SELECT 列名
  FROM テーブル名
  ORDER BY 列名 ASC or DESC;

データを登録する

INSERT INTO テーブル名 (列名) VALEUS (登録する値);

テーブルを残したままテーブル内の行を削除する

DELETE FROM テーブル名;

データを更新する

UPDATE テーブル名 
  SET 列名 = 式;

トランザクション

BEGIN TRANSACTION
    処理
COMMIT or ROLLBACK;

ビューの作成

CREATE VIEW ビューの名前 
  AS SELECT文;

CASE式の書き方

CASE WHEN 条件 THEN 条件が真の時に実行する処理
    ELSE 条件が偽の時に実行する処理
END;

レコードを足し合わせる

SELECT文
UNION # 重複行をそのまま表示するときはALLをつける
SELECT文 ;

テーブル同士の共通部分を抜き出す

SELECT文
INTERSECT
SELECT文;

テーブル同士の差を抜き出す

SELECT文
EXCEPT
SELECT文;

テーブルとテーブルを結合する

SELECT文
  FROM テーブル名1 INNER JOIN テーブル名2 
  ON 結合する列名1 = 結合する列名2

INNER JOIN では行数が同じ場合にしか結合ができない。そうでなく、両方のテーブルのデータを欠かすことなく結合させたい場合は、OUTER JOINを使います。

ランキングをつけたいとき

SELECT文
  RANK () OVER (PARTITION BY ランキングをつける範囲(列名))
  FROM テーブル名;