こんにちは、かつコーチです。
前回はPostgreSQLのインストールと初期設定を解説しました。
今回はPostgreSQLを日常的に操作するための2つのツール、psql(コマンドラインクライアント)とpgAdmin(GUIクライアント)の基本的な使い方を解説します。
どちらか一方だけでも運用は可能ですが、両方の特徴を知っておくと、場面に応じて使い分けられるようになります。
psqlとpgAdmin、どちらを使うべきか
2つのツールの特徴を比較する
| 項目 | psql | pgAdmin |
|---|---|---|
| 操作方法 | コマンドライン | GUI(ブラウザ / デスクトップアプリ) |
| 学習コスト | コマンドを覚える必要がある | 直感的に操作できる |
| スクリプト化 | シェルスクリプトに組み込みやすい | 組み込みにくい |
| テーブル構造の可視化 | \dコマンドでテキスト表示 | ER図やツリー表示で視覚的に確認できる |
| 動作の軽さ | 軽量 | やや重め |
どちらを選べばいいか:判断軸
- 日常的な検証や、SQLをスクリプトに組み込みたい → psql
- テーブル構造を視覚的に把握したい、GUIに慣れている → pgAdmin
- 本格的に運用するなら → 両方使えるようにしておくのが理想(開発時はpsql、構造確認や共有はpgAdmin、という使い分けが実務では多い)
初中級者のうちは、まずpsqlの基本コマンドに慣れておくことを優先してください。
psqlのコマンドはSSH接続先のサーバーでも同じように使えるため、汎用性が高いスキルになります。
psqlの基本操作
手順1:接続する
前回作成したロールとデータベースで接続します。
psql -U appuser -d appdb -h localhost
手順2:メタコマンド(\から始まるコマンド)を覚える
psqlには、SQL文とは別に「メタコマンド」と呼ばれる\から始まる便利なコマンド群があります。
-- データベース一覧を表示
\l
-- 接続先データベースを切り替える
\c appdb
-- テーブル一覧を表示
\dt
-- テーブルの構造(カラム定義)を確認する
\d members
-- 現在の接続情報を確認する
\conninfo
-- psqlを終了する
\q
\d テーブル名は実務でも非常によく使うコマンドです。
「このテーブルにどんなカラムがあったか忘れた」というときに、CREATE TABLE文を探しに行くより早く確認できます。
手順3:SQLを実行する
メタコマンド以外は、通常のSQL文をそのまま入力できます。
SELECT * FROM members LIMIT 5;
SQL文の末尾には、MySQLと同じくセミコロン(;)が必要です。
セミコロンを付け忘れると、次の行の入力を待ち続ける状態(プロンプトがappdb-#に変わる)になるので、その場合はセミコロンを追加してEnterを押せば実行されます。
pgAdminの基本操作
手順1:サーバー接続を登録する
pgAdminを起動したら、左側の「Servers」を右クリックし、「Register」→「Server」を選びます。
「Connection」タブで、Host(localhost)、Port(5432)、Username(appuser)、Password(apppassword)を入力して保存すれば接続完了です。
手順2:テーブル構造をツリー表示で確認する
左側のツリーから「Databases」→「appdb」→「Schemas」→「public」→「Tables」とたどると、テーブルの一覧が表示されます。
テーブルを選択して「Properties」タブを開けば、カラムの型や制約をGUI上で確認できます。
\dコマンドで文字ベースの情報を確認するより、初学者にとっては視覚的に把握しやすいはずです。
手順3:Query Toolでクエリを実行する
上部メニューの「Tools」→「Query Tool」を開くと、SQLエディタが表示されます。
ここにSQL文を入力し、実行ボタン(再生アイコン)またはF5キーで実行すると、下部に結果がテーブル形式で表示されます。
SELECT name, email FROM members WHERE created_at >= '2026-01-01';
結果をCSVでエクスポートする機能もあるため、簡易的なデータ確認やちょっとした集計結果の共有にも便利です。
つまずきやすいポイント:日本語の文字化け
コンソールでの文字化け
私が初めてpsqlで日本語データを扱ったとき、ターミナル上で日本語が正しく表示されず、文字化けに悩まされたことがあります。
❌ Before:ターミナルのエンコーディング設定を確認せずに接続する
psql -U appuser -d appdb -h localhost
# SELECT結果の日本語部分が「????」や崩れた文字で表示される
原因を調べたところ、ターミナルアプリの文字エンコーディング設定がUTF-8になっていないことが原因でした。
✅ After:ターミナルのエンコーディングをUTF-8に統一する
PostgreSQL自体はデータベース作成時にUTF8エンコーディングを指定していれば内部的には問題ありません。
-- データベース作成時にエンコーディングを明示する
CREATE DATABASE appdb OWNER appuser ENCODING 'UTF8';
表示側の問題であることが多いため、ターミナルアプリ(Terminal.app、iTerm2など)の設定でエンコーディングがUTF-8になっているかを確認しましょう。
pgAdminを使う場合はブラウザ・アプリ側がUTF-8前提で動くため、この問題にはあまり遭遇しません。
コンソールで日本語が崩れたときは、まずエンコーディング設定を疑う、と覚えておくと解決が早くなります。
まとめ
この記事のポイント
- psqlはコマンドライン、pgAdminはGUIのクライアントで、それぞれ得意分野が異なる
- psqlの
\d(テーブル構造確認)、\l(データベース一覧)、\dt(テーブル一覧)は特によく使う - pgAdminはツリー表示とQuery Toolで、視覚的にテーブル構造やクエリ結果を確認できる
- コンソールでの日本語文字化けは、多くの場合ターミナル側のエンコーディング設定が原因
次に読むべき記事
環境構築とツールの使い方を押さえたところで、次はPostgreSQLならではのデータ型を見ていきましょう。
次回はPostgreSQL固有のデータ型(配列型・範囲型など)を解説します。
→ 次の記事:PostgreSQL固有のデータ型(配列型・範囲型など)
タグ: PostgreSQL, 初心者向け, 環境構築