🧚 聞いてください!Beekeeper Studio は高速でモダンなオープンソースの PostgreSQL GUI です ダウンロード
2024年4月8日 著者: Matthew Rathbone

この記事では、PostgreSQL に組み込まれている仕組みのひとつである information_schema について詳しく見ていきます。

読み進める前に、私たちのモダンで高速な PostgreSQL データベースマネージャーである Beekeeper Studio をご紹介させてください。テーブルやカラムからインデックス、外部キーまで、同じメタデータをサイドバーと構造ビューで確認できます。PostgreSQL では無料でお使いいただけます。こちらからダウンロードしてください。

Information_Schema とは?

Information_schema は、PostgreSQL のデータベースオブジェクトに関する情報を含む標準的なビューのセットで構成されたシステムカタログです。つまり、現在のデータベースに関する情報を保持するメタデータベースです。標準に準拠したすべての SQL データベースエンジンに存在するため、移行時に非常に役立ちます。

なお、information_schema は読み取り専用であり、新しい情報の挿入や既存データの変更はできません。それでは、さまざまな用途で役立つ information_schema 内の各ビューを見ていきましょう。

SELECT table_name 
FROM information_schema.tables 
WHERE table_schema = 'information_schema';

このコードはすべての PostgreSQL バージョンで動作します。
実行すると、information_schema 内でユーザーが利用できるすべてのビューの一覧が返されます。

Information_Schema を使う理由

information_schema は、データベース構造をより効率的に扱ううえで非常に重要です。主に次のような対象に関係します:

  • テーブル
  • カラム
  • インデックス
  • トリガー
  • 制約
  • スキーマ

Information_Schema.Tables

information_schema.tables ビューには、接続中のデータベース内のすべてのテーブルに関する詳細が含まれています。

SELECT table_name 
FROM information_schema.tables 
WHERE table_type = 'BASE TABLE' 
AND table_schema NOT IN ('pg_catalog', 'information_schema');

このコードはすべての PostgreSQL バージョンで動作します。出力は、データベース内のすべてのベーステーブルの一覧になります。

Information_Schema.Columns

information_schema.columns ビューでは、データベース内のカラムの詳細を取得できます。

SELECT table_name, column_name, data_type 
FROM information_schema.columns 
WHERE table_schema NOT IN ('pg_catalog', 'information_schema')
AND table_name   = 'your_table';

このコードはどの PostgreSQL バージョンでも動作します。‘your_table’ を対象のテーブル名に置き換えると、指定したテーブル内のすべてのカラムとそのデータ型の一覧が得られます。

Information_Schema.Triggers

トリガーに関する情報は、デバッグや依存関係の把握に役立ちます。information_schema.triggers ビューを使うと、データベースに紐づくトリガーの詳細を取得できます。

SELECT event_object_table, trigger_name, action_statement, action_timing 
FROM information_schema.triggers;

このコードはすべての PostgreSQL バージョンで動作し、テーブル名、トリガー名、トリガーのアクション、およびそのタイミングを返します。

Information_Schema.Key_Column_Usage

information_schema.key_column_usage ビューは、データベース内の外部キーの関係を把握しやすくする情報を提供します。

SELECT constraint_name, table_name, column_name, ordinal_position
FROM information_schema.key_column_usage
WHERE table_name = 'your_table';

‘your_table’ を対象のテーブル名に置き換えてこのコード(すべての PostgreSQL バージョンで動作)を実行すると、指定したテーブル内の各キーについて constraint_name、table_name、column_name、ordinal_position を取得できます。

まとめ

このチュートリアルでは、PostgreSQL の information_schema について詳しく解説しました。information_schema のビューを活用すれば、データベースの構造や要素をより細かく管理し、より深い洞察を得ることができます。他の SQL データベースから PostgreSQL へ移行する場合、information_schema のビューは SQL の標準の一部であるため、特に便利に感じられるはずです。

PostgreSQL の旅はここで終わりではありません。PostgreSQL の広大な世界をさらに掘り下げ、より高度なトピックやヒント、テクニックを紹介する今後のガイドもお楽しみに。

Beekeeper Studio は無料のオープンソース PostgreSQL GUI です

まさに探していた PostgreSQL クライアントです!UI が他とは一線を画しています。すっきりしていて直感的、しかも強力。使いにくい PGAdmin とはお別れです。 - David Cyprian

Beekeeper Studio は高速で直感的、使いやすい PostgreSQL クライアントです。他にも多数のデータベースに対応しており、Windows、Mac、Linux で快適に動作します。

BeekeeperのLinux版は100%フル機能。手抜きも機能の妥協も一切ありません。

PostgreSQL ユーザーによる Beekeeper Studio の評価

Jay Simons Jay Simons Owner, Designly.biz

pgAdmin と違い、Beekeeper は驚くほどシンプルに使えるのに機能も充実しています。しかも価格も手頃です!データベースのバックアップ機能は特に便利です。本当に素晴らしいソフトウェアです。

Alex M

素晴らしいツールです。Postgres と MySql の DB 管理に使える IDE として、これまでで最も実用的です。面倒なことなく、とにかくちゃんと動きます :-)

PostgreSQL ワークフローを改善しませんか?

download 無料でダウンロード