1
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?

More than 1 year has passed since last update.

(PostgreSQL)実務でよく使うSQLコピペシート

Last updated at Posted at 2023-03-05

SQLの書き方が覚えられない自分用にコピペシートを作成しました。
随時更新していく。

SELECT文

オプション全部載せver
SELECT
  別名1.カラム名1, 別名1.カラム名2, 別名2.カラム名1, ...
FROM
  テーブル名1 AS 別名1
  LEFT JOIN テーブル名2 AS 別名2
    ON 別名1.カラム名 = 別名2.カラム名
WHERE
  条件式
  AND 条件式
  OR 条件式
ORDER BY
  カラム名 ASC または DESC
LIMIT
  返す行数の限度
OFFSET
  返す行の開始位置
;

基本構文

SELECT カラム名 FROM テーブル名;

テーブル結合 JOIN

(PostgreSQL)JOINのLEFT・RIGHT・INNERの結果早見表

別名 AS

  • 「AS」は省略可能
「AS」省略ver
FROM
  テーブル名1 別名1
  LEFT JOIN テーブル名2 別名2
    ON 別名1.カラム名 = 別名2.カラム名

カラムを選択する際に、「テーブル名(別名).」を付けなくてもSELECTできるが、同一のカラム名が存在する場合にエラーになるため、付けた方がよい

エラーケース
-- productテーブル
 id |   name    | price |  description  |         created_at         |         updated_at         
----+-----------+-------+---------------+----------------------------+----------------------------
  1 | product1  |  1000 | description1  | 2023-03-05 11:14:59.348303 | 2023-03-05 11:14:59.348303
  2 | product2  |  2000 | description2  | 2023-03-05 11:14:59.348303 | 2023-03-05 11:14:59.348303
  3 | product3  |  3000 | description3  | 2023-03-05 11:14:59.348303 | 2023-03-05 11:14:59.348303

-- salesテーブル
 id |   name    | price |  description  |         created_at         |         updated_at         
----+-----------+-------+---------------+----------------------------+----------------------------
  1 | product1  |  1000 | description1  | 2023-03-05 11:14:59.348303 | 2023-03-05 11:14:59.348303
  2 | product2  |  2000 | description2  | 2023-03-05 11:14:59.348303 | 2023-03-05 11:14:59.348303
  3 | product3  |  3000 | description3  | 2023-03-05 11:14:59.348303 | 2023-03-05 11:14:59.348303

-- SQL発行
SELECT
  id, name, description -- id がどちらのテーブルにも存在
FROM
  product AS p
  LEFT JOIN sales AS s
    ON p.id = s.product_id;

-- 実行結果
-- ERROR: column reference "id" is ambiguous 

並び替え ORDER BY

  • ASC
    昇順(1,2,3,...100)
    デフォルト値。「ORDER BY」記述しないと自動的に昇順になる。

  • DESC
    降順(100,99,98,...1)
    新しい順で表示したい時に使うことが多い

INSERT文

1行挿入
INSERT INTO テーブル名 (カラム名1, カラム名2, カラム名3, ... ) VALUES (1, 2, 3, ... );
複数行挿入
INSERT INTO テーブル名 (カラム名1, カラム名2, カラム名3, ... ) VALUES
(1-1, 1-2, 1-3, ... ),
(2-1, 2-2, 2-3, ... ),
(3-1, 3-2, 3-3, ... ),
(4-1, 4-2, 4-3, ... );

UPDATE文

UPDATE テーブル名 SET カラム名1 = 1, カラム名2 = 2, ... WHERE 条件式 ;

DELETE文

全行削除
DELETE FROM テーブル名;
該当行のみ削除
DELETE FROM テーブル名 WHERE カラム名 = '値';

CREATE TABLE

CREATE TABLE teble_name (
    -- カラム名 データ型
    id SERIAL,

    -- 外部キー カスケード
    column_name TEXT NOT NULL REFERENCES teble_name (column_name) ON DELETE CASCADE,

    -- デフォルト値設定
    column_name BOOLEAN NOT NULL DEFAULT false,

    -- タイムスタンプ
    created_at TIMESTAMP DEFAULT now(),
    updated_at TIMESTAMP DEFAULT now(),

    -- プライマリーキー
    PRIMARY KEY (id)
);

カラム追加・削除・変更

-- 追加
ALTER TABLE テーブル名 ADD COLUMN カラム名 データ型;

-- 削除
ALTER TABLE テーブル名 DROP COLUMN カラム名;

-- 変更
ALTER TABLE テーブル名 ALTER COLUMN カラム名 TYPE データ型
1
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
1
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?