【postgresql】查看数据中表的信息

切换到postgresql数据库,各种不适应吧。

有个需求需要查询数据表的各种信息。

下面我们一起学习吧。

●PostgreSQL: Documentation

PostgreSQL: Documentation

pg_namespace

存储名字空间。名字空间是 SQL 模式下层的结构:每个名字空间有独立的关系, 类型等集合但并不会相互冲突。

OID

在PostgreSQL中,对象标识符Object identifiers (OIDs) 用来在整个数据集簇中唯一的标识一个数据库对象,这个对象可以是数据库、表、索引、视图、元组、类型等等。

OID的分配由系统中的一个全局OID计数器来实现,OID分配时会采用互斥锁加以锁定以避免多个要求分配OID的请求获得相同的OID。

sql
select * from pg_namespace WHERE nspname ='screen';

pg_tables

pg_tables 提供了对有关数据库中每个表的有用信息地访问。

SQl
select * from pg_tables  where schemaname = 'creen' and tablename = 'title';

●pg_class

pg_class表记载表和几乎所有有字段或者是那些类似表的东西。 包括索引(不过还要参阅pg_index)、序列、视图、物化视图、 复合类型和一些特殊关系类型;

名字类型引用描述
oidoid行标识符(隐藏属性; 必须明确选择)
relnamename表、索引、视图等的名字。
relnamespaceoidpg_namespace.oid包含这个关系的名字空间(模式)的 OID
reltypeoidpg_type.oid如果有,则为对应这个表的行类型的数据类型的OID(索引为零,它们没有pg_type记录)。
reloftypeoidpg_type.oid对于类型表,为底层复合类型的OID,对于所有其他关系为0
relowneroidpg_authid.oid关系所有者
relamoidpg_am.oid如果行是索引,那么就是所用的访问模式(B-tree, hash 等等)
relfilenodeoid这个关系在磁盘上的文件的名字,0表示这是一个"映射的"关系, 它的文件名取决于行级别的状态
reltablespaceoidpg_tablespace.oid这个关系存储所在的表空间。如果为零,则意味着使用该数据库的缺省表空间。 如果关系在磁盘上没有文件,则这个字段没有什么意义。
relpagesint4以页(大小为BLCKSZ)的此表在磁盘上的形式的大小。 它只是规划器用的一个近似值,是由VACUUM,ANALYZE 和几个 DDL 命令,比如CREATE INDEX更新。
reltuplesfloat4表中行的数目。只是规划器使用的一个估计值,由VACUUM,ANALYZE 和几个 DDL 命令,比如CREATE INDEX更新。
relallvisibleint4在表的可见映射中标记所有可见的页的数目。只是规划器使用的一个估计值, 由VACUUM,ANALYZE 和几个 DDL 命令,比如CREATE INDEX更新。
reltoastrelidoidpg_class.oid与此表关联的 TOAST 表的 OID ,如果没有为 0 。TOAST 表在一个从属表里"离线"存储大字段。
reltoastidxidoidpg_class.oid对于 TOAST 表是它的索引的 OID ,如果不是 TOAST 表则为 0
relhasindexbool如果它是一个表而且至少有(或者最近有过)一个索引,则为真。
relissharedbool如果该表在整个集群中由所有数据库共享则为真。只有某些系统表 (比如pg_database)是共享的。
relpersistencecharp = permanent table(永久表), u = unlogged table(未加载的表), t = temporary table (临时表)
relkindcharr = ordinary table(普通表), i = index(索引), S = sequence(序列), v = view(视图), m = materialized view(物化视图), c = composite type(复合类型), t = TOAST table(TOAST 表), f = foreign table(外部表)
relnattsint2关系中用户字段数目(除了系统字段以外)。在pg_attribute 里肯定有相同数目对应行。又见pg_attribute.attnum
relchecksint2表里的CHECK约束的数目;参阅pg_constraint表
relhasoidsbool如果为关系中每行都生成一个 OID 则为真
relhaspkeybool如果这个表有一个(或者曾经有一个)主键,则为真。
relhasrulesbool如表有(或曾经有)规则就为真;参阅pg_rewrite表
relhastriggersbool如果表有(或者曾经有)触发器,则为真;参阅pg_trigger表
relhassubclassbool如果有(或者曾经有)任何继承的子表,为真。
relispopulatedbool如果关系是填充的则为真(对所有关系为真,除了一些物化视图)
relfrozenxidxid该表中所有在这个之前的事务 ID 已经被一个固定的("frozen")事务 ID 替换。 这用于跟踪该表是否需要为了防止事务 ID 重叠或者允许收缩pg_clog 而进行清理。如果该关系不是表则为零(InvalidTransactionId)。
relminmxidxid该表中所有在这个之前的多事务 ID 已经被一个事务 ID 替换。 这用于跟踪该表是否需要为了防止多事务 ID 重叠或者允许收缩pg_clog 而进行清理。如果该关系不是表则为零(InvalidTransactionId)。
relaclaclitem[]访问权限。参阅GRANTREVOKE获取详细信息。
reloptionstext[]访问方法特定的选项,使用"keyword=value"格式的字符串

SQl
select * from pg_class where relname = 'title' ;

● pg_description

pg_description表可以给每个数据库对象存储一个可选的描述(注释)。 你可以用COMMENT命令操作这些描述,并且可以用psql 的\d命令查看。许多内置的系统对象的描述提供了 pg_description的初始内容。

pg_shdescription 提供了类似的功能,它记录了整个集群范围内共享对象的注释。

名字类型引用描述
objoidoid任意 oid 属性这条描述所描述的对象的 OID
classoidoidpg_class.oid这个对象出现的系统表的 OID
objsubidint4对于一个表字段的注释,它是字段号(objoidclassoid 指向表自身)。对于其它对象类型,它是零。
descriptiontext作为对该对象的描述的任意文本
SQl
select * from pg_description
where objoid = to_regclass('screen' || '.' || 'title')::REGCLASS::OID;

● columns


视图columns包含有关数据库中所有表字段(或者视图字段)的信息。 不包括系统字段(比如oid等)。只有那些当前用户有权访问的字段才会显示出来 (要么是所有者,要么是有些权限)。

名字数据类型描述
table_catalogsql_identifier包含表的数据库的名字(总是当前数据库)
table_schemasql_identifier包含表的模式的名字
table_namesql_identifier表的名字
column_namesql_identifier字段的名字
ordinal_positioncardinal_number字段在表中的位置序号(从 1 开始)
column_defaultcharacter_data字段的缺省表达式
is_nullableyes_or_no如果字段可能为空,则为YES,如果知道它不能为空,则为NO。 非空约束是我们得知字段不能为空的一个手段,但是还可能有其它的。
data_typecharacter_data如果它是一个内置类型,那么为字段的数据类型,如果它是某种数组, 则为ARRAY(在这种情况下,参阅视图element_types), 否则就是USER-DEFINED(这时,类型定义在udt_name和相关的字段上)。 如果字段基于域,这个字段引用底层域类型(而域是在domain_name和相关字段里定义的)。
character_maximum_lengthcardinal_number如果data_type标识一个字符或者位串类型,那么就是声明的最大长度; 如果是其它类型或者没有定义最大长度,就是空。
character_octet_lengthcardinal_number如果data_type标识一个字符类型,就是以字节记的最大可能长度; 所有其它类型都是空。最大字节长度取决于声明的字节最大长度(见上文)和服务器编码。
numeric_precisioncardinal_number如果data_type标识一个数值类型,这个字段包含 (声明的或隐含的)这个字段的数据类型的精度。精度表示有效小数位的长度。 它可以用十进制或者二进制来表示,这一点在numeric_precision_radix 字段里声明。对于其它数据类型,这个字段是空。
numeric_precision_radixcardinal_number如果data_type标识一个数值类型,这个字段标识字段 numeric_precisionnumeric_scale 里的数据是多少进制的。值要么是 2 要么是 10。对于所有其它数据类型,这个字段是空。
numeric_scalecardinal_number如果data_type标识一个精确的数值类型, 那么这个字段包含(声明的或者隐含的)这个字段上这个类型的数值范围。 数值范围表明小数点右边的有效小数位的数目。它可以用十进制(10为基) 或者二进制(二为基)来表示,正如字段numeric_precision_radix 声明的那样。对于所有其它数据类型,这个字段是空。
datetime_precisioncardinal_number如果data_type标识一个日期,时间,时间戳,或者间隔类型, 该字段(公开地或隐含地)包含该字段类型的小数秒精度,就是说, 小数位数保持到小数点后面。对于所有其它的数据类型,该字段是null。
interval_typecharacter_data如果data_type标识一个间隔类型,这个字段包含这个字段时间间隔声明, 例如,YEAR TO MONTHDAY TO SECOND等等。 如果没有指定字段限制(也就是,间隔接受所有字段),或对于所有其他数据类型,这个字段是null。
interval_precisioncardinal_number用于一个PostgreSQL不可用的特性 (参阅datetime_precision获取间隔类型字段的小数秒精度)
character_set_catalogsql_identifier用于PostgreSQL里一个不可用的特性
character_set_schemasql_identifier用于PostgreSQL里一个不可用的特性
character_set_namesql_identifier用于PostgreSQL里一个不可用的特性
collation_catalogsql_identifier包含该字段的排序规则的数据库的名字(总是当前数据库),缺省或者字段的数据类型不可排序时为null。
collation_schemasql_identifier包含该字段的排序规则的模式的名字,缺省或者字段的数据类型不可排序时为null。
collation_namesql_identifier字段的排序规则的名字,缺省或者字段的数据类型不可排序时为null。
domain_catalogsql_identifier如果字段是域类型,就是该域定义所在的数据库的名字(总是当前数据库),否则为null。
domain_schemasql_identifier如果字段是域类型,就是域定义所在的模式的名字,否则为null。
domain_namesql_identifier如果字段是域类型,就是该域的名字,否则为null。
udt_catalogsql_identifier这个字段数据类型(如果适用,就是底层域类型)定义所在的数据库的名字(总是当前数据库)。
udt_schemasql_identifier这个字段数据类型(如果适用,就是底层域类型)定义所在的模式名字。
udt_namesql_identifier这个字段数据类型(如果适用,就是底层域类型)的名字。
scope_catalogsql_identifier用于PostgreSQL里一个不可用的特性
scope_schemasql_identifier用于PostgreSQL里一个不可用的特性
scope_namesql_identifier用于PostgreSQL里一个不可用的特性
maximum_cardinalitycardinal_number总是空,因为在PostgreSQL里数组总是有无限的最大维数
dtd_identifiersql_identifier一个该字段的数据类型描述符的标识符,在属于这个表中的所有的数据类型描述符中唯一。 这个字段主要用于和其它这样的标识符实例连接。 (这个标识符的确切格式没有定义并且不保证在将来的版本中保持一样。)
is_self_referencingyes_or_no用于PostgreSQL里一个不可用的特性
is_identityyes_or_no用于PostgreSQL里一个不可用的特性
identity_generationcharacter_data用于PostgreSQL里一个不可用的特性
identity_startcharacter_data用于PostgreSQL里一个不可用的特性
identity_incrementcharacter_data用于PostgreSQL里一个不可用的特性
identity_maximumcharacter_data用于PostgreSQL里一个不可用的特性
identity_minimumcharacter_data用于PostgreSQL里一个不可用的特性
identity_cycleyes_or_no用于PostgreSQL里一个不可用的特性
is_generatedcharacter_data用于PostgreSQL里一个不可用的特性
generation_expressioncharacter_data用于PostgreSQL里一个不可用的特性
is_updatableyes_or_no如果字段为可更新则为YES,否则为NO (基表中的字段总是可以更新的,而试图中的字段则不一定)

系统目录信息函数

名称返回类型描述
format_type(type_oid, typemod)text获得一个数据类型的 SQL 名字
pg_get_constraintdef(constraint_oid)text获得一个约束的定义
pg_get_constraintdef(constraint_oid, pretty_bool)text获得一个约束的定义
pg_get_expr(pg_node_tree, relation_oid)text反编译一个表达式的内部形式,假定其中的任何 Var 指向由第二个参数指示的关系
pg_get_expr(pg_node_tree, relation_oid, pretty_bool)text反编译一个表达式的内部形式,假定其中的任何 Var 指向由第二个参数指示的关系
pg_get_functiondef(func_oid)text获得一个函数的定义
pg_get_function_arguments(func_oid)text获得一个函数定义的参数列表(带有默认值)
pg_get_function_identity_arguments(func_oid)text获得标识一个函数的参数列表(不带默认值)
pg_get_function_result(func_oid)text获得函数的RETURNS子句
pg_get_indexdef(index_oid)text获得索引的CREATE INDEX命令
pg_get_indexdef(index_oid, column_no, pretty_bool)text获得索引的CREATE INDEX命令,或者当column_no为非零时只得到一个索引列的定义
pg_get_keywords()setof record获得 SQL 关键字的列表及其分类
pg_get_ruledef(rule_oid)text获得规则的CREATE RULE命令
pg_get_ruledef(rule_oid, pretty_bool)text获得规则的CREATE RULE命令
pg_get_serial_sequence(table_name, column_name)text获得一个serial、smallserial或bigserial列使用的序列的名称
pg_get_triggerdef(trigger_oid)text获得触发器的CREATE [ CONSTRAINT ] TRIGGER命令
pg_get_triggerdef(trigger_oid, pretty_bool)text获得触发器的CREATE [ CONSTRAINT ] TRIGGER命令
pg_get_userbyid(role_oid)name获得给定 OID 指定的角色名
pg_get_viewdef(view_name)text获得视图或物化视图的底层SELECT命令(已废弃
pg_get_viewdef(view_name, pretty_bool)text获得视图或物化视图的底层SELECT命令(已废弃
pg_get_viewdef(view_oid)text获得视图或物化视图的底层SELECT命令
pg_get_viewdef(view_oid, pretty_bool)text获得视图或物化视图的底层SELECT命令
pg_get_viewdef(view_oid, wrap_column_int)text获得视图或物化视图的底层SELECT命令;带域的行被包装成指定的列数,并隐含了优质打印
pg_options_to_table(reloptions)setof record获得存储选项的名称/值对的集合
pg_tablespace_databases(tablespace_oid)setof oid获得在该表空间中有对象的数据库的 OID 的集合
pg_tablespace_location(tablespace_oid)text获得这个表空间所在的文件系统的路径
pg_typeof(any)regtype获得任意值的数据类型
collation for (any)text获得该参数的排序规则
to_regclass(rel_name)regclass获得命名关系的OID
to_regproc(func_name)regproc获得命名函数的OID
to_regprocedure(func_name)regprocedure获得命名函数的OID
to_regoper(operator_name)regoper获得命名操作符的OID
to_regoperator(operator_name)regoperator获得命名操作符的OID
to_regtype(type_name)regtype获得命名类型的OID
to_regnamespace(schema_name)regnamespace获得命名模式的OID
to_regrole(role_name)regrole获得命名角色的OID

查询表的注释

SELECT tb.table_name, d.description
FROM information_schema.tables tbJOIN pg_class c ON c.relname = tb.table_nameLEFT JOIN pg_description d ON d.objoid = c.oid AND d.objsubid = '0'
WHERE tb.table_schema = 'screen';

查询列注释

-- 查询列注释
SELECT col.table_catalog,col.table_schema   AS tableSchema,col.table_name     AS tableName,col.column_name    AS fieldName,col.is_nullable    AS "isNull",col.data_type      AS dataType,col.column_default AS defaultValue,d.description      AS fieldDescribe
FROM information_schema.columns colJOIN pg_class c ON c.relname = col.table_nameLEFT JOIN pg_description d ON d.objoid = c.oidAND d.objsubid = col.ordinal_position
WHERE col.table_schema = 'screen'
ORDER BY col.table_name;




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/142871.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java排序算法之基数排序

基数排序(Radix Sort)是一种线性时间复杂度的排序算法,其时间复杂度为O(d(nk)),其中d是数字的位数,k是进制数。基数排序是一种非比较排序算法,它按照数位的大小来进行排序。它可以处理正整数、负整数和小数…

kubectl 常用命令搜集 —— 筑梦之路

集群信息&#xff1a; 1. 显示 Kubernetes 版本&#xff1a;kubectl version 2. 显示集群信息&#xff1a;kubectl cluster-info 3. 列出集群中的所有节点&#xff1a;kubectl get nodes 4. 查看一个具体的节点详情&#xff1a;kubectl describe node <node-name> 5.…

csh 脚本批量处理文件并将文件扔给程序

文章目录 前言程序批量造 case 并将 cmd 扔给程序运行批量收集数据汇总 前言 Linux下我们经常会写一些shell脚本来辅助我们学习或者工作&#xff0c;从而提高效率。 之前就写过一篇博客&#xff1a;Linux下利用shell脚本批量产生内容有规律变化的文件 程序 批量造 case 并将…

国际阿里云:无法访问ECS实例中的服务的排查方法!!!

操作场景 无法访问ECS实例中的服务可能有以下原因&#xff1a; 可能原因 排查方案 ECS实例的安全组未开放相应端口 检查ECS实例安全组规则 ECS实例中&#xff0c;该服务未启动/开启或服务对应端口未被监听 检查服务状态及端口监听状态 ECS实例内防火墙设置错误 检查ECS…

linux中mysql下mysqldump命令常见用法详解

linux中mysql下mysqldump命令常见用法详解 一、导出1、数据库db级2、数据表级3. 主要导出参数 二、 导入1. 常用导入方法2. 导入示例 三、 拼出部分对象创建语句1. 导出视图创建语句2. 导出其他对象 一、导出 1、数据库db级 导出所有db结构和数据 mysqldump -uroot -p -A >…

计算机网络基础导览

入门 一看就懂&#xff0c;原来这就是计算机网络-CSDN博客一看就懂&#xff0c;把“百度”搬回家-CSDN博客 理论基础 以太网数据帧-CSDN博客 扩展 用互联网思维打造物流网&#xff08;别人笑我太疯癫&#xff0c;我把自己当成仙&#xff09;-CSDN博客

玩转ChatGPT:ARIMA模型定制GPT-1.0

一、写在前面 好久不更新咯&#xff01; OpenAI又推出了GPT的一系列重大更新&#xff0c;其中GPTs深得我心啊。 GPTs允许用户创建自定义的ChatGPT版本&#xff0c;以满足自己各种特定需求。其核心理念在于&#xff0c;用户可以为不同的场景和任务创建定制化的ChatGPT。这意味…

2023云计算发展趋势

目录 一、云计算是什么&#xff1f; 二、云计算发展趋势 三、总结 一、云计算是什么&#xff1f; 云计算是一种基于互联网的计算方式&#xff0c;通过网络连接的方式提供计算能力、存储服务、应用程序和数据资源。它通常通过虚拟化技术实现多个计算机资源的池化&#xff0c;…

【NodeJS】Nodejs安装及环境配置

下载安装包 网址&#xff1a;https://nodejs.org/en 安装程序 1.下载完成后&#xff0c;双击安装包&#xff0c;进行安装&#xff0c;一路默认配置 nxet 即可&#xff0c;安装路劲给默认在C盘&#xff0c;或者选择其他位置&#xff0c;当前教程默认C盘 2.下图根据本身的…

会议邀请 | 思腾合力邀您共赴第二十五届高交会(CHTF2023)

2023年11月15-19日&#xff0c;以“激发创新活力 提升发展质量”为主题的「第二十五届中国国际高新技术成果交易会&#xff08;CHTF2023&#xff09;」将在深圳会展中心&#xff08;福田&#xff09;和深圳国际会展中心&#xff08;宝安&#xff09;举办。思腾合力作为行业领先…

新版软考高项试题分析精选(三)

请点击↑关注、收藏&#xff0c;本博客免费为你获取精彩知识分享&#xff01;有惊喜哟&#xff01;&#xff01; 1、项目整体管理要综合考虑项目各个相关过程&#xff0c;围绕整体管理特点&#xff0c;以下说法中&#xff0c;&#xff08; &#xff09;是不正确的。 A.项目的…

java springboot2.7 JSR303与Hibernate进行Bean的数据校验

我们如果对数据能进行格式校验 做个安全检查就会容易很多 其实 各个系统中都必然后拥有数据校验&#xff0c;这也不是新东西 J2EE规范中JSR303就规范定义了一组有关数据校验的API 首先 我们在 pom.xml 中 注入依赖 <dependency><groupId>javax.validation</gr…

SpringEvent事件通知机制

“Spring Event” 是 Spring 框架通过事件驱动的编程模型来处理应用程序中的事件。开发者可以定义自己的事件&#xff0c;然后在应用程序中触发这些事件。Spring 框架提供了用于发布和监听事件的机制&#xff0c;以实现松散耦合的组件间通信。 有两个核心组件&#xff1a; 事…

centos 6.10 安装 tcmalloc

安装 libunwind-1.6.2 下载地址 解压文件 cd libunwind-1.6.2 ./configure make && make install另一种方式 从 github 上下载的项目, 在执行autoreconf -i 时一直报错&#xff0c;libtool 未定义&#xff0c; 要先在当前目录执行 libtoolize&#xff0c;再执行 au…

PostGIS学习教程五:简单的SQL语句

SQL&#xff0c;或"Structured Query Language-结构化查询语言"&#xff0c;是对关系数据库进行查询数据和更新数据的一种方法。 当我们创建第一个数据库时&#xff0c;你已经看到了SQL&#xff1a; SELECT postgis_full_version();查看PostGIS的版本信息。 在前面的…

应届裁员,天胡开局——谈谈我的前端一年经历

应届裁员&#xff0c;天胡开局——谈谈我的前端一年经历 许久没有更新了&#xff0c;最近一个月都在忙&#xff0c;没错&#xff0c;正如题目所说&#xff0c;裁员然后找工作… 这周刚重新上班&#xff0c;工作第二天&#xff0c;感慨良多&#xff0c;记录些什么吧。 去年十…

基于springboot实现学生选课平台管理系统项目【项目源码】计算机毕业设计

基于springboot实现学生选课平台管理系统演示 系统开发平台 在该地方废物回收机构管理系统中&#xff0c;Eclipse能给用户提供更多的方便&#xff0c;其特点一是方便学习&#xff0c;方便快捷&#xff1b;二是有非常大的信息储存量&#xff0c;主要功能是用在对数据库中查询和…

Outlook如何恢复已删除邮件

Outlook如何恢复已删除邮件 操作指引&#xff1a; Outlook客户端恢复最近7天删除的邮件&#xff1a; Outlook客户端要求最新版本&#xff0c;如没有如下选项&#xff0c;建议联机更新windows update 网页邮箱恢复最近7天删除的邮件&#xff1a;

MySQL 社区开源备份工具 Xtrabackup 详解

文章目录 前言1. Xtrabackup 介绍1.1 物理备份与逻辑备份区别1.2 Xtrabackup 系列版本 2. Xtrabackup 部署2.1 下载安装包2.2 二进制部署2.3 程序文件介绍2.4 备份需要的权限 3. Xtrabackup 使用场景3.1 本地全量备份3.2 本地压缩备份3.3 全量流式备份3.3.1 备份到远程主机3.3.…

喷墨打印的简单介绍

喷墨打印是一种常见的打印技术&#xff0c;使用液体墨水将图像或文本喷射到纸张或其他打印材料上。以下是喷墨打印的主要特点&#xff0c;优秀的喷头厂家&#xff0c;应用场景以及未来发展趋势的概述&#xff1a; **喷墨打印的特点&#xff1a;** 1. **高分辨率&#xff1a;**…