PostgreSQL-系统表、系统视图

  系统表显示的都是当前操作数据库下的信息,对象都来自当前数据库。因为不同的系统表都用不同名的字段来记录不同对象的oid,这个表引用那个表,那个表又引用另一个表,所以这些字段名不太好记。

  pg_class (系统表:对象)是一个对象表,表的每个字段都是‘rel’开头,分明就是 ‘relation’这个单词的缩写,意思就是‘关系’。表中relkind字段决定对象类型:r = 普通表,i = 索引,S = 序列,v = 视图, c = 复合类型,s = 特殊,t = TOAST表。对象所属的relnamespace(模式名称)和relowner(所有者)都是用其对应的oid显示,所以要直观看到实际本名要联合pg_namespace(系统表:模式)和pg_roles(系统视图:角色)一起查,这两个表和视图中都有oid字段。

  以查询对象所属模式及其名称为例:

select relname,relkind,relnamespace,nspname from pg_class c,pg_namespace n where n.oid=16424 and c.relnamespace=n.oid

      relname      | relkind | relnamespace | nspname
-------------------+---------+--------------+---------
 website_pkey      | i       |        16424 | yun
 website           | r       |        16424 | yun
 board_pkey        | i       |        16424 | yun
 board             | r       |        16424 | yun
 spam_keyword_pkey | i       |        16424 | yun
 spam_keyword      | r       |        16424 | yun

  oid数据类型,查询有无单引号都可以。pg_namespace中的oid字段是隐含的,用select * from不能直接查询。

select oid,* from pg_namespace

  oid  |      nspname       | nspowner |               nspacl                -------+--------------------+----------+-------------------------------------    99 | pg_toast           |       10 |  11194 | pg_temp_1          |       10 |  11195 | pg_toast_temp_1    |       10 |     11 | pg_catalog         |       10 | {postgres=UC/postgres,=U/postgres} 11469 | information_schema |       10 | {postgres=UC/postgres,=U/postgres}  2200 | public             |       10 | {postgres=UC/postgres,=UC/postgres} 16424 | yun                |    16392 |  16551 | audit              |    16392 | 

  PS:逗号其实是一种起到连结若干列与若干列作用的符号,是一个对查询结果直接产生作用的符号,不是因为查多个字段所以用来分隔为了易读好看的。

  pg_namespace有模式的oid,pg_roles有用户的oid。

  pg_attribute,竟然有这么一张表用来记录所有表的字段,神奇。

时间: 2024-08-02 15:47:32

PostgreSQL-系统表、系统视图的相关文章

sql server 系统表系统视图 及作用说明

sql server 系统视图,可分为: 目录视图   兼容性视图    动态管理视图和函数    信息架构视图    复制视图 系统表: sysaltfiles主数据库 保存数据库的文件 syscharsets主数据库字符集与排序顺序 sysconfigures主数据库 配置选项 syscurconfigs主数据库当前配置选项 sysdatabases主数据库服务器中的数据库 syslanguages主数据库语言 syslogins主数据库 登陆帐号信息 sysoledbusers主数据库 链

ORACLE系统表和视图

1.系统表 ORACLE数据库的系统参数都存储在数据库中,可以通过SQLPLUS,以用户SYSYTEM进行查询.几个重要的表或者视图如下: v$controlfile:控制文件的信息: v$datafile:数据文件的信息: v$log:日志文件的信息: v$process:处理器的信息: v$session:会话信息: v$transaction:事务信息: v$resource:资源信息: v$sga:系统全局区的信息. 上面的视图名中的'v$',只是视图名字中的字符.类似于上面的视图或表还

oracle系统表、视图

--视图信息    all_views select * from all_views; select text from all_views;    --查看view的建立sql --查看oracle版本 select * from v$version --查看表结构desc tableName;

查询Master下的系统表和系统视图获取数据库的信息和简单的渗透测试

在SQL中可以通过查询Master下的系统表(sys)和系统视图(information_schema)获取数据库的信息.SQL2000和SQL2005的结构略有不同. 系统表结构参考系统表详细说明. 系统信息结构图参考:http://dev.mysql.com/doc/refman/5.1/zh/information-schema.html 1.2000下操作: 系统表目录:大部分以dbo.sys为前缀. 系统视图目录:有20个常用的视图,以INFORMATION_SCHEMA为前缀. 在2

auth系统与类视图

用户 权限 密码哈希系统 表单视图工具 密码强度检查   第三方或自定义 限制登录尝试 第三方验证     (qq,微信,微博登录) 对象级权限 auth    user用户表   group分组表   permission权限表 user角色表  中间表 group分组表  让角色都具备某一类权限 permission权限表 增删改查 外键关联content_type系统表,通过content_id去指定某个权限是哪一个app的哪一个模型的权限 admin.groups.clear() 删除权

[转]PostgreSQL教程:系统表详解

这篇文章主要介绍了PostgreSQL教程(十五):系统表详解,本文讲解了pg_class.pg_attribute.pg_attrdef.pg_authid.pg_auth_members.pg_constraint.pg_tablespace.pg_namespace.pg_database等表的作用和字段介绍,需要的朋友可以参考下 一.pg_class: 该系统表记录了数据表.索引(仍然需要参阅pg_index).序列.视图.复合类型和一些特殊关系类型的元数据.注意:不是所有字段对所有对象

oracle下常用的系统表和系统视图

此处,在此列出一些Oracle下常用的视图,用于查询Oracle下的一些配置属性,要注意的是在select的时候要在DBA的用户下,不然是没有权限调阅这些表和视图. ----------DBA_ Dba_Tab_Comments   表注释      Dba_Col_Comments 列注释 DBA_2PC_NEIGHBORS                包含待处理事务进入连接和退出连接信息. DBA_2PC_PENDING                 包含等待恢复的分布式事务的信息. D

系统视图,系统表,系统存储过程的使用

获取数据库中用户表信息 1.获取特定库中所有用户表信息 select * from sys.tables select * from sys.objects  where type='U'  --用户表 第二条语句中当type='S'时是系统表 2.获取表的字段信息 select * from sys.columns where object_id=object_id('表名') select * from syscolumns where id=OBJECT_ID('表名' ) 3.获取当前库

ORACLE主要的系统表和系统视图

ORACLE主要的系统表和系统视图 1.系统表 ORACLE数据库的系统参数都存储在数据库中,可以通过SQLPLUS,以用户SYS进行查询.几个重要的表或者视图如下: v$controlfile:控制文件的信息: v$datafile:数据文件的信息: v$log:日志文件的信息: v$process:处理器的信息: v$session:会话信息: v$transaction:事务信息: v$resource:资源信息: v$sga:系统全局区的信息. 上面的视图名中的‘v$’,只是视图名字中的

平台中表或视图不存在(系统表)

今天在一个12.5.2版本的平台中构建一个报表,结果新建报表后,点击设计报表时,报了下图中所示错误: 解决办法:1.到服务器端找到今天的log日志,打开并查看报错记录:例如上图中所报错误,在日志中的记录为: 从上图中可以看出,没有找到REPORT_RELATIONS_INFO这个表2.通过查看日志确定缺少的是哪个表或视图,然后在其他有这个表或视图的环境中,用PL/SQL工具查看对应表或视图的sql语句:复制然后到报错环境中执行 原文地址:http://bbs.delit.cn/thread-96