Tihiroの頭を休めるIT教室

少しだけ頭使って後は根性

PostgreSQLでテーブルの定義を確認する。

概要

タイトルの通りなのですが、PostgreSQLでテーブルの定義を確認する方法です。 要するにOracleでいうDESCコマンドみたいなのを実行したいわけなんです。

主キー(プライマリーキー)とか確認したい場合は↓で。

PostgreSQLでテーブルの制約を確認する。 - Tihiroの頭を休めるIT教室

環境

PostgreSQL 9.6

やってみる

メタコマンドを利用したテーブル定義の表示

¥d テーブル名

引数なしで

¥d

とすると、データベース内のテーブルが一覧表示されます。

¥?

とすると、メタコマンドが一覧表示されます。どんなメタコマンドがあるのか、一覧結果を眺めているだけでも楽しいですよね。

SELECT文を利用したテーブル定義の表示

基本的にはメタコマンドを利用して、テーブル定義を確認すれば良いのですが、PgAdminではメタコマンドが(多分)利用できません*1

そこで、下記のSELECT文を実行することで、WHERE句で指定したテーブル名の定義を取得することができます。

SELECT
    col.table_name AS "テーブル名"
  , col.ordinal_position AS "No"
  , column_name AS "カラム名"
  , col.data_type AS "データ型"
  , col.character_maximum_length AS "文字数(文字列型)"
  , col.character_octet_length AS "バイト数(文字列型)"
  , col.numeric_precision AS "桁数(数値型)"
  , col.numeric_scale AS "小数部(数値型)"
  , col.datetime_precision AS "ミリ秒以下(日付型)"
  , col.interval_type AS "インターバルの単位(日付型)"
  , col.is_nullable AS "NULL_OK?"
  , col.column_default AS "デフォルト値"
FROM
  information_schema.columns col
WHERE
  col.table_name = 'テーブル名'
ORDER BY
    col.table_name
  , col.ordinal_position

体裁とかは適宜*2整えてください。

まとめ

以上、PostgreSQLでテーブル定義を確認する方法でした。何回も実行するのがめんどい場合はFunction化するのもよいですね!

ちなみに、PostgreSQLにも標準SQLにも「DESCRIBE」は存在するようなのですが、Oracleとは使い方が違う? マニュアル見てもよく分からないので理解ができたときにでも。

次は、テーブルの制約などを確認する方法などを記事にしたいと思います。

*1:利用できる方法をご存じの方は、ご教授頂けると大変喜びます

*2:個人的に、適宜とか適当って言葉が大好きです