查询数据库列表:
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;
相关推荐
B-Tree(B树)是最常用的一种索引类型,适用于大部分场景。它能够高效地支持范围查询、等值查询等操作。 - **优点**: - 支持多种比较操作,包括`, `, `=`, `>=`, `>`。 - 支持前缀模糊查询(如`LIKE 'xxx%'` 或 ...
### Postgre数据库学习知识点 #### 一、PostgreSQL简介与安装 **PostgreSQL**是一款功能强大的开源对象关系型数据库系统,以其稳定性、可扩展性以及遵循SQL标准而著称。根据给定的学习文档,我们可以了解到关于...
- 不常用的数据可以存放在成本较低的存储设备上。 - 使用分区表可以绕过单一表空间大小的限制。 ##### 分区类型 - **范围分区**: 根据字段值的范围进行分区,例如按时间范围划分的日志表。 - **哈希分区**: 根据...
例如,流复制(Streaming Replication)是常用的一种高可用解决方案。 通过以上的实例,我们可以看到PostgreSQL不仅提供了全面的关系数据库功能,还具备处理复杂业务和大数据的能力。无论是在小型项目还是大型企业...
- **2.7 聚合函数**:介绍常用的聚合函数及其用法。 - **2.8 更新数据**:教授如何更新表中的记录。 - **2.9 删除数据**:展示删除表中记录的命令。 - **高级特性**:介绍了PostgreSQL的一些高级功能。 - **3.1 ...
常用的工具有`shp2pgsql`和`ogr2ogr`。 - **shp2pgsql**:这是一个将Shapefile文件转换成PostgreSQL表的工具。使用方法如下: ```bash shp2pgsql china.shp china_postgis > tmp.sql psql -d wen2 -f tmp.sql `...
在数据库领域,Oracle和PostgreSQL都是非常知名的开源关系型数据库管理...然而,全面的兼容性不仅限于函数层面,还需要考虑SQL语法、存储过程、触发器、索引、分区表等方面,这需要根据实际情况进行深入研究和规划。
### SQL常用语法基础 #### 第一章:SQL的来历与简介 - **SQL**:全称为Structured Query Language,即结构化查询语言。它是一种专为管理关系型数据库系统而设计的语言,由IBM公司在20世纪70年代开发。随着技术的...
1. **索引创建**:为常用查询字段建立索引可以极大地提高查询效率。例如,为字段`name`创建B-Tree索引,可以加快按`name`进行搜索的速度。索引的正确使用能确保随着数据量的增长,查询性能保持稳定。 2. **查询条件...
PostgreSQL作为一种功能强大的开源关系型数据库系统,提供了多种方式进行数据类型转换,其中`CAST`是一种常用的显式转换方法。 #### CAST操作的基础用法 CAST的基本语法格式如下: ```sql CAST(expression AS ...
tpc-h和dbgen是数据库性能基准测试的常用工具,主要用于模拟复杂业务查询,评估数据库系统的性能。这个协议确保了公平、透明的使用标准,防止滥用并保护了软件开发者的权益。在使用这些工具时,必须严格遵守协议条款...
`pg_dump` 是一个非常强大的工具,它可以用来备份整个数据库或者特定的表空间。下面是使用 `pg_dump` 进行手动备份的基本命令: ```bash pg_dump [选项] [数据库名称] ``` 常见的选项包括: - `-f` 或 `--file`:...
在连接列表中选择刚创建的PostgreSQL连接,点击"连接",你就能在DBeaver的工作区看到数据库的结构,包括表、视图、索引等,也可以执行SQL查询,进行数据管理、数据库设计等操作。 总的来说,DBeaver作为一个功能...
### 三、常用psql命令 - **连接数据库** ``` psql -U <username> -d ``` - **列出所有数据库** ``` \l ``` - **切换数据库** ``` \c ``` - **显示当前数据库** ``` \dx ``` - **退出psql** ...
标签“postgre”即为PostgreSQL的缩写,说明文章专注于该数据库系统。 在提供的部分内容中,我们可以看到作者深入探讨了数据噪音和隐式噪音的过滤方法,以及多维聚集的不同维度实现。具体来说,文章介绍了通过聚集...
### ArcGIS Server 修改机器名后的解决方案 在使用ArcGIS Server的过程中,可能会遇到因更改服务器名称而导致的连接问题。本文将详细介绍如何解决“Unable to connect to ...如果还有其他技术疑问,欢迎继续探讨。
本篇将详细介绍两种常用的技术:ODBC(Open Database Connectivity)和ADO(ActiveX Data Objects)。 1. ODBC(开放数据库互联) ODBC 是一个标准的数据库访问接口,它允许应用程序通过统一的API来访问不同类型的...
PostgreSQL 是一种功能强大且免费的开源关系数据库管理系统,它提供了高效、可靠和可扩展的数据存储和管理解决方案。下面是 PostgreSQL 数据库使用指南的详细介绍。 一、创建管理账户 在使用 PostgreSQL 数据库...