[ PostgreSQL Instance ] (サーバー / クラスター)
│
├── [ Database A ] (独立したデータ空間)
│ │
│ ├── < Schema: public > (デフォルト)
│ │ ├── Table: users
│ │ └── Table: orders
│ │
│ └── < Schema: inventory > (論理的なグループ)
│ ├── Table: products
│ └── Table: stocks
│
└── [ Database B ]
└── < Schema: public >
└── Table: logs
/*List Databases*/
SELECT
datname AS database_name,
pg_get_userbyid(datdba) AS owner,
pg_size_pretty(pg_database_size(datname)) AS size
FROM pg_database
WHERE datistemplate = false;
/*List Schemas*/
SELECT schema_name
FROM information_schema.schemata
WHERE schema_name NOT IN ('information_schema', 'pg_catalog')
AND schema_name NOT LIKE 'pg_toast%'
AND schema_name NOT LIKE 'pg_temp%';
/*List Tables*/
\d
\ds -- sequence のみ
\dt+ -- table のみ
/*List Tables*/
SELECT table_schema, table_name
FROM information_schema.tables
WHERE table_type = 'BASE TABLE'
AND table_schema NOT IN ('information_schema', 'pg_catalog')
ORDER BY table_schema, table_name;
/*Change default search schema*/
SHOW search_path;
SET search_path=public;
/*List Columns*/
\d TABLE_NAME
/*List Columns*/
SELECT column_name, data_type, is_nullable, column_default
FROM information_schema.columns
WHERE table_name = 'TABLE_NAME'/*変更*/
ORDER BY ordinal_position;