openGuass 系统对象的获取

1、获取用户当前的所有数据库列表

通常,在大多数基于 PostgreSQL 的系统中,包括 openGauss,你可以使用 pg_catalog 模式下的系统表来查询数据库列表。然而,openGauss 可能会有些许不同,所以最好的做法是查阅 openGauss 的官方文档或使用以下 SQL 查询作为起点:

sql 复制代码
 SELECT datname AS "Database"  
 FROM pg_catalog.pg_database  
 WHERE datallowconn = true  
   AND NOT datistemplate;

2、获取系统所有的表空间名称

在 openGauss 数据库中,要获取所有的表空间信息,你可以查询系统表来检索这些信息。openGauss 的系统表结构与 PostgreSQL 类似,因为 openGauss 是基于 PostgreSQL 的一个分支。

要获取表空间信息,你可以查询 pg_tablespace 系统表。以下是一个 SQL 查询示例,该查询将返回 openGauss 中所有表空间的信息:

sql 复制代码
SELECT   
 spcname
FROM   
 pg_catalog.pg_tablespace;

3、获取用户和角色列表

在 openGauss 数据库中,要获取所有的用户和角色列表,你可以查询系统目录表 pg_rolespg_authid(因为 pg_roles 通常是 pg_authid 的一个视图)。这些表包含了关于数据库用户和角色的信息。

以下是一个 SQL 查询示例,用于获取 openGauss 中所有的用户和角色列表

markdown 复制代码
SELECT   
 * 
FROM   
    pg_catalog.pg_roles  

4、获取一个数据库的模式列表

在 openGauss 数据库中,要查询一个特定数据库下的模式(schema)列表,你可以使用 SQL 查询来检索 pg_namespace 系统表。这个表包含了数据库中所有模式的信息。

sql 复制代码
SELECT nspname AS schema_name  
FROM pg_namespace  
WHERE nspname NOT IN ('pg_catalog', 'information_schema') -- 排除系统模式和信息模式  
ORDER BY nspname;

5、获取一个模式下的函数和存储过程个数

sql 复制代码
select * from information_schema.routines where routine_schema = 'information_schema'

6、获取一个模式下的表的总数

sql 复制代码
SELECT COUNT(*) AS table_count  
FROM pg_tables  
WHERE schemaname = 'information_schema' 

7、获取一个表的列名信息

sql 复制代码
SELECT   
    attname AS column_name,  
    format_type(atttypid, atttypmod) AS data_type  
FROM   
    pg_attribute   
JOIN   
    pg_class ON attrelid = pg_class.oid   
JOIN   
    pg_namespace ON relnamespace = pg_namespace.oid  
WHERE   
    nspname = 'information_schema'   
    AND relname = 'sql_features'  
    AND attnum > 0   
    AND NOT attisdropped  
ORDER BY   
    attnum;
    

8、 获取一个表的索引信息

在 openGauss 数据库中,要获取一个表的索引信息,你可以查询 pg_indexes 视图,但这会返回一个格式化的字符串列表,可能不够详细。更详细的索引信息可以从 pg_classpg_index 和其他系统目录中查询得到。

ini 复制代码
SELECT * FROM pg_indexes WHERE tablename = 'employees';

9、获取一个表的约束信息

sql 复制代码
SELECT conname, contype
FROM pg_constraint
WHERE conrelid = (SELECT oid FROM pg_class WHERE relname = 'employees');

10、获取一个表的ddl语句

arduino 复制代码
SELECT pg_get_tabledef('employees');

11、获取一个表中列的精度和标度

sql 复制代码
SELECT attname, atttypmod
FROM pg_attribute
WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'employees') AND attnum > 0;

12、获取一个模式下的所有序列名称

ini 复制代码
SELECT sequence_name
FROM information_schema.sequences
WHERE sequence_schema = 'public';

13、获取一模式下所有的视图名称

ini 复制代码
SELECT viewname
FROM pg_views
WHERE schemaname = 'public';

14、获取一个模式下所有外表名称

sql 复制代码
SELECT relname
FROM pg_class
WHERE relkind = 'f' AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'your_schema_name');

15、获取一个模式下的所有触发器名称

sql 复制代码
SELECT tgname FROM pg_trigger WHERE tgrelid IN (SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'your_schema_name'));

16、获取一个表的索引的ddl语句

ini 复制代码
SELECT indexdef
FROM pg_indexes
WHERE tablename = 'employees' AND schemaname = 'public';
相关推荐
程序员岳焱3 小时前
Java 与 MySQL 性能优化:Java 实现百万数据分批次插入的最佳实践
后端·mysql·性能优化
麦兜*4 小时前
Spring Boot启动优化7板斧(延迟初始化、组件扫描精准打击、JVM参数调优):砍掉70%启动时间的魔鬼实践
java·jvm·spring boot·后端·spring·spring cloud·系统架构
大只鹅4 小时前
解决 Spring Boot 对 Elasticsearch 字段没有小驼峰映射的问题
spring boot·后端·elasticsearch
ai小鬼头4 小时前
AIStarter如何快速部署Stable Diffusion?**新手也能轻松上手的AI绘图
前端·后端·github
IT_10245 小时前
Spring Boot项目开发实战销售管理系统——数据库设计!
java·开发语言·数据库·spring boot·后端·oracle
bobz9655 小时前
动态规划
后端
stark张宇5 小时前
VMware 虚拟机装 Linux Centos 7.9 保姆级教程(附资源包)
linux·后端
亚力山大抵6 小时前
实验六-使用PyMySQL数据存储的Flask登录系统-实验七-集成Flask-SocketIO的实时通信系统
后端·python·flask
超级小忍6 小时前
Spring Boot 中常用的工具类库及其使用示例(完整版)
spring boot·后端
CHENWENFEIc7 小时前
SpringBoot论坛系统安全测试实战报告
spring boot·后端·程序人生·spring·系统安全·安全测试