PostgreSQL中有没有类似Oracle的dba_objects系统视图

PostgreSQL中有没有类似Oracle的dba_objects系统视图

在PostgreSQL中,没有一个完全集成了所有对象信息的视图(类似于Oracle中的DBA_OBJECTS)。但是,PostgreSQL提供了一些系统目录表和视图,可以用来获取数据库对象的信息。这些系统目录表和视图包括但不限于以下内容:

  1. pg_class: 存储关系(表、索引、序列、视图等)的基本信息。
  2. pg_tables: 包含所有用户定义的表的信息。
  3. pg_views: 包含视图的信息。
  4. pg_indexes: 包含索引的信息。
  5. information_schema.tables: 标准SQL视图,包括表的信息。
  6. information_schema.views: 标准SQL视图,包括视图的信息。
  7. information_schema.columns: 包含所有列的信息。

你可以使用这些视图和表来查询不同类型的数据库对象信息。例如:

查询所有表的信息

sql 复制代码
SELECT * FROM information_schema.tables
WHERE table_schema NOT IN ('information_schema', 'pg_catalog');

查询所有视图的信息

sql 复制代码
SELECT * FROM information_schema.views
WHERE table_schema NOT IN ('information_schema', 'pg_catalog');

查询所有索引的信息

sql 复制代码
SELECT * FROM pg_indexes
WHERE schemaname NOT IN ('pg_catalog', 'information_schema');

查询所有用户定义的表、视图、序列的基本信息

sql 复制代码
SELECT * FROM pg_class
WHERE relkind IN ('r', 'v', 'S') AND relnamespace NOT IN (
    SELECT oid FROM pg_namespace WHERE nspname IN ('pg_catalog', 'information_schema')
);

如果你需要一个整合多个对象信息的视图,可以自己创建一个类似DBA_OBJECTS的视图。例如:

创建自定义视图

sql 复制代码
CREATE VIEW dba_objects AS
SELECT 
    c.oid,
    n.nspname AS schema_name,
    c.relname AS object_name,
    CASE c.relkind
        WHEN 'r' THEN 'table'
        WHEN 'v' THEN 'view'
        WHEN 'i' THEN 'index'
        WHEN 'S' THEN 'sequence'
        WHEN 'c' THEN 'composite type'
        ELSE 'other'
    END AS object_type,
    pg_get_userbyid(c.relowner) AS owner
FROM 
    pg_class c
JOIN 
    pg_namespace n ON c.relnamespace = n.oid
WHERE 
    n.nspname NOT IN ('pg_catalog', 'information_schema');

通过这种方式,你可以灵活地查询数据库中的各种对象,并根据具体需求进行筛选和整理。

相关推荐
qq_414256573 小时前
JavaScript中类继承中super关键字的调用执行逻辑
jvm·数据库·python
团象科技3 小时前
2026出海趋势观察:国际云服务器推荐重构企业全球化经营底盘
运维·服务器·重构
代码丰4 小时前
RAG 文档切分、索引优化与 Reranker 学习笔记
数据库
Elastic 中国社区官方博客4 小时前
Elastic 9.4:Workflows 正式发布、Agent Builder 更新,以及 Prometheus / PromQL 支持
运维·数据库·人工智能·elasticsearch·搜索引擎·信息可视化·prometheus
ㄟ留恋さ寂寞4 小时前
html如何修改备注
jvm·数据库·python
2401_884454154 小时前
c++如何读取YAML格式配置文件_yaml-cpp库快速入门【详解】
jvm·数据库·python
2301_775639894 小时前
mysql升级时如何使用Ansible进行自动化部署_mysql自动化管理
jvm·数据库·python
WUYOUGYLU4 小时前
第一次买云服务器,最该先看什么?
数据库
CLX05054 小时前
怎样设置外键的更新级联操作_ON UPDATE CASCADE配置
jvm·数据库·python
李少兄4 小时前
高性能MySQL实战:应用层关联查询的深度优化
数据库·mysql