postgreSQL接触了也好久了,一直对他处于一知半解状态。趁着最近有时间,就开始慢慢整理一下。下面先整理了postgreSQL的一些系统表相关东西,也就是当个笔记,方便以后快速查找。

show data_directory;-- 查询配置文件所在位置
show config_file; -- 查询数据储存目录

系统表 :

1)pg_authid表:包含有关数据库认证标识符(角色)的信息。一个角色体现"用户"和"组"的概念。一个用户实际上只是一个设置了 rolcanlogin 标志的角色。任何角色(不管设置了 rolcanlogin)标志)都可以有其它角色做为成员;因为用户标识是集群范围的,pg_authid 在一个集群里所有的数据库之间是共享的:每个集群只有一个 pg_authid 拷贝,而不是每个数据库一个。
字段描述:
rolname:角色名称
rolsuper:角色拥有超级用户权限
rolinherit:角色自动继承其所属角色的权限
rolcreaterole:角色可以创建更多角色
rolcreatedb:角色可以创建数据库
rolcatupdate:角色可以直接更新系统表。如果没有设置这个字段为真,即使超级用户也不能这么做。
rolcanlogin:角色可以登录,也就是说,这个角色可以给予会话认证标识符。
rolconnlimit:对于可以登录的角色,限制其最大并发连接数量。-1 表示没有限制。
rolpassword:口令(可能是加密的);如果没有则为 NULL
rolvaliduntil:口令失效时间(只用于口令认证);如果没有失效期,则为 NULL

2)pg_auth_members表: 显示角色之间的成员关系。任何非闭环的关系集合都是允许的。因为用户标识是集群范围的,pg_auth_members 是在一个集群里的所有数据库之间共享的:每个集群里只有一个 pg_auth_members 拷贝,而不是每个数据库一个。
字段描述:
roleid:拥有有成员的角色的 ID【pg_authid.oid】
member:属于 roleid 角色的一个成员的角色的 ID【pg_authid.oid】
grantor:赋予此成员关系的角色的 ID【pg_authid.oid】

3)pg_database表:存储关于可用数据库的信息。和大多数系统表不同,pg_database 是在一个集群里的所有数据库共享的:每个集群只有一份 pg_database 拷贝,而不是每个数据库一份。
字段描述:
datname:数据库名字
datdba:数据库所有人,通常为其创建者【pg_authid.oid】

4)pg_class表:表记载表和几乎所有有字段或者是那些类似表的东西。包括索引(不过还要参阅 pg_index)、序列、视图、复合类型和一些特殊关系类型
字段描述:
relname:表、索引、视图等的名字
relnamespace:包含这个关系的名字空间(模式)的 OID【pg_namespace.oid】
relpersistence:p = 永久表,u = 无日志表, t = 临时表
relkind:r = 普通表, i = 索引, S = 序列, t = TOAST表, v = 视图, m = 物化视图, c = 组合类型, f = 外部表, p = 分区表, I = 分区索引

5)pg_description表:可以给每个数据库对象存储一个可选的描述(注释)。你可以用 COMMENT 命令操作这些描述,并且可以用 psql 的 \d 命令查看。许多内置的系统对象的描述提供了 pg_description 的初始内容
字段描述:
objoid:这条描述所描述的对象的 OID 【任意 oid 属性】
classoid:这个对象出现的系统表的 OID【pg_class.oid】
objsubid:对于一个表字段的注释,它是字段号(objoid 和 classoid 指向表自身)。对于其它对象类型,它是零。
description:作为对该对象的描述的任意文本

6)pg_index表存储索引的具体信息
字段描述:
indexrelid:索引在pg_class里记录的oid
indrelid:使用这个表在pg_class里的记录的oid

7)pg_tablespace表:存储有关可用的表空间的信息。表可以放置在特定的表空间里,以帮助管理磁盘布局。与大多数系统表不同,pg_tablespace 在一个集群中的所有数据库之间共享:每个集群只有一份 pg_tablespace 的拷贝,而不是每个数据库一个。
字段描述:
spcname:表空间名
spcowner:表空间的所有者

8)pg_namespace表:模式/存储名字空间。名字空间是 SQL 模式下层的结构:每个名字空间有独立的关系,类型等集合但并不会相互冲突
字段描述:
nspnamce:名空间名称
nspowner:名空间的所有者

9)pg_attribute表:存储关于表的字段的信息。数据库里每个表的每个字段都在 pg_attribute 里有一行。还有用于索引,以及所有在 pg_class 里有记录的对象。
字段描述:
attrelid:字段所属的表oid【pg_class.oid】
attname:表字段名
atttypid:字段数据类型oid【pg_type.oid】
attnum:字段数目。普通字段是从 1 开始计数的。系统字段(比如 oid)有(任意)正数。

10)pg_inherits:存储表的分区关系
字段描述:
inhrelid:子表的OID【pg_class.oid】
inhparent:父表的OID【pg_class.oid】
inhseqno:如果一个子表存在多个直系父表(多重继承),这个数字表明此继承字段的排列顺序。计数从1开始 

11)pg_tables:提供对数据库中每个表的信息的访问
字段描述:
schemaname:模式名称【pg_namespace.nspname】
tablename:表名【pg_class.relname】
tableowner:表拥有者【pg_authid.rolname】
tablespace:表空间名称

12)pg_type:存储有关数据类型的信息。基本类型和枚举类型(标量类型)是用CREATE TYPE创建的, 域是使用CREATE DOMAIN创建的。同时还为数据库中每个表自动创建一个复合类型, 以表示该表的行结构。还可以用CREATE TYPE AS创建复合类型.
字段描述:
typname:数据类型名
typtype:对于基础类型是b,对于复合类型是c(比如,一个表的行类型)。 对于域类型是d,E的枚举类型,对于伪类型是p。
typrelid:如果是复合类型(参阅typtype)那么这个字段指向pg_class中定义该表的行。对于自由存在的复合类型,pg_class记录并不表示一个表,但是总需要它来查找该类型连接的pg_attribute记录。对于非复合类型为零。[pg_class.oid]

PostgreSqL在线手册

                                                                                       岂知人事静,不觉鸟声喧.   --王勃《春庄》

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐