温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PostgreSql数据库中对象的作用有哪些

发布时间:2020-12-28 14:53:54 来源:亿速云 阅读:329 作者:Leah 栏目:开发技术

这篇文章给大家介绍PostgreSql数据库中对象的作用有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

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

1. 查询数据库对象

1.1 表查询

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

select * from information_schema.tables;
select * from pg_catalog.pg_tables;

1.2 查询Schema

获取用户当前选择的schema:

select current_schema();

返回数据库中所有schema:

select * from information_schema.schemata;
select * from pg_catalog.pg_namespace

1.3 查询数据库

查询当前选择的数据库:

select current_database();

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

select * from pg_catalog.pg_database

1.4 查询视图

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

select * from information_schema.views

select * from pg_catalog.pg_views;

1.5 查询表的列信息

查询某个表的列信息:

SELECT
	*
FROM
	information_schema.columns
WHERE
	table_name = 'employee'
ORDER BY
	ordinal_position;

1.6 查询索引信息

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

select * from pg_catalog.pg_indexes;

1.6 查询函数信息

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

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

1.7 触发器

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

select * from information_schema.triggers;

2. 查询表占用空间

2.1 查询表占用空间

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

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;

示例输出:


relationtotal_size
public.snapshots823 MB
public.invoice_items344 MB
public.messages267 MB
public.topics40 MB
public.invoices35 MB

(5 rows)

2.2 查询数据库占用空间

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 查询表的记录数

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

SELECT schemaname,relname,n_live_tup 
FROM pg_stat_user_tables 
ORDER BY n_live_tup DESC
LIMIT 12;

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

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视图

关于PostgreSql数据库中对象的作用有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI