🔖

PostgreSQLで DESC が使えない理由とその代替手段

2025/04/15に公開

※自分用のメモです

はじめに

MySQLでは テーブル構造の確認方法として以下のコマンドを使用していました。

DESC users;

PostgreSQLでも同じように使えると思って試してみたところ、エラーになりました。
「PostgreSQLではDESC使えないのか…」と少々戸惑ったので、
今回はPostgreSQLでのテーブル構造の確認方法と、MySQLとの違いについて簡単に整理しておきます。

MySQLの DESC コマンドについて

MySQLでは、以下のコマンドを実行することで、テーブル users のカラム情報を簡単に確認することができます。

DESC users;

もしくは、以下のようにDESCRIBEを使っても同様の結果が得られます。

DESCRIBE users;

PostgreSQLでは DESC が使えない

一方、PostgreSQLでは DESC は「降順(descending)」を意味するSQLの予約語であり、
テーブル構造の確認には使用できません。

そのため、PostgreSQLでテーブル構造を確認するには以下の方法を使います。

PostgreSQLでの確認方法

1. \d コマンド(psql限定)

PostgreSQLのターミナルクライアント psql を使っている場合、次のコマンドが便利です。

\d users

2. information_schema.columns を使う

より詳細にカラム情報を確認したい場合や、アプリからSQLを実行する必要がある場合には、
information_schema.columns ビューを使うこともできます。

SELECT column_name, data_type, is_nullable, column_default
FROM information_schema.columns
WHERE table_schema = 'public' AND table_name = 'users';

まとめ

MySQLとPostgreSQLは、細かなコマンドや仕様に違いがあります。
今回のように「MySQLで使えていたコマンドがPostgreSQLでは使えない」という場面は、移行や併用の際に戸惑う要因になりやすいです。
本記事では、PostgreSQLでテーブル構造を確認する際の基本的な方法を紹介しました。
PostgreSQLに少しずつ慣れていく中で、こうした違いにも気づけるようになっていけたらと思います。

Discussion