PostgreSQL教程(十六):系统视图详解

一、pg_tables:

该视图提供了对有关数据库中每个表的有用信息地访问。

名字 类型 引用 描述
schemaname name pg_namespace.nspname 包含表的模式名字。
tablename name pg_class.relname 表的名字。
tableowner name pg_authid.rolname 表的所有者的名字。
tablespace name pg_tablespace.spcname 包含表的表空间名字(如果是数据库缺省,则为 NULL)。
hasindexes bool pg_class.relhasindex 如果表拥有(或者最近拥有)任何索引,则为真。
hasrules bool pg_class.relhasrules 如果表存在规则,则为真。
hastriggers bool pg_class.reltriggers 如果表有触发器,则为真。

二、pg_indexes:

该视图提供对数据库中每个索引的有用信息的访问。

名字 类型 引用 描述
schemaname name pg_namespace.nspname 包含表和索引的模式的名字。
tablename name pg_class.relname 索引所在表的名字。
indexname name pg_class.relname 索引的名字。
tablespace name pg_tablespace.spcname 包含索引的表空间名字(如果是数据库缺省,则为NULL)。
indexdef text   索引定义(一个重建的创建命令)。

三、pg_views:

该视图提供了对数据库里每个视图的有用信息的访问途径。

名字 类型 引用 描述
schemaname name pg_namespace.nspname 包含此视图的模式名字。
viewname name pg_class.relname 视图的名字。
viewowner name pg_authid.rolname 视图的所有者的名字。
definition text   视图定义(一个重建的SELECT查询)。

四、pg_user:

该视图提供了对数据库用户的相关信息的访问。 这个视图只是pg_shadow表的公众可读的部分的视图化,但是不包含口令字段。

名字 类型 引用 描述
usename name   用户名。
usesysid int4   用户ID(用于引用这个用户的任意数字)。
usecreatedb bool   用户是否可以创建数据库。
usesuper bool   用户是否是一个超级用户。
usecatupd bool   用户是否可以更新系统表。(即使超级用户也不能这么干,除非这个字段为真。)
passwd text   口令(可能加密了)。
valuntil abstime   口令失效的时间(只用于口令认证)。
useconfig text[]   运行时配置参数的会话缺省。

五、pg_roles:

该视图提供访问数据库角色有关信息的接口。这个视图只是pg_authid表的公开可读部分的视图化,同时把口令字段用空白填充。

名字 类型 引用 描述
rolname name   角色名。
rolsuper bool   是否有超级用户权限的角色。
rolcreaterole bool   是否可以创建更多角色的角色。
rolcreatedb bool   是否可以创建数据库的角色。
rolcatupdate bool   是否可以直接更新系统表的角色。
rolcanlogin bool   如果为真,表示是可以登录的角色。
rolpassword text   不是口令(总是 ********)。
rolvaliduntil timestamptz   口令失效日期(只用于口令认证);如果没有失效期,为NULL。
rolconfig text[]   运行时配置变量的会话缺省。

六、pg_rules:

该视图提供对查询重写规则的有用信息访问的接口。

名字 类型 引用 描述
schemaname name pg_namespace.nspname 包含表的模式的名字。
tablename name pg_class.relname 规则施加影响的表的名字。
rulename name pg_rewrite.rulename 规则的名字。
definition text   规则定义(一个重新构造的创建命令)。

七、pg_settings:

该视图提供了对服务器运行时参数的访问。它实际上是SHOW和SET命令的另外一种方式。它还提供一些用SHOW不能直接获取的参数的访问,比如最大和最小值。

名字 类型 引用 描述
name text   运行时配置参数名。
setting text   参数的当前值。
category text   参数的逻辑组。
short_desc text   参数的一个简短的描述。
extra_desc text   有关参数的额外的、更详细的信息。
context text   设置这个参数的值要求的环境。
vartype text   参数类型(bool、integer、real和string)。
source text   当前参数值的来源。
min_val text   该参数允许的最小值(非数字值为NULL)。
max_val text   该参数允许的最大值(非数字值为NULL)。  

我们不能对pg_settings视图进行插入或者删除, 只能更新。对pg_settings中的一行进行UPDATE等效于在该命名参数上执行SET命令。这个修改值影响当前会话使用的数值。如果在一个最后退出的事务中发出了UPDATE命令,那么UPDATE命令的效果将在事务回滚之后消失。一旦包围它的事务提交,这个效果将固化,直到会话结束。

(0)

相关推荐

  • 在Spring中用select last_insert_id()时遇到问题

    今天在使用MySQL时却不知如何处理,插入记录后不知怎样获得刚刚插入的id,查过文档后发现了select last_insert_id(),在插入之后执行此查询,即可获得自增id,喜出望外.可用到自己的程序中之后却得不到想要的结果,于是就怀疑到了Spring头上,因为通过基本JDBC测试是没有任何问题的,所以就去跟踪Spring JDBC, 看过源码之后才豁然开朗,原来Spring中如此获得数据库Connection的:Connection con = DataSourceUtils.getCo

  • 数据库插入数据之select into from与insert into select区别详解

    可能第一次接触select...into...from...和insert into...select...有很多人都会误解, 从表面上看都是把相关信息查询出来,然后添加到一个表里,其实还远远没有这么简单,接下来,小猪就用最普通的表述给大家介绍一下这两者间的区别. 步骤/方法 1.首先,我们来看一下insert into select语句,其语法形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Tabl

  • insert into select和select into的使用和区别介绍

    insert into ... select ...:可将表1中的全部数据或者部分数据复制到表2中. eg: 复制代码 代码如下: insert into t2(id,name,pwd) select id,name,pwd from t1 注:t2必须存在.t1中查询的列名可不与t1列名相同.无 values select...into:查询t1中的数据,插入到t2中. eg: 复制代码 代码如下: select * into t2 from t1 注:t2被创建并填充数据.

  • input+select(multiple) 实现下拉框输入值

    于是尝试了用input+select来实现,结果如下: 具体代码及演示地址:www.homdian.com/test.aspx 这种方法其实是在下拉框上压一个文本框,能够实现输入,也能够实现下拉框的选择.但根据输入值用用异步的方式绑定下拉框选项时, 无法展开下拉框,到网上找了段代码: 复制代码 代码如下: document.form1.ddlMovName.focus(); var WshShell = new ActiveXObject("Wscript.Shell"); try{

  • 探讨select in 在postgresql的效率问题

    在知乎上看到这样一个问题: MySQL 查询 select * from table where id in (几百或几千个 id) 如何提高效率?修改 电商网站,一个商品属性表,几十万条记录,80M,索引只有主键id,做这样的查询如何提高效率? select * from table where id in (几百或几千个id) 这些id没啥规律,分散的.... 看了一下答案,感觉有好多不靠谱的,但是口说无凭,所以在我的电脑上写了几个查询测试一下.我用的是Postgresql9.4,但感觉my

  • Mysql select in 按id排序实现方法

    表结构如下: mysql> select * from test; +----+-------+ | id | name | +----+-------+ | 1 | test1 | | 2 | test2 | | 3 | test3 | | 4 | test4 | | 5 | test5 | +----+-------+ 执行以下SQL: mysql> select * from test where id in(3,1,5); +----+-------+ | id | name | +-

  • linux使用select实现精确定时器详解

    在编写程序时,我们经常会用到定时器.首先看看select函数原型如下: 复制代码 代码如下: int select(int nfds, fd_set *readfds, fd_set *writefds,                  fd_set *exceptfds, struct timeval *timeout); 参数说明:slect的第一个参数nfds为fdset集合中最大描述符值加1,fdset是一个位数组,其大小限制为__FD_SETSIZE(1024),位数组的每一位代表其

  • PostgreSQL教程(六):函数和操作符详解(2)

    六.模式匹配: PostgreSQL中提供了三种实现模式匹配的方法:SQL LIKE操作符,更近一些的SIMILAR TO操作符,和POSIX-风格正则表达式.     1. LIKE:   复制代码 代码如下: string LIKE pattern [ ESCAPE escape-character ]     string NOT LIKE pattern [ ESCAPE escape-character ] 每个pattern定义一个字串的集合.如果该string包含在pattern代

  • PostgreSQL教程(七):函数和操作符详解(3)

    九.序列操作函数: 序列对象(也叫序列生成器)都是用CREATE SEQUENCE创建的特殊的单行表.一个序列对象通常用于为行或者表生成唯一的标识符.下面序列函数,为我们从序列对象中获取最新的序列值提供了简单和并发读取安全的方法. 函数 返回类型 描述 nextval(regclass) bigint 递增序列对象到它的下一个数值并且返回该值.这个动作是自动完成的.即使多个会话并发运行nextval,每个进程也会安全地收到一个唯一的序列值. currval(regclass) bigint 在当

  • 解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)

    前言: 这是一个老bug了,现在提供一个完美解决方案.由于我一直是用createElement来创建动态的option并添加,所以一直没有遇到这个问题,但是每个人写代码风格不同,有的人就喜欢写字符串形式的标签并用innerHTML插入,这不就有问题了,为了方便不同编码风格的人,我封装了一个方法,用于解决ie的这个bug和兼容5大浏览器,这样大家都可以用一个方法来实现不同的风格,便于维护管理. bug描述: 在ie下面使用innerHTML来插入option选项的话,ie会去掉前面的<option

  • 解决Hibernate JPA中insert插入数据后自动执行select last_insert_id()

    今天做项目遇到了一个问题,是以前没注意的.我用的是Spring MVC+ Hibernate JPA + MySQL数据库.在插入数据后SQL执行日志中会多出一条select语句: 复制代码 代码如下: Hibernate: insert into click_statstic (logDate, memoId, src, typeId) values (?, ?, ?, ?)Hibernate: select last_insert_id() 表中有个主键是自增列.可是在以往的项目中,没发现有

  • 解析MySQL中INSERT INTO SELECT的使用

    1. 语法介绍有三张表a.b.c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段.对于这种情况,可以使用如下的语句来实现:INSERT INTO db1_name (field1,field2) SELECT field1,field2 FROM db2_name 上面的语句比较适合两个表的数据互插,如果多个表就不适应了.对于多个表,可以先将需要查询的字段JOIN起来,然后组成一个视图后再SELECT FROM就可以了: INSERT INTO a (field1,field2)

随机推荐