PostgreSQL基础教程:系统表和系统视图
时间:2020-06-02 来源:
PostgreSQL数据库与Oracle、Mysql等数据库相比,有相似之处,也有区别的地方,系统表是关系型数据库存放结构元数据的地方,比如表和字段以及内部登记信息等。PostgreSQL 的系统表就是普通表。
不应该手工修改系统表,通常总有 SQL 命令可以做这些事情。
比如,CREATE DATABASE 向 pg_database 表插入一行,并且实际上在磁盘上创建该数据库。有几种特别深奥的操作例外,比如增加索引访问方法。
1. 系统表部分:
大多数系统表都是在数据库创建的过程中从模版数据库中拷贝过来的,因此都是数据库相关的。少数表是在整个安装中物理上所有数据库共享的;这些表在独立的表的描述中用指明了。
系统表之间基本上都是以oid关联。系统表pg_class记录表和几乎所有具有列或者像表的东西。这包括索引(但还要参见pg_index)、序列、视图、物化视图、组合类型和TOAST表。relnamespace是该关系的名字空间的OID。从系统表pg_namespace存储名字空间取出名字空间的名字为pg_catalog的,它的iod跟pg_class的oid关联。
pg_catalog这个schema是PostgreSQL默认的元数据schema,所有的元数据都在这里。
relkind:r = 普通表,i = 索引, S = 序列,v = 视图, m = 物化视图, c = 组合类型,t = TOAST表, f = 外部表。
列出所有pg开头的系统表,参考