データベース操作関連コマンド
- データベースの作成:
CREATE DATABASE データベース名;
- データベースへの接続:
\c データベース名;
- データベースの一覧表示:
\l
テーブル操作関連コマンド
- テーブルの作成:
CREATE TABLE テーブル名 (カラム名 データ型, ...);
- レコードの挿入:
INSERT INTO テーブル名 (カラム1, カラム2, ...) VALUES (値1, 値2, ...);
- レコードの取得:
SELECT * FROM テーブル名 WHERE 条件;
- テーブルの一覧表示:
\dt
クエリ関連コマンド
- テーブル結合:
SELECT * FROM テーブル1 JOIN テーブル2 ON 条件;
- 条件付きクエリ:
SELECT * FROM テーブル名 WHERE 条件;
- ソート:
SELECT * FROM テーブル名 ORDER BY カラム名 ASC/DESC;
- 集計:
SELECT カラム, 関数(カラム) FROM テーブル名 GROUP BY カラム;
データの更新と削除
- データの更新:
UPDATE テーブル名 SET カラム = 新しい値 WHERE 条件;
- データの削除:
DELETE FROM テーブル名 WHERE 条件;
インデックス関連コマンド
- インデックスの作成:
CREATE INDEX インデックス名 ON テーブル名 (カラム名);
ビュー関連コマンド
- ビューの作成:
CREATE VIEW ビュー名 AS クエリ;
- ビューの削除:
DROP VIEW ビュー名;
バックアップとリストア関連コマンド
- バックアップの作成:
pg_dump -h ホスト名 -U ユーザー名 -d データベース名 -f バックアップファイル名
- バックアップからのリストア:
pg_restore -h ホスト名 -U ユーザー名 -d データベース名 バックアップファイル名
ロールと権限関連コマンド
- ロールの作成:
CREATE ROLE ロール名 WITH LOGIN PASSWORD 'パスワード';
- ロールへの権限付与:
GRANT 権限名 ON オブジェクト名 TO ロール名;
知っておくと便利1
- DESCRIBEコマンド(\d+): テーブルやビューの詳細な情報を表示します。カラムや制約、インデックスなどの情報が含まれます。
\d+ テーブル名
- EXPLAINコマンド: クエリの実行計画を表示して、クエリの最適化やパフォーマンスの改善ポイントを特定します。
EXPLAIN SELECT * FROM テーブル名 WHERE 条件;
- VACUUMコマンド: データベースのメンテナンスを行い、削除された行によるスペースを回収します。
VACUUM テーブル名;
- ANALYZEコマンド: テーブルの統計情報を更新してクエリプランナーの最適化を向上させます。
ANALYZE テーブル名;
- ALTER COLUMNコマンド: テーブルのカラムの属性を変更します。データ型の変更やNULL制約の追加・削除などが可能です。
ALTER TABLE テーブル名 ALTER COLUMN カラム名 SET データ型;
- CREATE EXTENSIONコマンド: PostgreSQLの拡張機能を有効化します。例えば、hstoreやuuid-osspなどがあります。
CREATE EXTENSION 拡張機能名;
- COPYコマンド: ファイルからテーブルにデータを効率的にロードします。
COPY テーブル名 FROM 'ファイルパス' DELIMITER ',' CSV HEADER;
- SHOWコマンド: PostgreSQLの設定やシステム情報を表示します。例えば、設定値の取得やバージョン情報の確認ができます。
SHOW 設定名;
- REINDEXコマンド: インデックスを再構築します。データベースのパフォーマンスを向上させるために行われることがあります。
REINDEX INDEX インデックス名;
- RESETコマンド: ユーザーが設定したセッションレベルの変数をリセットします。
RESET 変数名;
便利すぎ2
- COUNT関数: 指定したカラムの非NULL値の数をカウントします。
SELECT COUNT(カラム名) FROM テーブル名 WHERE 条件;
- SUM関数: 指定したカラムの数値を合計します。
SELECT SUM(カラム名) FROM テーブル名 WHERE 条件;
- AVG関数: 指定したカラムの数値の平均値を計算します。
SELECT AVG(カラム名) FROM テーブル名 WHERE 条件;
- MAX関数: 指定したカラムの最大値を抽出します。
SELECT MAX(カラム名) FROM テーブル名 WHERE 条件;
- MIN関数: 指定したカラムの最小値を抽出します。
SELECT MIN(カラム名) FROM テーブル名 WHERE 条件;
- COUNT(*): テーブル内の全レコードの数をカウントします。
SELECT COUNT(*) FROM テーブル名;
- GROUP BYとCOUNT: グループごとのレコード数をカウントします。
SELECT カラム名, COUNT(*) FROM テーブル名 GROUP BY カラム名;
- HAVING句: GROUP BYの結果に対して条件を指定します。
SELECT カラム名, COUNT(*) FROM テーブル名 GROUP BY カラム名 HAVING COUNT(*) > 5;
便利すぎ3
- BETWEEN演算子: 指定した範囲内の値をカウントします。
SELECT COUNT(*) FROM テーブル名 WHERE カラム名 BETWEEN 値1 AND 値2;
- LIKE演算子: パターンにマッチする値をカウントします。%は任意の文字列を、_は任意の一文字を表します。
SELECT COUNT(*) FROM テーブル名 WHERE カラム名 LIKE 'パターン';
- DISTINCTキーワード: 重複を除いた値の数をカウントします。
SELECT COUNT(DISTINCT カラム名) FROM テーブル名;
- CASE文: 条件に応じて値をカウントします。
SELECT COUNT(CASE WHEN 条件1 THEN カラム名 ELSE NULL END) FROM テーブル名;
- NULL値のカウント: NULL値の数をカウントします。
SELECT COUNT(*) FROM テーブル名 WHERE カラム名 IS NULL;
- EXISTSサブクエリ: サブクエリの結果に応じて条件を満たす値をカウントします。
SELECT COUNT(*) FROM テーブル名 WHERE EXISTS (SELECT 1 FROM 別のテーブル WHERE 条件);
- ARRAY[]: 配列型のカラム内の要素数をカウントします。
SELECT COUNT(配列カラム名) FROM テーブル名;