🔖
PostgreSQLで DESC が使えない理由とその代替手段
※自分用のメモです
はじめに
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での確認方法
\d
コマンド(psql限定)
1. PostgreSQLのターミナルクライアント psql
を使っている場合、次のコマンドが便利です。
\d users
information_schema.columns
を使う
2. より詳細にカラム情報を確認したい場合や、アプリから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