Whoami:5年+金融、政府、医疗领域工作经验的DBACertificate:OCP、PCPSkill:Oracle、Mysql、PostgreSQLPlatform:CSDN、墨天伦、公众号(呆呆的私房菜)
阅读本文可以了解到PostgreSQL数据库系统表、函数相关的内容。
除了public和用户创建的模式之外,每个数据库都包含一个pg_catalog模式,它包含了系统表和所有内置数据类型、函数和操作符。
pg_catalog总是搜索路径中的一部分,如果它没有明确出现在路径中,那么它会隐含地在路径模式之前搜索。
select relkind, relname from pg_classwhere relnamespace = (select oid from pg_namespace where nspname='pg_catalog') and relkind = 'r' order by 1, 2;
| 目录名 | 用途 |
|---|---|
pg_aggregate | 聚集函数 |
pg_am | 关系访问方法 |
pg_amop | 访问方法操作符 |
pg_amproc | 访问方法支持函数 |
pg_attrdef | 列默认值 |
pg_attribute | 表列(“属性”) |
pg_authid | 认证标识符(角色) |
pg_auth_members | 认证标识符成员关系 |
pg_cast | 转换(数据类型转换) |
pg_class | 表、索引、序列、视图 (“关系”) |
pg_collation | 排序规则(locale信息) |
pg_constraint | 检查约束、唯一约束、主键约束、外键约束 |
pg_conversion | 编码转换信息 |
pg_database | 本数据库集簇中的数据库 |
pg_db_role_setting | 每角色和每数据库的设置 |
pg_default_acl | 对象类型的默认权限 |
pg_depend | 数据库对象间的依赖 |
pg_description | 数据库对象上的描述或注释 |
pg_enum | 枚举标签和值定义 |
pg_event_trigger | 事件触发器 |
pg_extension | 已安装扩展 |
pg_foreign_data_wrapper | 外部数据包装器定义 |
pg_foreign_server | 外部服务器定义 |
pg_foreign_table | 外部表信息 |
pg_index | 索引信息 |
pg_inherits | 表继承层次 |
pg_init_privs | 对象初始特权 |
pg_language | 编写函数的语言 |
pg_largeobject | 大对象的数据页 |
pg_largeobject_metadata | 大对象的元数据 |
pg_namespace | 模式 |
pg_opclass | 访问方法操作符类 |
pg_operator | 操作符 |
pg_opfamily | 访问方法操作符族 |
pg_partitioned_table | 表的分区键的信息 |
pg_policy | 行安全策略 |
pg_proc | 函数和过程 |
pg_publication | 用于逻辑复制的发布 |
pg_publication_rel | 发布映射的关系 |
pg_range | 范围类型的信息 |
pg_replication_origin | 已注册的复制源 |
pg_rewrite | 查询重写规则 |
pg_seclabel | 数据库对象上的安全标签 |
pg_sequence | 有关序列的信息 |
pg_shdepend | 共享对象上的依赖 |
pg_shdescription | 共享对象上的注释 |
pg_shseclabel | 共享数据库对象上的安全标签 |
pg_statistic | 规划器统计 |
pg_statistic_ext | 扩展的规划器统计信息(定义) |
pg_statistic_ext_data | 扩展的规划器统计信息(已构建的统计信息) |
pg_subscription | 逻辑复制订阅 |
pg_subscription_rel | 订阅的关系状态 |
pg_tablespace | 本数据库集簇内的表空间 |
pg_transform | 转换(将数据类型转换为过程语言需要的形式) |
pg_trigger | 触发器 |
pg_ts_config | 文本搜索配置 |
pg_ts_config_map | 文本搜索配置的记号映射 |
pg_ts_dict | 文本搜索字典 |
pg_ts_parser | 文本搜索分析器 |
pg_ts_template | 文本搜索模板 |
pg_type | 数据类型 |
pg_user_mapping | 将用户映射到外部服务器 |
## 查看所有系统视图select relkind,relname from pg_classwhere relnamespace = (select oid from pg_namespace where nspname='pg_catalog') and relkind = 'v' order by 1, 2;
| 视图名字 | 用途 |
|---|---|
pg_available_extensions | 可用的扩展 |
pg_available_extension_versions | 所有版本的扩展 |
pg_config | 编译时配置参数 |
pg_cursors | 打开的游标 |
pg_file_settings | 配置文件内容摘要 |
pg_group | 数据库用户组 |
pg_hba_file_rules | 客户端认证配置文件内容的摘要 |
pg_indexes | 索引 |
pg_locks | 当前保持或者等待的锁 |
pg_matviews | 物化视图 |
pg_policies | 策略 |
pg_prepared_statements | 预备好的语句 |
pg_prepared_xacts | 预备好的事务 |
pg_publication_tables | publication和它们相关的表 |
pg_replication_origin_status | 有关复制源的信息,包括复制进度 |
pg_replication_slots | 复制槽信息 |
pg_roles | 数据库角色 |
pg_rules | 规则 |
pg_seclabels | 安全标签 |
pg_sequences | 序列 |
pg_settings | 参数设置 |
pg_shadow | 数据库用户 |
pg_shmem_allocations | 共享内存分配 |
pg_stats | 规划器统计信息 |
pg_stats_ext | 扩展的计划器统计信息 |
pg_tables | 表 |
pg_timezone_abbrevs | 时区简写 |
pg_timezone_names | 时区名字 |
pg_user | 数据库用户 |
pg_user_mappings | 用户映射 |
pg_views | 视图 |
参考链接:https://www.postgresql.org/docs/14/functions-info.html
会话信息函数:
| 函数名字 | 用途 |
current_catalog | 返回当前数据库的名称 |
current_query | 返回客户端提交的当前正在执行的查询文本 |
current_role | 返回当前role |
current_schema | 返回搜索路径中第一个出现的架构的名称 |
current_user | 返回当前用户名 |
inet_client_addr | 返回当前客户端的 IP 地址 |
inet_client_port | 返回当前客户端的 IP 端口号 |
inet_server_addr | 返回服务器接受当前连接的 IP |
inet_client_port | 返回当前客户端的 IP 端口号 |
inet_server_port | 返回服务器接受当前连接的 IP 端口号 |
pg_backend_pid | 返回附加到当前会话的服务器进程的进程 ID。 |
pg_blocking_pids | 返回一个会话的进程 ID 数组 |
pg_conf_load_time | 返回上次加载服务器配置文件的时间 |
pg_current_logfile | 返回日志记录收集器当前正在使用的日志文件的路径名 |
pg_my_temp_schema | 返回当前会话的临时架构的 OID |
pg_is_other_temp_schema | 如果给定的 OID 是另一个会话的临时架构的 OID返回true |
pg_jit_available | 如果 JIT 编译器扩展可用(请参阅第 32 章),并且 jit 配置参数设置为 on ,则返回 true。 |
pg_listening_channels | 返回当前会话正在侦听的异步通知通道的名称集 |
pg_notification_queue_usage | 异步通知队列的最大大小的分数 (0–1),该大小当前由等待处理的通知占用 |
pg_postmaster_start_time | 返回服务器启动的时间。 |
pg_safe_snapshot_blocking_pids | 返回一个会话的进程 ID 数组,这些会话阻止具有指定进程 ID 的服务器进程获取安全快照,如果没有此类服务器进程或未阻止该进程,则返回一个空数组 |
pg_trigger_depth | 返回会话用户的名称 |
session_user | 返回当前会话正在侦听的异步通知通道的名称集 |
user | 相当于current_user |
version | 返回PostgreSQL服务器版本 |
权限查询函数:
| 函数名字 | 用途 |
has_any_column_privilege | 用户是否对表的任何列具有权限 |
has_column_privilege | 用户是否具有指定表列的权限 |
has_database_privilege | 用户是否具有数据库的权限 |
has_foreign_data_wrapper_privilege | 用户是否具有外部数据包装器的权限 |
has_function_privilege | 用户是否具有函数权限 |
has_language_privilege | 用户是否具有语言权限 |
has_schema_privilege | 用户是否具有schema的权限 |
has_sequence_privilege | 用户是否具有序列的权限 |
has_server_privilege | 用户是否具有使用外部服务器的权限 |
has_table_privilege | 用户是否具有表的权限 |
has_tablespace_privilege | 用户是否具有表空间的权限 |
has_type_privilege | 用户是否具有数据类型的权限 |
pg_has_role | 用户是否具有角色权限 |
row_security_active | 在当前用户和当前环境的上下文中,指定表的行级别安全性是否处于活动状态 |
管理aclitem函数:
| 函数名字 | 用途 |
acldefault(type, ownerId) | 用户是否对表的任何列具有权限 |
aclexplode(aclitem[]) | 用户是否具有指定表列的权限 |
makeaclitem(grantee, grantor, privilege, grantable) | 用从输入中建立一个aclitem |
模式可见性查询函数
| 函数名字 | 用途 |
pg_collation_is_visible | 排序规则在搜索路径中是否可见 |
pg_conversion_is_visible | 转化在搜索路径中是否可见 |
pg_function_is_visible | 函数在搜索路径中是否可见 |
pg_opclass_is_visible | 运算类在搜索路径中是否可见 |
pg_operator_is_visible | 运算符在搜索路径中是否可见 |
pg_opfamily_is_visible | 算子族在搜索路径中是否可见 |
pg_statistics_obj_is_visible | 统计信息对象在搜索路径中是否可见 |
pg_table_is_visible | 表格在搜索路径中是否可见 |
pg_ts_config_is_visible | 文本搜索配置在搜索路径中是否可见 |
pg_ts_dict_is_visible | 文本搜索词典在搜索路径中是否可见 |
pg_ts_parser_is_visible | 文本搜索解析器在搜索路径中是否可见 |
pg_ts_template_is_visible | 文本搜索模板在搜索路径中是否可见 |
pg_type_is_visible | 类型(或域)在搜索路径中是否可见 |
catalog函数
| 函数名字 | 用途 |
format_type | 返回由其类型 OID 标识的数据类型的 SQL 名称 |
pg_get_catalog_foreign_keys | 返回一组记录,用于描述 PostgreSQL 系统目录中存在的外键关系 |
pg_get_constraintdef | 重建约束的创建命令 |
pg_get_expr | 反编译存储在系统目录中的表达式的内部形式,例如列的默认值 |
pg_get_functiondef | 重构函数或过程的创建命令 |
pg_get_function_arguments | 以函数或过程需要出现在其中 CREATE FUNCTION 的形式(包括默认值)重建函数或过程的参数列表 |
pg_get_function_identity_arguments | 重建标识函数或过程所需的参数列表,其形式需要出现在诸如 ALTER FUNCTION 的命令中 |
pg_get_function_result | 以函数需要出现在 中 CREATE FUNCTION 的形式重构函数 RETURNS 的子句。过程的返回 NULL 。 |
pg_get_indexdef | 重建索引的创建命令 |
pg_get_keywords | 返回一组记录,描述服务器识别的 SQL 关键字。 |
pg_get_ruledef | 重建规则的创建命令 |
pg_get_serial_sequence | 返回与列关联的序列的名称,如果没有与列关联的序列,则返回 NULL |
pg_get_statisticsobjdef | 为扩展统计信息对象重建创建命令 |
pg_get_triggerdef | 重建触发器的创建命令 |
pg_get_userbyid | 返回给定其 OID 的角色名称 |
pg_get_viewdef | 重建视图或实例化视图的基础 SELECT 命令 |
pg_index_column_has_property | 测试索引列是否具有命名属性 |
pg_index_has_property | 测试索引是否具有命名属性。 |
pg_indexam_has_property | 测试索引访问方法是否具有 named 属性 |
pg_options_to_table | 返回由 中的 pg_class 值表示的存储选项集 |
pg_tablespace_databases | 返回在指定表空间中存储对象的数据库的 OID 集 |
pg_tablespace_location | 返回此表空间所在的文件系统路径 |
COLLATION FOR ( "any" ) | 返回传递给它的值的排序规则的名称 |
to_regclass | 将文本关系名称转换为其 OID |
to_regcollation | 将文本排序规则名称转换为其 OID |
to_regnamespace | 将文本模式名称转换为其 OID |
to_regoper | 将文本运算符名称转换为其 OID |
to_regoperator | 将文本运算符名称(带有参数类型)转换为其 OID |
to_regproc | 将文本函数或过程名称转换为其 OID |
to_regprocedure | 将文本函数或过程名称(带有参数类型)转换为其 OID |
to_regrole | 将文本角色名称转换为其 OID |
to_regtype | 将文本类型名称转换为其 OID |
索引列属性函数
| 函数名字 | 用途 |
asc | 列在正向扫描时是否按升序排序? |
desc | 列在正向扫描时是否按降序排序? |
nulls_first | 列是否在正向扫描时首先使用 null 排序 |
null_last | 使用 null 排序的列是否在正向扫描中持续存在 |
orderable | 该列是否具有任何定义的排序顺序 |
distance_orderable | 例如 ORDER BY col <-> constant ,是否可以通过“距离”操作员按顺序扫描色谱柱 |
returnable | 仅索引扫描是否可以返回列值 |
search_array | 该列是否原生支持 col = ANY(array) 搜索 |
search_nulls | 该列是否支持 IS NULL 和 IS NOT NULL 搜索 |
pg_get_userbyid | 返回给定其 OID 的角色名称 |
clusterable | 索引是否支持在 CLUSTER 命令中使用 |
sindex_scan | 索引是否支持扫描 |
sbitmap_scan | 索引是否支持位图扫描 |
backward_scan | 是否可以在扫描过程中更改扫描方向(以在不需要具体化的情况下支持 FETCH BACKWARD 光标)? |
can_order | 访问方式是否支持 ASC , DESC 以及中的 CREATE INDEX 相关关键字 |
can_unique | 访问方式是否支持唯一索引 |
can_multi_col | 访问方式是否支持多列索引 |
can_exclude | 访问方法是否支持排除约束 |
can_include | 访问方法是否支持 INCLUDE? CREATE INDEX |
对象信息和寻址函数
| 函数名字 | 用途 |
pg_describe_object | 返回由目录 OID、对象 OID 和子对象 ID 标识的数据库对象的文本说明 |
pg_identify_object | 返回一行,其中包含足够的信息,以唯一标识由目录 OID、对象 OID 和子对象 ID 指定的数据库对象 |
pg_identify_object_as_address | 返回一行,其中包含足够的信息,以唯一标识由目录 OID、对象 OID 和子对象 ID 指定的数据库对象 |
pg_get_object_address | 返回一行,其中包含足够的信息,以唯一标识由类型、代码和对象名称以及参数数组指定的数据库对象。 |
描述信息函数
| 函数名字 | 用途 |
col_description | 返回表列的注释,该注释由其表的 OID 及其列号指定 |
obj_description | 返回由其 OID 指定的数据库对象的注释以及包含系统目录的名称 |
obj_description | 返回仅由其 OID 指定的数据库对象的注释 |
shobj_description | 返回由其 OID 指定的共享数据库对象的注释以及包含系统目录的名称 |
事务ID和快照信息函数
| 函数名字 | 用途 |
pg_current_xact_id | 返回当前事务的 ID,如果当前事务还没有一个(因为它尚未执行任何数据库更新),它将分配一个新的 |
pg_current_xact_id_if_assigned | 返回当前事务的 ID,如果 NULL 尚未分配 ID,则返回。(如果事务可能是只读的,则最好使用此变体,以避免不必要地使用 XID |
pg_xact_status | 报告最近事务的提交状态 |
pg_current_snapshot | 返回当前快照,这是一个数据结构,显示现在正在处理的事务 ID |
pg_snapshot_xip | 返回当前事务的 ID,如果当前事务还没有一个(因为它尚未执行任何数据库更新),它将分配一个新的 |
pg_snapshot_xmax | 返回快照 xmax |
pg_snapshot_xmin | 返回快照 xmin |
pg_visible_in_snapshot | 根据此快照,给定的事务 ID 是否可见 |
本文内容就到这啦,阅读完本篇,相信你也对PostgreSQL数据库的系统表、视图和函数一目了然了吧!我们下篇再见!

文章转载自呆呆的私房菜,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




