publicスキーマのテーブル一覧表示
SELECT * FROM information_schema.tables WHERE table_schema = 'public';
ユーザ一覧表示
SELECT * FROM information_schema.enabled_roles;
制約一覧表示
SELECT * FROM information_schema.table_constraints WHERE table_schema = 'public';
または
SELECT table_name, constraint_type, constraint_name FROM information_schema.table_constraints WHERE table_schema = 'public';
または
SELECT constraint_name, check_clause FROM information_schema.check_constraints WHERE constraint_schema = 'public';
publicスキーマの列一覧表示
SELECT table_name, column_name, column_default, is_nullable, data_type, character_maximum_length FROM information_schema.columns WHERE table_schema = 'public';
(columnテーブルの列を確認したければ次のコマンド)
SELECT column_name FROM information_schema.columns WHERE table_name = 'columns' AND table_schema = 'information_schema';
各テーブルの列数を表示
SELECT table_name, count(column_name) AS column_amount FROM information_schema.columns WHERE table_schema = 'public' GROUP BY table_name;
列数が最も多いテーブルを表示
SELECT table_name, count(column_name) AS column_amount FROM information_schema.columns WHERE table_schema = 'public' GROUP BY table_name ORDER BY column_amount DESC LIMIT 1;
外部キーの数をテーブルごとに表示
SELECT table_name, count(constraint_type) FROM information_schema.table_constraints WHERE constraint_schema = 'public' AND constraint_type = 'FOREIGN KEY' GROUP BY table_name;
各テーブルの外部キーの参照先を確認
(各テーブルの主キーも表示される。気にするなら上のinformation_schema.table_constraintsテーブルを結合すれば良いはず)
SELECT
key.table_name,
key.column_name,
key.constraint_name,
usage.table_name,
usage.column_name
FROM
information_schema.key_column_usage AS key
INNER JOIN
information_schema.constraint_column_usage AS usage
ON key.constraint_name = usage.constraint_name
WHERE
key.table_schema = 'public';
指定したテーブルのシーケンスを確認
SELECT
c.table_name, c.column_name, c.column_default
FROM
information_schema.columns AS c
WHERE
c.table_schema = 'スキーマ名'
AND c.table_name = 'テーブル名'
AND c.table_catalog = 'DB名'
AND c.column_default LIKE '%regclass%';