PostgreSQLのスキーマ内のテーブル一覧を表示する方法:psqlコマンド、SQLクエリ、GUIツール、情報スキーマ、pg_catalog.pg_tablesビュー、システムテーブル
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でスキーマ内のテーブル一覧を表示するには、以下の手順を実行します。
- pgAdminを起動し、PostgreSQLデータベースに接続します。
- ツリービューで、表示したいスキーマを選択します。
- スキーマ内のテーブル一覧が表示されます。
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
- 右側のペインに、
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