📔

PostgreSQL 基本コマンドメモ

2022/01/16に公開

PostgreSQL への接続

-- path は psql がある場所を指定
/Library/PostgreSQL/14/bin/psql -U postgres

データベースの作成

CREATE DATABASE <データベース名>;

データベースに接続

\c <データベース名>

テーブルの操作


テーブルの作成

CREATE TABLE <テーブル名>
(<列名1> <データ型> <この列の制約>,
 <列名2> <データ型> <この列の制約>,
                      ︙
 <このテーブルの制約1>, <このテーブルの制約2>, ・・・);

テーブルの削除

DROP TABEL <テーブル名>;

テーブルに列を追加

ALTER TABLE <テーブル名> ADD COLUMN <列名>;

テーブルの列を削除

ALTER TABLE <テーブル名> DROP COLUMN <列名>;

テーブル名を変更

ALTER TABLE <現在のテーブル名> RENAME TO <新しいテーブル名>;

SELECT 文


全ての列を出力(*)

SELECT * FROM <テーブル名>;

指定した列を出力(SELECT FROM)

SELECT <列名> FROM <テーブル名>;

-- 列名を複数指定する場合
SELECT <列名1>, <列名2>, ・・・
    FROM <テーブル名>;

列に別名を付けて出力(AS)

SELECT <列名> AS <別名> FROM <テーブル名>;
  • 別名を日本語で付ける場合は、ダブルクォーテーション(”)で囲む

出力結果から重複行を省く(DISTINCT)

SELECT DISTINCT <列名> FROM <テーブル名>;

-- 列名を複数指定する場合
SELECT DISTINCT <列名1>, <列名2> FROM <テーブル名>;

WHERE 句


条件を指定して出力(WHERE)

SELECT <列名>, ・・・
  FROM <テーブル名>
WHERE <条件式>;

NOT 演算子

SELECT <列名>, ・・・
  FROM <テーブル名>
WHERE NOT <条件式>;

AND 演算子

SELECT <列名>, ・・・
  FROM <テーブル名>
WHERE <条件式1>
  AND <条件式2>;

OR 演算子

SELECT <列名>, ・・・
  FROM <テーブル名>
WHERE <条件式1>
  OR <条件式2>;

集約と並び替え


テーブルの行数を取得(COUNT)

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

NULL を除外して行数を取得

-- 列名内の NULL の行はカウントされない
SELECT COUNT(<列名>) FROM <テーブル名>;

重複値を除いて行数を取得(DISTINCT)

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

合計を取得(SUM)

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

-- 列名を複数指定する場合
SELECT SUM(<列名>), SUM(<列名>) FROM <テーブル名>;

平均値を取得(AVG)

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

最大値を取得(MAX)

SELECT MAX(<列名>) FROM <テーブル名>;

最小値を取得(MIN)

SELECT MIN(<列名>) FROM <テーブル名>;

グループ分け(GROUP BY)

SELECT <列名1>, <列名2>, ・・・
    FROM <テーブル名>
GROUP BY <列名1>, <列名2>, ・・・;

グループ分けした結果に条件指定(HAVING)

SELECT <列名1>, <列名2>, ・・・
    FROM <テーブル名>
GROUP BY <列名1>, <列名2>, ・・・
HAVING <グループの結果に対する条件>;

昇順に並び替え(ORDER BY)

SELECT <列名1>, <列名2>, ・・・
  FROM <テーブル名>
ORDER BY <列名1>, <列名2>, ・・・;

降順に並び替え(DESC)

SELECT <列名1>, <列名2>
  FROM <テーブル名>
ORDER BY <列名1>, <列名2> DESC;

データの更新


データの登録(INSERT)

INSERT INTO <テーブル名> (1,2, ・・・) VALUES (1,2, ・・・);

-- 列名は省略可(テーブルの全列に対して INSERT を行う場合)
INSERT INTO <テーブル名> VALUES (1,2, ・・・);

全データの削除(DELETE)

DELETE FROM <テーブル名>;

一部の行だけを削除

DELETE FROM <テーブル名>
  WHERE <条件>;

データの更新(UPDATE)

UPDATE <テーブル名>
  SET <列名> = <>;

条件を指定した更新

UPDATE <テーブル名>
  SET <列名> = <>
WHERE <条件>;

トランザクション

BEGIN TRANSACTION;

/*
UPDATE や DELETE 文をここで複数行実行
*/

-- 確定の場合
COMMIT;

-- 取り消したい場合
ROLLBACK;

Discussion