3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PostgreSQLの情報スキーマ、システムカタログ

Last updated at Posted at 2022-10-12

要点

情報スキーマ システムカタログ
スキーマのこと 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)に含まれるテーブルの一覧が表示される --
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?