Postgre的常用系统表

标签: postgre 系统 | 发表时间:2016-01-01 13:26 | 作者:labreeze
出处:http://www.iteye.com

查询数据库列表:

select * from pg_database WHERE datistemplate = false;

 

查询组合类型

 select * from pg_type where typtype = 'c' and typarray > 0 

AND typname NOT IN (SELECT TABLE_NAME FROM information_schema.tables)

order by typname 

 

根据名称查询OID:

select 'testdbschema1.t1'::regclass::oid

 

根据OID查询名称:

select 16392::regclass

 

查询所有表

select * from information_schema.tables where  table_Catalog = 'testdb1' and table_schema='testdbschema1'

 

Domain:

可以基于某个基本数据类型,定义一个domain,并在这个domain上定义一个或多个check,举例:

N个表都有一个邮政编码字段,为了防止用户输入非法的邮政编码,我们需要在这个字段上定义一个check来验证用户的输入数据,显然,如果有100个表有这个字段,那么我需要定义100次这个验证规则,而且一旦规则发生变化,又需要做100次的修改

正确的做法是,定义一个domain,该domain上定义这个check,然后这100个表的邮政编码字段,都使用这个domain作为其数据类型即可:

 

CREATE DOMAIN testdbschema1.us_postal_code

  AS text

  COLLATE pg_catalog."default"

  DEFAULT '000000'::text

  CONSTRAINT c1 CHECK (VALUE ~ '^\d{5}$'::text OR VALUE ~ '^\d{5}-\d{4}$'::text)

  CONSTRAINT c2 CHECK (VALUE IS NOT NULL);

ALTER DOMAIN testdbschema1.us_postal_code

  OWNER TO testdbrole1;

COMMENT ON DOMAIN testdbschema1.us_postal_code

  IS '测试domain1';

 

domain的default默认值:如果在列上定义了default,则覆盖domain上定义的default值,同样,如果在domain上定义了默认值,则覆盖其基础类型的默认值

 

查询domain列表:

select * from information_schema.domains;

查询domain的OID、OWBER、默认值:

select oid,* from pg_type where typname='us_postal_code' and typtype='d' 

查询domain的备注:

select * from pg_description where objoid = 24605

查询domain的check:

select * from information_schema.domain_constraints where domain_schema = 'testdbschema1' and domain_name = 'us_postal_code'

select * from information_schema.check_constraints where constraint_schema='testdbschema1' and constraint_name = 'c1'

 

查询表的所有列

 select table_catalog,table_schema,table_name,column_name,ordinal_position,column_default,

 is_nullable,data_type,character_maximum_length,character_octet_length,

 numeric_precision,numeric_precision_radix,numeric_scale,datetime_precision,interval_type,

 interval_precision,collation_catalog,collation_schema,

 collation_name,domain_catalog,domain_schema,domain_name,udt_catalog,udt_schema,udt_name,dtd_identifier,

 is_updatable     from information_schema.Columns where table_name = 't1'

注意,列的数据类型为数组时,部分数据类型,不是存放在data_type字段中,而是存在在 udt_name字段中,然后某些类型,还需要通过

 

select * from information_schema.element_types where object_name = 't2' or object_name = 't1' ;

查询出其显示的字面类型,比如 "_timestamp" -->"timestamp without time zone"

 

查询所有可用的数据类型:

系统原生态的那些类型+自定义符合类型(前面已写如何获取)+domain(前面已写如何获取)

 

查询表上的约束

select * from information_schema.table_constraints

 

查询表上的索引:

SELECT i.relname as indname,

       i.relowner as indowner,

       idx.indrelid::regclass,

       am.amname as indam,

       idx.indkey,

       ARRAY(

       SELECT pg_get_indexdef(idx.indexrelid, k + 1, true)

       FROM generate_subscripts(idx.indkey, 1) as k

       ORDER BY k

       ) as indkey_names,

       idx.indexprs IS NOT NULL as indexprs,

       idx.indpred IS NOT NULL as indpred

FROM   pg_index as idx

JOIN   pg_class as i

ON     i.oid = idx.indexrelid

JOIN   pg_am as am

ON     i.relam = am.oid

where idx.indrelid::regclass = 'testdbschema1.t1'::regclass;

 

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [postgre 系统] 推荐:

Postgre的常用系统表

- - 数据库 - ITeye博客
可以基于某个基本数据类型,定义一个domain,并在这个domain上定义一个或多个check,举例:. N个表都有一个邮政编码字段,为了防止用户输入非法的邮政编码,我们需要在这个字段上定义一个check来验证用户的输入数据,显然,如果有100个表有这个字段,那么我需要定义100次这个验证规则,而且一旦规则发生变化,又需要做100次的修改.

Windows下Postgre SQL数据库通过Slony-I 实现数据库双机同步备份

- - CSDN博客数据库推荐文章
一、 我们要实现的环境是windows xp、windows2003上安装Postgre SQL数据库,实现目的是两台数据库服务器进行数据库同步,即数据库同步更新、删除、插入等对数据库的操作. 二、 使用的工具是数据库版本Postgre SQL 9.2,配置集群的工具是Stack Builder自己的可安装的Slony-I v2.1.3-1.

壳系统

- Vernsu - It Talks-魏武挥的blog
经常有人被我问到“你用什么浏览器”时的答案是:傲游啦360啦,但事实上,这些都不是真正的浏览器,从技术角度讲,充其量只是在IE浏览器上加一个壳罢了. 在国外,壳浏览器是以“皮肤”的形式存在,纯属为了美化浏览器而用. 但在中国,壳浏览器成了一门生意. 奇虎的主要收入来源并非来自那个由于一场商战而赫赫有名的安全卫士,而是来自于360浏览器(它有两个版本,分别以IE和Chrome为内核).

秒杀系统

- - 开源软件 - ITeye博客
秒杀系统架构分析与实战. (反馈非常好的文章,推荐). (1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5)付款;(6)卖家发货. (1)低廉价格;(2)大幅推广;(3)瞬时售空;(4)一般是定时上架;(5)时间短、瞬时并发量高;. 假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统需要面对的技术挑战有:.

Ext文件系统

- Haides - 博客园-首页原创精华区
  虽然从Ext2到Ext4,找数据的方式发生了变化,但是,磁盘的布局还是非常相似的. 其实这个东西也不需要变化,因为现在也没什么特别巧妙的方式,而且磁盘的吞吐量、效率的瓶颈也不在这里. 当然,这里排除那些根据自身文件特点设计的数据库,毕竟还是为了支持通用文件.   Boot在第一个块,放的应该是引导程序,超级块就放在了第二个块上,如果不是可以在mount的时候通过参数sb来设置.

HBase 系统架构

- - 博客园_首页
HBase是Apache Hadoop的数据库,能够对大型数据提供随机、实时的读写访问. HBase的目标是存储并处理大型的数据. HBase是一个开源的,分布式的,多版本的,面向列的存储模型. 5 可在廉价PC Server搭建大规模结构化存储集群. HBase是Google BigTable的开源实现,其相互对应如下:.

Linux系统监控

- - CSDN博客系统运维推荐文章
查看所有的进程和端口使用情况:. 查看nginx并发(连接数)进程数:. 查看当网络连接状态中,已建立连接的数量:. 查看系统tcp连接中各个状态的连接数. 输出每个ip的连接数,以及总的各个状态的连接数. df -hl 查看磁盘使用情况 . df -hl 查看磁盘剩余空间. df -h 查看每个根路径的分区大小.

mysql 权限系统

- - 数据库 - ITeye博客
mysql 权限系统控制一个用户是否能进行连接,以及连接后能够针对那些对象进行什么操作. mysql权限控制包含两个阶段. 2:检查用户是否具有所执行动作的权限. 本文实例,运行于 MySQL 5.0 及以上版本. MySQL 赋予用户权限命令的简单格式可概括为:. 一、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利.

银行核心系统-贷款系统【信贷系统】

- - ITeye博客
一、         贷款业务. 贷款按期限分为短期、中期与长期贷款,短期贷款是指期限在1年以内的贷款,中期贷款是指期限在1年(含1年)至3年(含3年)之间的贷款,长期贷款是指期限超过3年的贷款. 贷款的种类目前有个人助学贷款和个人住房贷款:. l     个人助学贷款:须提供两位担保人,无须质押物,贷款额度不超过人民币10万元.

理解Linux系统负荷

- Adam - 阮一峰的网络日志
如果你的电脑很慢,你或许想查看一下,它的工作量是否太大了. 在Linux系统中,我们一般使用uptime命令查看(w命令和top命令也行). (另外,它们在苹果公司的Mac电脑上也适用. 你在终端窗口键入uptime,系统会返回一行信息. 这行信息的后半部分,显示"load average",它的意思是"系统的平均负荷",里面有三个数字,我们可以从中判断系统负荷是大还是小.