【実務・中級編】 対話型ターミナルpsqlの基本操作 – PostgreSQL

psqlを制する者はPostgreSQLを制す:現場で役立つ基本操作の勘所

やあ、PostgreSQLの世界へようこそ。

現場でバリバリ開発していると、GUIツール(DBeaverとかpgAdminとか)を使う場面も多いよね。もちろんそれらも便利だけど、いざサーバーにSSHで飛び込んだ時や、トラブルシューティングで「今すぐ中身を確認したい!」という時に、結局最後に頼りになるのは黒い画面、そう、psqlだ。

今回は、僕が実務で「これだけは体に染み込ませておけ」と思っているpsqlの基本操作をまとめてみた。ただのマニュアルじゃなくて、現場の空気感を交えて解説していくよ。

—

1. まずは「接続」と「切り替え」の作法

まずはデータベースへのログイン。基本はこれだ。

psql -U ユーザー名 -d データベース名 -h ホスト名

でも、毎回これを打つのは面倒だよね。環境変数`PGDATABASE`や`PGUSER`を設定しておくのも手だけど、実務では`.pgpass`ファイルを使ってパスワードを保存しておくのが定石だ。

接続したあと、データベースを切り替えるときはこれを使う。

  • `\l` : データベースの一覧を表示する(lはlistの略)
  • `\c データベース名` : 別のデータベースに接続し直す(cはconnectの略)

「あれ、今どのDBにいるんだっけ?」と迷子になったら、とりあえず `\c` を打てば現在地が表示されるから安心していい。

—

2. メタコマンドで「構造」を覗く

SQLを書く前に、まずはテーブル構成を確認しないと始まらないよね。ここで活躍するのが「バックスラッシュ(\)から始まるメタコマンド」だ。これがpsqlの真骨頂と言ってもいい。

  • `\dt` : テーブル一覧を表示する
  • `\d テーブル名` : そのテーブルの定義(カラムや型、制約など)を確認する

特に `\d` は命綱だ。カラムの型を忘れた時、インデックスがどうなっているか見たい時、これ一つで全部わかる。

先輩からのアドバイス:
「`\d` で情報が多すぎて読みづらい!」って時は、`\d テーブル名` の後にワイルドカードを使うこともできるし、特定のスキーマだけ絞り込みたいときは `\dn` や `\dt スキーマ名.` を使いこなすと、かなり作業が速くなるぞ。

—

3. SQLの実行と「セミコロン」の罠

psqlでは、SQLの末尾に「セミコロン(;)」を打たないと実行されない。

SELECT FROM users WHERE status = ‘active’;

これ、たまに忘れて「あれ、何も起きないな?」と焦ることがあるよね。実は、何も起きないんじゃなくて、psqlが「まだクエリの続きがあるのかな?」と待機している状態なんだ。もし間違えてEnterを押しちゃったら、焦らずに `;` を入力すればそのまま実行されるから大丈夫。

—

4. 出力結果を見やすくする(表示設定)

デフォルトの表示だと、カラム数が多いテーブルで結果が折り返されて、画面がぐちゃぐちゃになることがあるよね。そんな時は以下のコマンドで表示形式を変えてみてほしい。

  • `\x` : 拡張表示(Expanded display)。レコードを縦に並べて表示してくれる。これが最強。
  • `\pset border 2` : 枠線を見やすくする。
  • `\a` : 枠線を消して、CSVっぽく出力する(データ抽出時に便利)。

特に `\x` は、デバッグ中には必須だ。一度打つとON/OFFが切り替わるトグル式だから、「あれ、表示がおかしくなった?」と思ったらもう一度 `\x` を叩いてみて。

—

5. 最後に:困ったら「help」を叩け

psqlには強力なヘルプ機能がある。

  • `\h` : SQLコマンドのヘルプ(`\h SELECT` とか)
  • `\?` : psqlメタコマンドのヘルプ

全部を暗記する必要なんてない。僕だって、たまにオプションを忘れて `\?` を叩くことはある。大切なのは「困ったときにどこを調べればいいか」を知っていることだ。

—

まとめ:慣れれば最強の相棒になる

psqlはシンプルだけど、実は奥が深いツールだ。最初は黒い画面に抵抗があるかもしれないけれど、使いこなせるようになると、GUIツールを立ち上げるのが億劫になるくらい快適なデータベース操作ができるようになる。

まずは今日紹介した `\dt` と `\d` を使って、自分の開発環境のテーブルを覗いてみてほしい。そこから、君のPostgreSQLマスターへの道が始まるはずだ。

何か詰まったら、いつでも聞いてくれ。一緒に最高のアウトプットを出していこう!

コメント

タイトルとURLをコピーしました