PostgreSQL 基本コマンド一覧(psql 辞書)
- psql に入る
- データベース関連
- ユーザー・権限
- テーブル関連
- データ操作(CRUD)
- 日時・現在時刻
- トランザクション
- 便利コマンド
- psql を終了する
- よくある注意点
- 困ったときのヘルプ
- 公式ドキュメント / 参考リンク
- psql専用コマンドとSQL文の違い
PostgreSQL🐘を触り始めたとき、
「とりあえずこれだけ分かれば作業できる」
という 基本コマンドを辞書形式でまとめました。
psql に入る
psql に接続
psql(PostgreSQLの対話型ツール)に接続します。postgres はインストール時に作成されたユーザー名で、 この後パスワードの入力を求められます。
psql -U postgres
-U:接続するユーザー名を指定- 実行後、設定したパスワードを入力して接続
- 接続できない場合は
-h localhost -p 5432を追加
データベース関連
データベース一覧を見る
\l
データベースを作成
新しいデータベースを作成します。
CREATE DATABASE sample_db;
データベースに接続(切り替え)
\c sample_db
現在接続中のDBを確認
SELECT current_database();
データベースを削除
DROP DATABASE sample_db;
※接続中のDBは削除できません。
ユーザー・権限
ユーザー一覧
\du
ユーザー作成
CREATE USER sample_user WITH PASSWORD 'password';
権限付与
GRANT ALL PRIVILEGES ON DATABASE sample_db TO sample_user;
テーブル関連
テーブル一覧
※ psql専用コマンド
\dt
テーブル作成
よく使うデータ型を含めたサンプルテーブルです。
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(255),
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
よく使うデータ型
SERIAL:自動採番の整数(主キーでよく使用)INT:整数値VARCHAR(n):文字列(最大 n 文字)BOOLEAN:真偽値(true / false)TIMESTAMP:日時
よく使う制約・DEFAULT
PRIMARY KEY:主キー(行を一意に識別する)NOT NULL:NULL(未入力)を許可しないDEFAULT TRUE:値が指定されなかった場合、true を自動で設定DEFAULT CURRENT_TIMESTAMP:現在の日時を自動で設定
制約の指定例(複合UNIQUE)
複数のカラムの組み合わせで、重複を防ぎたい場合の例です。
CREATE TABLE attendees (
id SERIAL PRIMARY KEY,
event_id INT NOT NULL,
email VARCHAR(255) NOT NULL,
CONSTRAINT unique_event_email
UNIQUE (event_id, email)
);
CONSTRAINT:制約に名前を付けるUNIQUE (event_id, email):同じ組み合わせの重複を防ぐ
テーブル構造を見る
\d users
※ \d+ users を使うと、カラムのコメントやインデックスなど、
より詳細な情報を確認できます。
テーブル削除
DROP TABLE users;
データ操作(CRUD)
データ追加
INSERT INTO users (name, email)
VALUES ('Taro', 'taro@example.com');
データ取得
SELECT * FROM users;
条件付き取得
SELECT * FROM users WHERE id = 1;
データ更新
UPDATE users
SET name = 'Hanako'
WHERE id = 1;
データ削除
DELETE FROM users WHERE id = 1;
日時・現在時刻
現在時刻を取得
SELECT NOW();
今日の日付
SELECT CURRENT_DATE;
トランザクション
トランザクションは「データを守る保険」のようなものです。
取り消し(ROLLBACK)
BEGIN;
UPDATE users SET name = 'Test' WHERE id = 1;
ROLLBACK; -- 取り消し
確定(COMMIT)
BEGIN;
UPDATE users SET name = 'Test' WHERE id = 1;
COMMIT; -- 確定
便利コマンド
縦表示(結果が見づらい時)
\x
実行時間を表示
\timing
コマンド履歴を使う
- ↑ / ↓ キー
※ \x や \timing はトグル形式のため、
現在の状態を確認する専用コマンドはありません。
実行時のメッセージや SELECT の表示結果で確認します。
CSVのエクスポート(\copy)
\copy (SELECT * FROM users) TO 'users.csv' WITH CSV HEADER;
SELECT結果をCSVとして出力できます。
テストデータの確認や、データ共有時によく使います。
表示が長いときのページ操作(pager)
大量のSELECT結果などがページ送り表示になっている場合は、以下のキー操作が使えます。
※環境によっては pager が無効で、ページ送り自体が起きないことがあります。
- space:次のページへ
- b:前のページへ
- G:一番下(最後のページ)へ
- g:一番上へ
- q:表示を終了して psql に戻る
pager の確認・切り替え
\pset pager
\pset pager on
\pset pager off
※ \? などのヘルプ表示では、ページ移動キーが効かないことがあります。
psql を終了する
\q
よくある注意点
\で始まるのは psql専用コマンド- SQL文は
;が必要 exitでは終了できない
困ったときのヘルプ
\?:psql専用コマンド(\l,\qなど)の一覧・ヘルプ\h:SQL文(SELECT,CREATEなど)のヘルプ
「コマンドは合っているはずなのに…」という時は、
まずここを見ると解決することがあります。
公式ドキュメント / 参考リンク
PostgreSQL の公式ドキュメント(日本語版)は以下です。
基本コマンドだけでなく、SQL構文や関数、設定など幅広くカバーされています。
psql専用コマンドとSQL文の違い
| 項目 | psql専用コマンド | SQL文 |
|---|---|---|
| 開始記号 | \(バックスラッシュ) | なし |
| 終了記号 | 改行(Enter) | ; |
| 主な用途 | 接続・一覧表示・設定 | データ操作・定義 |
| 例 | \dt, \c dbname, \q | SELECT * FROM users; |