PostgreSQL 中一些常用的系统视图和信息架构视图

PostgreSQL 提供了丰富的系统视图(System Catalog Views)和信息架构视图(Information Schema Views),这些视图用于存储和展示数据库的元数据,如表、列、角色、权限等信息。以下是 PostgreSQL 中一些常用的系统视图和信息架构视图。

一、系统视图(System Catalog Views)

系统视图用于访问 PostgreSQL 数据库内部的信息,它们包含数据库的结构、权限、角色、对象等元数据。系统视图的表通常以 pg_ 开头。

1. pg_roles

存储所有角色的信息(用户、组等)。

SELECT * FROM pg_roles;
2. pg_catalog.pg_tables

存储所有表的信息(包括用户表和系统表)。

SELECT * FROM pg_catalog.pg_tables;
3. pg_class

存储数据库中所有关系(表、视图、索引等)的信息。

SELECT * FROM pg_class;
4. pg_attribute

存储关于表和视图列的信息。

SELECT * FROM pg_attribute;
5. pg_index

存储关于索引的信息。

SELECT * FROM pg_index;
6. pg_user

存储数据库用户的信息,与 pg_roles 类似,但只包含普通用户,不包含组。

SELECT * FROM pg_user;
7. pg_database

存储数据库的信息。

SELECT * FROM pg_database;
8. pg_proc

存储函数和存储过程的信息。

SELECT * FROM pg_proc;
9. pg_stat_activity

存储当前数据库活动的信息(例如当前连接)。

SELECT * FROM pg_stat_activity;
10. pg_stat_user_tables

存储用户表的统计信息(例如行数、修改计数等)。

SELECT * FROM pg_stat_user_tables;
11. pg_stat_user_indexes

存储用户索引的统计信息。

SELECT * FROM pg_stat_user_indexes;
12. pg_catalog.pg_constraint

存储表的约束信息(如主键、外键等)。

SELECT * FROM pg_catalog.pg_constraint;
13. pg_auth_members

存储角色成员信息,指明哪些角色是其他角色的成员。

SELECT * FROM pg_auth_members;
14. pg_locks

存储当前数据库的锁信息。

SELECT * FROM pg_locks;
15. pg_shmem_allocations

存储共享内存的分配情况。

SELECT * FROM pg_shmem_allocations;

二、信息架构视图(Information Schema Views)

信息架构视图遵循 SQL 标准,提供了一种与数据库对象交互的标准化方式,可以跨不同的数据库管理系统进行查询。它们主要用于提供数据库对象(如表、列、约束等)的元数据。

1. information_schema.tables

存储所有表的信息(包括视图)。

SELECT * FROM information_schema.tables;
2. information_schema.columns

存储所有表和视图的列信息。

SELECT * FROM information_schema.columns;
3. information_schema.schemata

存储所有 schema(模式)的信息。

SELECT * FROM information_schema.schemata;
4. information_schema.key_column_usage

存储主键和外键列的信息。

SELECT * FROM information_schema.key_column_usage;
5. information_schema.table_constraints

存储表约束的信息(如主键、外键、唯一约束等)。

SELECT * FROM information_schema.table_constraints;
6. information_schema.constraint_column_usage

存储列约束的信息,指明约束作用于哪些列。

SELECT * FROM information_schema.constraint_column_usage;
7. information_schema.views

存储所有视图的信息。

SELECT * FROM information_schema.views;
8. information_schema.triggered_update_columns

存储触发器相关的列信息。

SELECT * FROM information_schema.triggered_update_columns;
9. information_schema.role_table_grants

存储角色和表之间的权限信息。

SELECT * FROM information_schema.role_table_grants;
10. information_schema.role_column_grants

存储角色和列之间的权限信息。

SELECT * FROM information_schema.role_column_grants;
11. information_schema.parameters

存储存储过程和函数的参数信息。

SELECT * FROM information_schema.parameters;
12. information_schema.routines

存储所有存储过程和函数的信息。

SELECT * FROM information_schema.routines;
13. information_schema.domains

存储自定义数据类型(如域、枚举等)的信息。

SELECT * FROM information_schema.domains;
14. information_schema.applicable_roles

存储角色和权限信息,列出当前用户可用的角色。

SELECT * FROM information_schema.applicable_roles;
15. information_schema.character_sets

存储字符集信息。

SELECT * FROM information_schema.character_sets;

三、其他有用的系统视图

1. pg_timezone_names

存储所有时区的名称及相关信息。

SELECT * FROM pg_timezone_names;
2. pg_type

存储所有数据类型的信息。

SELECT * FROM pg_type;
3. pg_enum

存储枚举类型的值信息。

SELECT * FROM pg_enum;
4. pg_language

存储所有语言的信息(包括内建语言和扩展语言)。

SELECT * FROM pg_language;
5. pg_extension

存储安装的扩展信息。

SELECT * FROM pg_extension;
6. pg_depend

存储对象间的依赖关系(如函数依赖于某个表的某列)。

SELECT * FROM pg_depend;

总结

  • 系统视图(pg_开头的视图):提供数据库的底层系统信息,如角色、表、索引、函数等元数据。
  • 信息架构视图(information_schema开头的视图):遵循 SQL 标准,提供跨数据库管理系统的标准元数据接口,适合进行跨平台查询。

你可以根据自己的需要选择合适的视图来查询 PostgreSQL 数据库的元数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值