1。pg_class:

系统表记录元数据的数据表,索引(还看到pg_index)、序列、视图、复合类型,和一些特殊的关系类型。注意:并不是所有的领域都是有意义的对象类型。





名称
类型
引用
描述


relname
名称

数据类型的名称。


relnamespace
OID
pg_namespace.oid
包含对象名称空间(模式)的OI。


reltype
OID
pg_type.oid
与该表的行类型相对应的数据类型。


relowner
OID
pg_authid.oid
对象的所有者。


领域
OID
pg_am.oid
对于索引对象,它代表了指数型(B树、哈希)。


relfilenode
OID

对象以文件名存储在磁盘上,如果不是0的话。


reltablespace
OID
pg_tablespace.oid
对象所在的表空间。如果为零,则为数据库使用默认表空间。(如果对象没有磁盘上的文件,则此字段没有意义)


relpages
INT4

数据表或索引占用的磁盘页面数,查询规划人员根据值选择最佳路径。


reltuples
float4

表中的行数,这仅仅是计划者使用的估计值。


reltoastrelid
OID
pg_class.oid
与此表相关的土司表OID如果不是不是0。敬酒表店大领域离线在从属的形式。


reltoastidxid
OID
pg_class.oid
如果是吐司表,字段是OID的指数,如果它不是面包表,它是0。


relhasindex
布尔

如果这是一个数据表和至少(或最近)的一个指标,这是真的。它是由创建索引,但索引不清楚它。如果真空发现表没有索引,它清除relhasindex。


relisshared
布尔

如果整个集群中的所有数据库共享该表,那么它是正确的。


relkind
烧焦

r =普通表,i =索引,s =序列,v =视图,C =复合类型,s =特殊,T =吐司表


relnatts
T2

在数据表的用户字段数(除系统领域,如OID)。必须在pg_attribute.see pg_attribute.attnum相同数据的行数。


relchecks
T2

检查表中的约束条件的数量,是指pg_constraint表。


reltriggers
T2

表中的触发器的数量;指pg_trigger表。


relhasoids
布尔

如果我们生成对象中每个线的老,这是真的。


relhaspkey
布尔

如果表有主键,那么它是真的。


relhasrules
布尔

如果表中有一个规则,看pg_rewrite表。


relhassubclass
布尔

如果表中有一个数据库,它是真的。


relacl
aclitem { }

访问权限。





请参见下面的应用示例:

复制代码代码如下所示:

#查看指定表数据对象模型

Postgres = #选择relname,relnamespace,从pg_class C nspname,pg_namespace N relname =得到;

relname relnamespace nspname | |

------------- + -------------- + ---------

公共数据| 2200 |

(1行)

#视图指定的数据表对象的所有者(作用)。

Postgres = #选择relname,从pg_class C rolname,pg_authid金relname = 'testtable= 'testtable;

relname rolname |

------------- + ----------

数据| Postgres

(1行)



二,pg_attribute:

所有表的系统表存储字段的信息,包括系统表,如数据库中的表pg_class.each领域已经在pg_attribute表中的一行记录。





名称
类型
引用
描述


attrelid
OID
pg_class.oid
这个字段属于的表。


attname
名称

字段名称。


atttypid
OID
pg_type.oid
字段的数据类型。


attstattarget
INT4

的attstattarget控件设置的详细程度对这一领域的统计分析。零值表示没有统计信息的收集,与负数为统计对象,采用系统默认。积极价值的准确信息是数据类型有关。


attlen
T2

那这场属于类型的长度。(本pg_type。typlen)


attnum
T2

字段的数量,一般的场数从1。系统领域,如旧,是一个任意的负数。


attndims
INT4

如果字段是数组,则该值表示数组的维数,否则为0。


attcacheoff
INT4

它总是在磁盘上为1,但是如果它被加载到内存中的行描述符中,它可能会更新到行中字段中的偏移量。


atttypmod
INT4

它代表了数据表提供的类型创建时(例如,最大长度的varchar字段)的值通常是1类,不需要atttypmod。


attbyval
布尔

本pg_type.typbyval字段的值。


attstorage
烧焦

本pg_type.typstorage字段的值。


attalign
烧焦

本pg_type.typalign字段的值。


attnotnull
布尔

如果字段具有非空约束,则为true,否则为false。


atthasdef
布尔

如果在这个领域有一个默认值,它对应的记录,实际上定义了价值的pg_attrdef形式。


attisdropped
布尔

该字段是否已被删除。如果删除该字段,该字段仍在物理表中,但它将被解析器忽略,因此无法通过SQL访问它。


attislocal
布尔

这个字段是否在对象中本地定义。


attinhcount
INT4

字段拥有的直接祖先数。如果字段的祖先的数目不是零,则不能删除或重命名它。





请参见下面的应用示例:

复制代码代码如下所示:

#查看指定的字段的名称和数量表包含。

Postgres = #选择relname,attname,attnum从pg_class C,pg_attribute属性,relname =得到;

relname attname attnum | |

------------- + ---------- + --------

数据tableoid - 7 | |

数据| | Cmax - 6

数据| | Xmax - 5

数据4 | | Cmin

数据| | xmin - 3

1 | | Grid数据

我| |数据1

(7行)

#只查看用户定义类型的字段

Postgres = #选择relname,attname,typname从pg_class C,pg_attribute,pg_type,pg_attribute,relname = 0。

relname attname typname | |

------------- + ---------- + ---------

我| | INT4数据

(7行)



三、pg_attrdef:

系统表主要存储字段的默认值,并在该领域的主要信息存储在pg_attribute系统表。注意:只有字段声明的默认值将被记录在表格中。





名称
类型
引用
描述


adrelid
OID
pg_class.oid
这个字段属于的表


管理杂志
T2
pg_attribute.attnum
场数,其规则是相当于pg_attribute.attnum


adbin
文本

字段默认值的内部表示形式。


adsrc
文本

默认值的人类可读表达式的形式。





请参见下面的应用示例:

复制代码代码如下所示:

#视图指定表的字段存在默认值,也显示字段名称和默认值定义

Postgres = #创建表testtable2(我的整数,默认为100);

创建表

Postgres = #选择c.relname,a.attname,ad.adnum,从pg_class C,pg_attribute一ad.adsrc,和C的pg_attribute等于零比零。

relname attname管理杂志adsrc | | |

------------- + ---------- + --------- + -------

testtable2我| | 1 | 100

(1行)



四、pg_authid:

系统表存储有关数据库身份验证的角色信息。在PostgreSQL,角色可以为用户和组的两种形式。对于用户来说,唯一的rolcanlogin旗的作用是集。因为表包含密码的数据,这是不公开的可读性。在PostgreSQL,另一个系统的观点,pg_roles,是建立在顶部的表,使密码字段空白。





名称
类型
引用
描述


rolname
名称

角色名。


rolsuper
布尔

角色是否有超级用户权限。


rolcreaterole
布尔

角色是否可以创建其他角色。


rolcreatedb
布尔

角色是否可以创建数据库。


rolcatupdate
布尔

一个角色是否可以直接更新系统表(如果设置为false,即使是超级用户无法更新系统表)。


rolcanlogin
布尔

是否可以登录角色,换句话说,是否可以将角色授予会话身份验证标识符。


rolpassword
文本

密码(可能是加密的);如果不是,则为空。


rolvaliduntil
timestamptz

密码失效时间(仅用于密码身份验证);如果没有故障期,则为空。


rolconfig
文本{ }

运行时配置变量的会话默认值。





请参见下面的应用示例:

复制代码代码如下所示:

#可以从这个密码已加密的结果输出。

Postgres = #选择rolname,rolpassword从pg_authid;

Rolname rolpassword |

----------- + -------------------------------------

md5a3556571e93b0d20722ba62be61e8c2d | Postgres



五、pg_auth_members:

系统表存储角色之间的成员关系。





名称
类型
引用
描述


roleid
OID
pg_authid.oid
组角色的id。


成员
OID
pg_authid.oid
身份证,属于该组的作用roleid成员角色。


让与人
OID
pg_authid.oid
id提供该成员关系的角色。


admin_option
布尔

如果您有权限向组角色添加其他成员角色,则为真。





请参见下面的应用示例:

复制代码代码如下所示:

# 1。首先查看角色成员表中角色之间的成员关系,只有一个成员角色是当前结果集中的一个组角色的一部分。

#如果有成员属于同一组人物的多重角色,所以会有一批记录。

Postgres = # SELECT * FROM pg_auth_members;

roleid成员授予人admin_option | | |

-------- + -------- + --------- + --------------

16446 | 16445 | 10 | F

(1行)

# 2。查看组角色的名称。

Postgres = #选择pg_authid一rolname,pg_auth_members是a.oid = am.roleid;

rolname

—

mygroup

(1行)

# 3。查看成员角色的名称。

如果# 4。需要使用结果集获得角色之间的隶属关系,这两个结果集可以关联子查询。

Postgres = #选择pg_authid一rolname,pg_auth_members是a.oid = am.member;

rolname

—

中

(1行)



六、pg_constraint:

系统表店检查约束、主键、唯一约束,并在PostgreSQL的表对象的外键约束。





名称
类型
引用
描述


conname
名称

名称的约束(不一定是唯一的)。


connamespace
OID
pg_namespace.oid
包含命名空间的OID(模式)这种约束。


contype
烧焦

c =检查约束,f =外部键约束,p =主键约束,u =唯一约束


condeferrable
布尔

约束是否可以推迟。


condeferred
布尔

这个约束在短时间内被延迟了吗


conrelid
OID
pg_class.oid
约束所在的表如果不是表约束,则为0。


contypid
OID
pg_type.oid
如果约束不是域约束,则该约束所在的域为0。


confrelid
OID
pg_class.oid
如果是外键,则指向参考表,否则为0。


confupdtype
烧焦

外键更新动作代码。


confdeltype
烧焦

外部键删除操作代码。


confmatchtype
烧焦

外键匹配的类型。


12:
INT2 { }
pg_attribute.attnum
如果它是一个表约束,则它是约束控件中的字段列表。


confkey
INT2 { }
pg_attribute.attnum
如果是外键,则是引用字段列表。


伴血肿
文本

如果检查了约束,则表示表达式的内部形式。


consrc
文本

如果检查了约束,它就是表达式的可读形式。





七、pg_tablespace:

系统将表空间的信息表列出。注意:表可以放在一个特定的表空间中,有助于管理磁盘布局和解决IO瓶颈。





名称
类型
引用
描述


spcname
名称

表空间的名称。


spcowner
OID
pg_authid.oid
表空间的所有者,通常是创建它的角色。


spclocation
文本

表空间的位置(目录路径)。


spcacl
aclitem { }

访问权限。





请参见下面的应用示例:

复制代码代码如下所示:

# 1。创建表空间。

Postgres = #创建表空间my_tablespace位置 / / /选择PostgreSQL 9.1 /该;

创建表空间

# 2。将新表空间的创建权限公开。

Postgres=# GRANT CREATE ON TABLESPACE my_tablespace TO public;

格兰特

# 3。查看系统中用户自定义表空间的名称、文件的位置以及创建它的角色的名称。

两表空间(pg_default和pg_global)被创建时自动# 4。创建的系统是空的(不是空的)。

Postgres = #选择spcname,rolname spclocation,从pg_tablespace TS,pg_authid在ts.spcowner = a.oid和spclocation <>;

spcname rolname spclocation | |

--------------- + ---------- + ----------------------------

my_tablespace Postgres / / /选择PostgreSQL 9.1 / MYDATA | |

(1行)



八、pg_namespace:

系统表存储名称空间(模式)。





名称
类型
引用
描述


nspname
名称

名称空间(模式)的名称。


nspowner
OID
pg_authid.oid
命名空间的所有者(模式)


nspacl
aclitem { }

访问权限。





请参见下面的应用示例:

复制代码代码如下所示:

对公共模型#查看当前数据库创建者的名字。

Postgres = #选择nspname,从pg_namespace N rolname,pg_authid在nspname =征收征收;

Nspname rolname |

---------- + ----------

公共Postgres |

(1行)



九、pg_database:

系统表存储了数据库中的信息。不像大多数的系统表,在集群中,桌上的所有数据库,这是共享的,每个集群都有一个pg_database复制而不是一个数据库。





名称
类型
引用
描述


datname
名称

数据库的名称。


datdba
OID
pg_authid.oid
数据库所有者,通常是创建数据库的角色。


编码
INT4

数据库的字符编码方法。


datistemplate
布尔

如果是真的,则该数据库可用于创建数据库模板子句,以便为该数据库的克隆创建一个新数据库。


datallowconn
布尔

如果它是假的,没有人可以加入这个数据库。


datlastsysoid
OID

避免在数据库中,最后的系统,为pg_dump特别有用。


datvacuumxid
XID




datfrozenxid
XID




dattablespace
文本
pg_tablespace.oid
对于数据库的默认表空间。在这个数据库中,所有的pg_class.reltablespace零表将被保存在该表空间,特别指出,所有的非共享的系统表也存放在这里。


datconfig
文本{ }

运行时配置变量的会话默认值。


datacl
aclitem { }

访问权限。





十、pg_index:

系统表存储的索引信息的一部分,其他大部分信息存储在pg_class。





名称
类型
引用
描述


indexrelid
OID
pg_class.oid
该指数在pg_class是OID。


indrelid
OID
pg_class.oid
这个记录在索引的表的pg_class OID。


indnatts
T2

索引中的字段数(一个副本的pg_class。relnatts)。


indisunique
布尔

如果为真,则索引是唯一的索引。


indisprimary
布尔

如果为真,则索引是表的主键。


indisclustered
布尔

如果为真,则表在索引上有一个群集。


indkey
int2vector
pg_attribute.attnum
数组中元素的个数是indnatts,和数组元素的值代表的场数取决于指数。例如,13,它表示第一个字段和第三个字段构成索引的键值,如果为0,则表示为表达式索引,而不是基于简单字段的索引。


indclass
oidvector
pg_opclass.oid
每个字段进行索引键的值,该字段包含一个OID指操作字符操作表。


indexprs
文本

表达式树是用于索引的非简单字段引用的属性。它是一个列表,在indkey每个条目是一个零元素。如果所有指标的属性是简单的引用,它们是空的。


indpred
文本

部分索引断言的表达式树。如果不是索引的一部分,则为空字符串。





请参见下面的应用示例:

复制代码代码如下所示:

看到桌子上的名字#指数的位置,和一批重点领域和具体的关键指数。

Postgres = #选择indnatts,indkey,从pg_index我relname,pg_class C在c.relname =得到;

indnatts indkey relname | |

---------- + -------- + ------------

2 | 13 | testtable2

(1行)

#视图指定表包含索引名单同时。

Postgres = #选择t.relname作为table_name,c.relname作为index_name从(选择relname,indexrelid从pg_index我,pg_class C在c.relname = 'testtable2'and indrelid = c.oid T),pg_index我,pg_class C在t.indexrelid = i.indexrelid和i.indexrelid = c.oid;

table_name index_name |

------------ + ----------------

testtable2 testtable2_idx |

(1行)