PostgreSQLのスキーマ内のテーブル一覧を表示する方法:psqlコマンド、SQLクエリ、GUIツール、情報スキーマ、pg_catalog.pg_tablesビュー、システムテーブル

2024-04-02

PostgreSQLのスキーマ内のテーブル一覧を表示する方法

psqlコマンドは、PostgreSQLデータベースと対話するためのコマンドラインツールです。psqlを使用してスキーマ内のテーブル一覧を表示するには、以下のコマンドを実行します。

\dt \d+ テーブル名
  • \dt は、テーブル一覧を表示するコマンドです。
  • \d+ は、スキーマ名とテーブル名を表示するオプションです。
  • テーブル名 は、表示したいテーブル名です。

例:

# publicスキーマ内のテーブル一覧を表示
\dt public

# テーブル名 "users" の情報のみ表示
\dt public users

SQLクエリを使用する

以下のSQLクエリを使用して、スキーマ内のテーブル一覧を取得することもできます。

SELECT tablename
FROM pg_catalog.pg_tables
WHERE schemaname = 'スキーマ名'
ORDER BY tablename;
  • tablename は、テーブル名の列です。
  • pg_catalog.pg_tables は、PostgreSQLシステムカタログのテーブルです。
  • schemaname は、スキーマ名の列です。
  • ORDER BY tablename は、テーブル名で結果をソートするオプションです。
# publicスキーマ内のテーブル一覧を取得
SELECT tablename
FROM pg_catalog.pg_tables
WHERE schemaname = 'public'
ORDER BY tablename;

# テーブル名 "users" の情報のみ取得
SELECT tablename
FROM pg_catalog.pg_tables
WHERE schemaname = 'public'
AND tablename = 'users';

pgAdminなどのGUIツールを使用すると、スキーマ内のテーブル一覧を簡単に表示できます。

pgAdminでスキーマ内のテーブル一覧を表示するには、以下の手順を実行します。

  1. pgAdminを起動し、PostgreSQLデータベースに接続します。
  2. ツリービューで、表示したいスキーマを選択します。
  3. スキーマ内のテーブル一覧が表示されます。

PostgreSQLで特定のスキーマ内のテーブル一覧を表示するには、psqlコマンド、SQLクエリ、GUIツールを使用することができます。

それぞれの方法にはメリットとデメリットがあります。

  • psqlコマンドはシンプルで使いやすいですが、オプションを覚える必要があります。
  • SQLクエリは柔軟性がありますが、複雑なクエリを書く場合はスキルが必要です。
  • GUIツールは初心者にとって使いやすいですが、機能が制限されている場合があります。

自分に合った方法を選択してください。




psqlコマンド

# publicスキーマ内のテーブル一覧を表示
\dt public

# テーブル名 "users" の情報のみ表示
\dt public users

SQLクエリ

# publicスキーマ内のテーブル一覧を取得
SELECT tablename
FROM pg_catalog.pg_tables
WHERE schemaname = 'public'
ORDER BY tablename;

# テーブル名 "users" の情報のみ取得
SELECT tablename
FROM pg_catalog.pg_tables
WHERE schemaname = 'public'
AND tablename = 'users';

pgAdmin

  1. 右側のペインに、publicスキーマ内のテーブル一覧が表示されます。

補足

  • 上記のサンプルコードは、PostgreSQL 14.2で動作確認しています。
  • PostgreSQLのバージョンや環境によっては、動作が異なる場合があります。



PostgreSQLのスキーマ内のテーブル一覧を表示するその他の方法

情報スキーマを使用する

情報スキーマは、PostgreSQLデータベースに関する情報を提供する特別なスキーマです。情報スキーマを使用して、スキーマ内のテーブル一覧を取得するには、以下のSQLクエリを実行します。

SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'スキーマ名'
ORDER BY table_name;
  • information_schema.tables は、情報スキーマのテーブルです。
# publicスキーマ内のテーブル一覧を取得
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public'
ORDER BY table_name;

# テーブル名 "users" の情報のみ取得
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public'
AND table_name = 'users';

pg_catalog.pg_tables ビューは、PostgreSQLデータベース内のすべてのテーブルに関する情報を提供します。このビューを使用して、スキーマ内のテーブル一覧を取得するには、以下のSQLクエリを実行します。

SELECT tablename
FROM pg_catalog.pg_tables
WHERE schemaname = 'スキーマ名'
ORDER BY tablename;
# publicスキーマ内のテーブル一覧を取得
SELECT tablename
FROM pg_catalog.pg_tables
WHERE schemaname = 'public'
ORDER BY tablename;

# テーブル名 "users" の情報のみ取得
SELECT tablename
FROM pg_catalog.pg_tables
WHERE schemaname = 'public'
AND tablename = 'users';

システムテーブルを使用する

PostgreSQLシステムテーブルには、データベースに関するさまざまな情報が格納されています。システムテーブルを使用して、スキーマ内のテーブル一覧を取得するには、以下のSQLクエリを実行します。

SELECT name
FROM pg_class
WHERE relkind = 'r'
AND schemaname = 'スキーマ名'
ORDER BY name;
  • relkind は、テーブルの種類を表す列です。
# publicスキーマ内のテーブル一覧を取得
SELECT name
FROM pg_class
WHERE relkind = 'r'
AND schemaname = 'public'
ORDER BY name;

# テーブル名 "users" の情報のみ取得
SELECT name
FROM pg_class
WHERE relkind = 'r'
AND schemaname = 'public'
AND name = 'users';

PostgreSQLのスキーマ内のテーブル一覧を表示するには、さまざまな方法があります。

  • 情報スキーマと pg_catalog.pg_tables ビューは、使いやすいですが、すべてのテーブル情報を提供していない場合があります。
  • システムテーブルは、すべてのテーブル情報を提供していますが、複雑なクエリを書く必要があります。

postgresql command psql


PostgreSQLでワイルドカードを使って複数のテーブルを削除する方法

PostgreSQL では、ワイルドカードを使用して、名前の共通パターンを持つ複数のテーブルを一度に削除することができます。これを行うには、DROP TABLE ステートメントと LIKE 句を使用します。構文:説明:IF EXISTS: 削除しようとしているテーブルが存在しない場合、エラーを発生させずに静かにスキップします。...


PostgreSQLでALTER TABLEコマンドを使用して列をNULLABLE TRUEに変更する方法

PostgreSQLで既存の列をNULLABLE TRUEに変更するには、いくつかの方法があります。方法ALTER TABLEコマンドを使用する例:usersテーブルのage列をNULLABLE TRUEに変更するUPDATEコマンドを使用する...


Mac OS Xで「psql: could not connect to server: No such file or directory (Mac OS X)」エラーを解決する方法

PostgreSQL サーバが起動していない場合は、まずサーバを起動する必要があります。Homebrew でインストールした場合公式パッケージでインストールした場合PostgreSQL サーバの設定ファイル (/etc/postgresql...


PostgreSQLで「Permission denied for relation」エラーが発生する原因と解決方法

PostgreSQLでテーブルやビューなどのリレーションにアクセスしようとした際に、「Permission denied for relation」エラーが発生することがあります。これは、アクセスしようとしているリレーションに対する権限が不足していることが原因です。...


【PostgreSQL接続トラブル】ポート5432拒否を徹底解決!原因と解決策を完全網羅

PostgreSQLサーバーに接続できないエラーメッセージ:「psql: could not connect to server: Connection refused Is the server running on host "localhost" and accepting TCP/IP connections on port 5432?」...


SQL SQL SQL Amazon で見る



情報スキーマのテーブルを制覇せよ!PostgreSQLの全貌を暴く5つの方法

このチュートリアルでは、以下の方法で PostgreSQL 情報スキーマの全てのテーブルを一覧表示する方法を解説します。方法 1: psql コマンドを使用するpsql コマンドを使用して PostgreSQL サーバーに接続します。\dt コマンドを実行します。


pg_tablesテーブルで詳細情報を取得

psqlコマンドは、PostgreSQLデータベースと対話するためのインタラクティブなツールです。以下のコマンドを実行することで、現在のデータベース内の全てのテーブルを一覧表示できます。オプションで、スキーマを指定してそのスキーマ内の全てのテーブルのみをリストすることもできます。


information_schemaビューを使ってPostgreSQLのテーブル名を一覧表示する

\dtコマンドを使用するこれは、PostgreSQLのpsqlコマンドラインツールで利用できるコマンドです。このコマンドを実行すると、現在のデータベースに存在する全てのテーブル名が一覧表示されます。information_schemaは、PostgreSQLデータベースに関するメタデータ情報を提供するスキーマです。このスキーマには、tablesというビューがあり、このビューには全てのテーブルに関する情報が含まれています。