• 售前

  • 售后

热门帖子
入门百科

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

[复制链接]
追上前面的 显示全部楼层 发表于 2021-10-26 12:49:41 |阅读模式 打印 上一主题 下一主题
目次


  • 1. 查询数据库对象

    • 1.1 表查询
    • 1.2 查询Schema
    • 1.3 查询数据库
    • 1.7 触发器

  • 2. 查询表占用空间

    • 2.1 查询表占用空间

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

1. 查询数据库对象

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

1.1 表查询

PostgreSql 表信息可以从information_schema.tables 或 pg_catalog.pg_tables 视图中查询:
  1. select * from information_schema.tables;
  2. select * from pg_catalog.pg_tables;
复制代码
1.2 查询Schema

获取用户当前选择的schema:
  1. select current_schema();
复制代码
返回数据库中全部schema:
  1. select * from information_schema.schemata;
  2. select * from pg_catalog.pg_namespace
复制代码
1.3 查询数据库

查询当前选择的数据库:
  1. select current_database();
复制代码
返回服务器上全部数据库:
  1. select * from pg_catalog.pg_database
复制代码
1.4 查询视图
查询数据库中全部schema中的全部视图:
  1. select * from information_schema.views
  2. select * from pg_catalog.pg_views;
复制代码
1.5 查询表的列信息
查询某个表的列信息:
  1. SELECT
  2.         *
  3. FROM
  4.         information_schema.columns
  5. WHERE
  6.         table_name = 'employee'
  7. ORDER BY
  8.         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. SELECT nspname || '.' || relname AS "relation",
  2. pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
  3. FROM pg_class C
  4. LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
  5. WHERE nspname NOT IN ('pg_catalog', 'information_schema')
  6. AND C.relkind <> 'i'
  7. AND nspname !~ '^pg_toast'
  8. ORDER BY pg_total_relation_size(C.oid) DESC
  9. 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. SELECT
  2.         pg_database.datname AS "database_name",
  3.         pg_size_pretty(pg_database_size (pg_database.datname)) AS size_in_mb
  4. FROM
  5.         pg_database
  6. ORDER BY
  7.         size_in_mb DESC;
复制代码
2.3 查询表的记载数
可以通过统计体系表进行查询:
  1. SELECT schemaname,relname,n_live_tup
  2. FROM pg_stat_user_tables
  3. ORDER BY n_live_tup DESC
  4. LIMIT 12;
复制代码
趁便说下MySQL对于查询,读者可以对比学习:
  1. SELECT table_name, table_rows
  2. FROM information_schema.tables
  3. WHERE table_schema = (SELECT database())
  4. ORDER BY table_rows DESC
  5. LIMIT 12;
复制代码
4. 体系表和体系视图
检察数据库体系表命令:
  1. \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数据库应用内容请搜刮脚本之家从前的文章或继续欣赏下面的相干文章盼望各人以后多多支持脚本之家!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作