服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - PostgreSQL - 详解PostgreSql数据库对象信息及应用

详解PostgreSql数据库对象信息及应用

2021-02-24 17:36neweastsun PostgreSQL

这篇文章主要介绍了PostgreSql数据库对象信息及应用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

PostgreSql数据库对象主要有数据库、表、视图、索引、schema、函数、触发器等。PostgreSql提供了information_schema schema,其中包括返回数据库对象的视图。如用户有访问权限,可以也在pg_catalog schema中查询表、视图等对象。

 

1. 查询数据库对象

 

下面通过示例分别展示如何查询各种数据库对象。

 

1.1 表查询

PostgreSql 表信息可以从information_schema.tables 或 pg_catalog.pg_tables 视图中查询:

?
1
2
select * from information_schema.tables;
select * from pg_catalog.pg_tables;

 

1.2 查询Schema

获取用户当前选择的schema:

?
1
select current_schema();

返回数据库中所有schema:

?
1
2
select * from information_schema.schemata;
select * from pg_catalog.pg_namespace

 

1.3 查询数据库

查询当前选择的数据库:

?
1
select current_database();

返回服务器上所有数据库:

?
1
select * from pg_catalog.pg_database

1.4 查询视图

查询数据库中所有schema中的所有视图:

?
1
2
3
select * from information_schema.views
 
select * from pg_catalog.pg_views;

1.5 查询表的列信息

查询某个表的列信息:

?
1
2
3
4
5
6
7
8
SELECT
    *
FROM
    information_schema.columns
WHERE
    table_name = 'employee'
ORDER BY
    ordinal_position;

1.6 查询索引信息

查询数据库中所有索引信息;

?
1
select * from pg_catalog.pg_indexes;

1.6 查询函数信息

返回数据库中所有函数。对于用户定义函数,routine_definition 列会有函数体:

?
1
select * from information_schema.routines where routine_type = 'FUNCTION';

 

1.7 触发器

查询数据库中所有触发器,action_statemen类别包括触发器body信息:

?
1
select * from information_schema.triggers;

 

2. 查询表占用空间

 

 

2.1 查询表占用空间

实际应用中,通常需要表占用磁盘空间情况,我们可以利用系统表实现:

?
1
2
3
4
5
6
7
8
9
SELECT nspname || '.' || relname AS "relation",
 pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
 FROM pg_class C
 LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
 WHERE nspname NOT IN ('pg_catalog', 'information_schema')
 AND C.relkind <> 'i'
 AND nspname !~ '^pg_toast'
 ORDER BY pg_total_relation_size(C.oid) DESC
 LIMIT 5;

示例输出:

 

relation total_size
public.snapshots 823 MB
public.invoice_items 344 MB
public.messages 267 MB
public.topics 40 MB
public.invoices 35 MB

(5 rows)

2.2 查询数据库占用空间

?
1
2
3
4
5
6
7
SELECT
    pg_database.datname AS "database_name",
    pg_size_pretty(pg_database_size (pg_database.datname)) AS size_in_mb
FROM
    pg_database
ORDER BY
    size_in_mb DESC;

2.3 查询表的记录数

可以通过统计系统表进行查询:

?
1
2
3
4
SELECT schemaname,relname,n_live_tup
FROM pg_stat_user_tables
ORDER BY n_live_tup DESC
LIMIT 12;

顺便说下MySQL对于查询,读者可以对比学习:

?
1
2
3
4
5
SELECT table_name, table_rows
FROM information_schema.tables
WHERE table_schema = (SELECT database())
ORDER BY table_rows DESC
LIMIT 12;

4. 系统表和系统视图

查看数据库系统表命令:

\dt  pg_*

 

表名字 用途
pg_aggregate 聚集函数
pg_am 索引访问方法
pg_amop 访问方法操作符
pg_amproc 访问方法支持过程
pg_attrdef 字段缺省值
pg_attribute 表的列(也称为”属性”或”字段”)
pg_authid 认证标识符(角色)
pg_auth_members 认证标识符成员关系
pg_autovacuum 每个关系一个的自动清理配置参数
pg_cast 转换(数据类型转换)
pg_class 表、索引、序列、视图(“关系”)
pg_constraint 检查约束、唯一约束、主键约束、外键约束
pg_conversion 编码转换信息
pg_database 本集群内的数据库
pg_depend 数据库对象之间的依赖性
pg_description 数据库对象的描述或注释
pg_index 附加的索引信息
pg_inherits 表继承层次
pg_language 用于写函数的语言
pg_largeobject 大对象
pg_listener 异步通知
pg_namespace 模式
pg_opclass 索引访问方法操作符类
pg_operator 操作符
pg_pltemplate 过程语言使用的模板数据
pg_proc 函数和过程
pg_rewrite 查询重写规则
pg_shdepend 在共享对象上的依赖性
pg_shdescription 共享对象上的注释
pg_statistic 优化器统计
pg_tablespace 这个数据库集群里面的表空间
pg_trigger 触发器
pg_type 数据类型

 

 

列出所有pg开头的系统示图:

\dv  pg_*

 

 

视图名 用途
pg_cursors 打开的游标
pg_group 数据库用户的组
pg_indexes 索引
pg_locks 当前持有的锁
pg_prepared_statements 预备语句
pg_prepared_xacts 预备事务
pg_roles 数据库角色
pg_rules 规则
pg_settings 参数设置
pg_shadow 数据库用户
pg_stats 规划器统计
pg_tables
pg_timezone_abbrevs 时区缩写
pg_timezone_names 时区名
pg_user 数据库用户
pg_views 视图

 

 

4. 总结

本文介绍PostgreSQL系统表及视图;通过系统表或视图查询数据库对象及常用统计信息。

到此这篇关于PostgreSql数据库对象信息及应用的文章就介绍到这了,更多相关PostgreSql数据库应用内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/neweastsun/article/details/111825822

延伸 · 阅读

精彩推荐
  • PostgreSQLRDS PostgreSQL一键大版本升级技术解密

    RDS PostgreSQL一键大版本升级技术解密

    一、PostgreSQL行业位置 (一)行业位置 在讨论PostgreSQL(下面简称为PG)在整个数据库行业的位置之前,我们先看一下阿里云数据库在全球的数据库行业里的...

    未知1192023-05-07
  • PostgreSQLPostgreSQL标准建表语句分享

    PostgreSQL标准建表语句分享

    这篇文章主要介绍了PostgreSQL标准建表语句分享,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    码上得天下7962021-02-27
  • PostgreSQLpostgresql 中的to_char()常用操作

    postgresql 中的to_char()常用操作

    这篇文章主要介绍了postgresql 中的to_char()常用操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    J符离13432021-04-12
  • PostgreSQLPostgresql查询效率计算初探

    Postgresql查询效率计算初探

    这篇文章主要给大家介绍了关于Postgresql查询效率计算的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Postgresql具有一定的参考学习价...

    轨迹4622020-05-03
  • PostgreSQL分布式 PostgreSQL之Citus 架构

    分布式 PostgreSQL之Citus 架构

    节点 Citus 是一种 PostgreSQL 扩展,它允许数据库服务器(称为节点)在“无共享(shared nothing)”架构中相互协调。这些节点形成一个集群,允许 PostgreSQL 保存比单...

    未知802023-05-07
  • PostgreSQLPostgresql开启远程访问的步骤全纪录

    Postgresql开启远程访问的步骤全纪录

    postgre一般默认为本地连接,不支持远程访问,所以如果要开启远程访问,需要更改安装文件的配置。下面这篇文章主要给大家介绍了关于Postgresql开启远程...

    我勒个去6812020-04-30
  • PostgreSQLpostgresql 数据库中的数据转换

    postgresql 数据库中的数据转换

    postgres8.3以后,字段数据之间的默认转换取消了。如果需要进行数据变换的话,在postgresql数据库中,我们可以用"::"来进行字段数据的类型转换。...

    postgresql教程网12482021-10-08
  • PostgreSQL深入理解PostgreSQL的MVCC并发处理方式

    深入理解PostgreSQL的MVCC并发处理方式

    这篇文章主要介绍了深入理解PostgreSQL的MVCC并发处理方式,文中同时介绍了MVCC的缺点,需要的朋友可以参考下 ...

    PostgreSQL教程网3622020-04-25