要点
情報スキーマ |
システムカタログ |
スキーマのこと |
pg_catalogスキーマに含まれるテーブルのこと |
誰でも参照可能(権限不要) |
誰でも参照可能(権限不要) |
簡単な情報を格納する |
詳細な情報を格納する |
初期のDBユーザに所有される |
|
SQL標準規格に当てはまるので移植性が高い |
PostgreSQL特有のものなので移植性が低い |
主なテーブルはtables |
主なテーブルは5つ(そのうち3つがDBクラスタ全体の情報を格納している) |
※実際は、両者それぞれinformation_schema, pg_catalogスキーマに含まれるテーブルを用いる
※おそらく、誰でもテーブルの内容を参照、更新することができる
情報スキーマ
- データベースオブジェクトに関する定義情報を含むスキーマ。
- 主なテーブルとして、tablesを持つ。
- 取得される情報は、システムカタログよりも簡単なもの
特徴 |
スキーマ名は、information_schema |
SQLの標準規格に当てはまるので、移植性が高い |
ビュー(SQL文のSELECT結果を基にして定義する仮想のテーブル)とテーブルのグループである |
データベースクラスタの作成時に作られたスーパーユーザに所有される |
参照に特別な設定や権限は不要である |
【information_schemaの主なテーブル】 |
説明 |
tables |
publicスキーマ内を含む、全てのテーブルとビューの一覧を格納している。 |
実行例
testdb=# SELECT * FROM information_schema.tables;
-- publicスキーマ内を含む、全てのテーブルとビューの一覧が表示される --
システムカタログ
- データベースの内部情報を格納したPostgreSQL固有のテーブル。(スキーマではない)
- システムカタログは、pg_catalogというスキーマ内に格納されている。
特徴 |
スキーマの名称は「pg_catalog」である (暗黙的に必ず検索パスに含まれるため、スキーマの指定は省略することができる) |
SQLの標準規格には当てはまらないので、移植性が低い |
情報スキーマより詳細な情報を確認する際に使用する |
データベースクラスタの管理に関する情報を含む |
【PostgreSQLの主なシステムカタログ】 |
説明 |
pg_tables |
接続しているDB内のテーブルに関する情報を格納している |
pg_indexes |
接続指定しているDB内のインデックスに関する情報を格納している |
pg_database |
DBクラスタ全体のDBに関する情報を格納している |
pg_user |
DBクラスタ全体のユーザに関する情報を格納している |
pg_authid |
DBクラスタ全体のロールに関するパスワードなども含めた情報を格納している |
※pg_database, pg_user, pg_authidの3つは、DBクラスタ全体の情報を格納している
実行例
testdb=# SELECT * FROM pg_tables;
-- 接続中のDB(testdb)に含まれるテーブルの一覧が表示される --