`

Postgre的常用系统表

 
阅读更多

查询数据库列表:

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;

 

 

分享到:
评论

相关推荐

    postgre学习文档2

    B-Tree(B树)是最常用的一种索引类型,适用于大部分场景。它能够高效地支持范围查询、等值查询等操作。 - **优点**: - 支持多种比较操作,包括`, `, `=`, `>=`, `>`。 - 支持前缀模糊查询(如`LIKE 'xxx%'` 或 ...

    postgre数据库学习文档

    ### Postgre数据库学习知识点 #### 一、PostgreSQL简介与安装 **PostgreSQL**是一款功能强大的开源对象关系型数据库系统,以其稳定性、可扩展性以及遵循SQL标准而著称。根据给定的学习文档,我们可以了解到关于...

    postgre学习文档3

    - 不常用的数据可以存放在成本较低的存储设备上。 - 使用分区表可以绕过单一表空间大小的限制。 ##### 分区类型 - **范围分区**: 根据字段值的范围进行分区,例如按时间范围划分的日志表。 - **哈希分区**: 根据...

    PostgreSQL 实用实例参考

    例如,流复制(Streaming Replication)是常用的一种高可用解决方案。 通过以上的实例,我们可以看到PostgreSQL不仅提供了全面的关系数据库功能,还具备处理复杂业务和大数据的能力。无论是在小型项目还是大型企业...

    PostgreSQL 8.4官方开发文档A4

    - **2.7 聚合函数**:介绍常用的聚合函数及其用法。 - **2.8 更新数据**:教授如何更新表中的记录。 - **2.9 删除数据**:展示删除表中记录的命令。 - **高级特性**:介绍了PostgreSQL的一些高级功能。 - **3.1 ...

    PostgreSQL数据库的基本使用

    常用的工具有`shp2pgsql`和`ogr2ogr`。 - **shp2pgsql**:这是一个将Shapefile文件转换成PostgreSQL表的工具。使用方法如下: ```bash shp2pgsql china.shp china_postgis > tmp.sql psql -d wen2 -f tmp.sql `...

    postgresql 兼容 oracle 函数

    在数据库领域,Oracle和PostgreSQL都是非常知名的开源关系型数据库管理...然而,全面的兼容性不仅限于函数层面,还需要考虑SQL语法、存储过程、触发器、索引、分区表等方面,这需要根据实际情况进行深入研究和规划。

    SQL常用语法基础\SQL常用语法基础.doc

    ### SQL常用语法基础 #### 第一章:SQL的来历与简介 - **SQL**:全称为Structured Query Language,即结构化查询语言。它是一种专为管理关系型数据库系统而设计的语言,由IBM公司在20世纪70年代开发。随着技术的...

    Postgre数据库Insert 、Query性能优化详解

    1. **索引创建**:为常用查询字段建立索引可以极大地提高查询效率。例如,为字段`name`创建B-Tree索引,可以加快按`name`进行搜索的速度。索引的正确使用能确保随着数据量的增长,查询性能保持稳定。 2. **查询条件...

    postgresql中的cast

    PostgreSQL作为一种功能强大的开源关系型数据库系统,提供了多种方式进行数据类型转换,其中`CAST`是一种常用的显式转换方法。 #### CAST操作的基础用法 CAST的基本语法格式如下: ```sql CAST(expression AS ...

    tpc-h license agreement

    tpc-h和dbgen是数据库性能基准测试的常用工具,主要用于模拟复杂业务查询,评估数据库系统的性能。这个协议确保了公平、透明的使用标准,防止滥用并保护了软件开发者的权益。在使用这些工具时,必须严格遵守协议条款...

    postgreSQL双机热备

    `pg_dump` 是一个非常强大的工具,它可以用来备份整个数据库或者特定的表空间。下面是使用 `pg_dump` 进行手动备份的基本命令: ```bash pg_dump [选项] [数据库名称] ``` 常见的选项包括: - `-f` 或 `--file`:...

    postgreSQL pgsql13.5 windows安装与 Linux 安装 及 常见命令 教程

    ### 三、常用psql命令 - **连接数据库** ``` psql -U <username> -d ``` - **列出所有数据库** ``` \l ``` - **切换数据库** ``` \c ``` - **显示当前数据库** ``` \dx ``` - **退出psql** ...

    DBeaver使用教程

    在连接列表中选择刚创建的PostgreSQL连接,点击"连接",你就能在DBeaver的工作区看到数据库的结构,包括表、视图、索引等,也可以执行SQL查询,进行数据管理、数据库设计等操作。 总的来说,DBeaver作为一个功能...

    PG多维存储、SQL流计算

    标签“postgre”即为PostgreSQL的缩写,说明文章专注于该数据库系统。 在提供的部分内容中,我们可以看到作者深入探讨了数据噪音和隐式噪音的过滤方法,以及多维聚集的不同维度实现。具体来说,文章介绍了通过聚集...

    ArcGIS Servier 修改机器名解决方案

    ### ArcGIS Server 修改机器名后的解决方案 在使用ArcGIS Server的过程中,可能会遇到因更改服务器名称而导致的连接问题。本文将详细介绍如何解决“Unable to connect to ...如果还有其他技术疑问,欢迎继续探讨。

    VC访问数据库技术的方法实例

    本篇将详细介绍两种常用的技术:ODBC(Open Database Connectivity)和ADO(ActiveX Data Objects)。 1. ODBC(开放数据库互联) ODBC 是一个标准的数据库访问接口,它允许应用程序通过统一的API来访问不同类型的...

    postgresql数据库使用.docx

    PostgreSQL 是一种功能强大且免费的开源关系数据库管理系统,它提供了高效、可靠和可扩展的数据存储和管理解决方案。下面是 PostgreSQL 数据库使用指南的详细介绍。 一、创建管理账户 在使用 PostgreSQL 数据库...

Global site tag (gtag.js) - Google Analytics