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



  1. 查询数据库对象 下面通过示例分别展示如何查询各种数据库对象。 1.1 表查询 PostgreSql 表信息可以从information_schema.tables 或 pg_catalog.pg_tables 视图中查询: select * from information_schema.tab 1 les; 2 select * from pg_catalog.pg_tables; 1.2 查询Schema 获取用户当前选择的schema: 1select current_schema(); 返回数据库中所有schema: select * from information_schema.sch 1emata; 2select * from pg_catalog.pg_namespac e 1.3 查询数据库 查询当前选择的数据库: 1select current_database(); 返回服务器上所有数据库: 1select * from pg_catalog.pg_database 1.4 查询视图 查询数据库中所有schema中的所有视图: select * from information_schema.vie 1 ws 2 3 select * from pg_catalog.pg_views; 1.5 查询表的列信息 查询某个表的列信息:

SELECT * FROM information_schema.columns WHERE 6    table_name = ’employee' ORDER BY ordinal_position; 1.6 查询索引信息 查询数据库中所有索引信息; 1select * from pg_catalog.pg_indexes; 1.6 查询函数信息 返回数据库中所有函数。对于用户定义函数,routine_definition 列会有函数体: select * from information_schema.rou 1tines where routine_type = ‘FUNCTION’; 1.7 触发器 查询数据库中所有触发器,action_statemen类别包括触发器body信息: select * from information_schema.tri 1 ggers; 2. 查询表占用空间 2.1 查询表占用空间 实际应用中,通常需要表占用磁盘空间情况,我们可以利用系统表实现: SELECT nspname || ‘.’ || relname AS"relation", pg_size_pretty(pg_total_relation_si 1 ze(C.oid))AS “total_size” 2 FROM pg_class C 3 LEFT JOIN pg_namespace N ON (N.oid 4 = C.relnamespace) 5 WHERE nspname NOT IN (‘pg_catalog’, 6 ‘information_schema’) 7 AND C.relkind <> ‘i’ 8 AND nspname !~ ‘^pg_toast’ 9 ORDER BY pg_total_relation_size(C.o id) 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 4(pg_database.datname)) AS size_in_mb 5FROM pg_database ORDER BY size_in_mb DESC; 2.3 查询表的记录数 可以通过统计系统表进行查询: 1SELECT schemaname,relname,n_live_tup 2FROM pg_stat_user_tables 3ORDER BY n_live_tup DESC 4LIMIT 12; 顺便说下MySQL对于查询,读者可以对比学习: SELECT table_name, table_rows 1 FROM information_schema.tables 2 WHERE table_schema = 3 (SELECT database()) 4 ORDER BY table_rows DESC 5 LIMIT 12; 4. 系统表和系统视图 查看数据库系统表命令: \dt  pg_*

表名字用途 pg_aggregate 索引访问方法 pg_amop pg_amproc pg_attrdef 表的列(也称为”属性”或”字段”) pg_authid pg_auth_members 每个关系一个的自动清理配置参数 转换(数据类型转换) 表、索引、序列、视图(“关系”) 检查约束、唯一约束、主键约束、外键约束 pg_conversion pg_database 数据库对象之间的依赖性 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数据库应用内容请搜 索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!