当前位置: 首页 > news >正文

postgresql查看有哪些表,哪些列,注释是什么

文章目录

      • 数据库
          • 查看所有数据库
          • 查看当前数据库
      • schema
        • 查看所有schema
          • 查看所有schema-简要信息
          • 查看所有schema-详细信息(包含所有者)
          • 查看当前schema
          • 查看表结构
      • 3大schema
      • 查看表注释
      • 登录数据库
      • 查看当前数据库连接
      • 查看当前正在运行sql
      • ABORT 用于退出当前事务。
      • 大小写敏感
      • 查看所有的表
      • 查询所有表名称以及字段含义
      • 查看表名和备注
      • 查看特定表名备注
      • 查看特定表名字段
      • table_catalog 和 table_schema 的区别
      • pg_description表
      • pg_attribute表

数据库

查看所有数据库
SELECTdatnameFROMpg_database;返回结果: test_database# 自己创建的业务数据库postgres# 默认数据库template1# 模板1template0# 模板0

也就是说,postgres,template1,template0都是自带的,其他的才是业务数据库。

查看当前数据库
SELECTcurrent_database()

schema

查看所有schema
查看所有schema-简要信息
SELECTschema_nameFROMinformation_schema.schemataORDERBYschema_name;
查看所有schema-详细信息(包含所有者)
SELECTn.nspnameAS"Schema名称",u.usenameAS"所有者"FROMpg_namespace nJOINpg_user uONn.nspowner=u.usesysidORDERBYn.nspname;
查看当前schema
selectcurrent_schema();

查看表结构

3大schema

2个基本的schema:
information_schema
pg_catalog

然后还有个默认的schema,就是public。
创建表时,如果不指定的schema,那么默认在public下创建表。

information_schema和pg_catalog相当于库,所以查询的时候后面一定要加点号指定范围:

以下2种错误写法:select*frominformation_schema;select*frompg_catalog;错 因为pg_catalog相当于是数据库,这种语句肯定不对。

查看表注释

SELECT
A.attnum,
( SELECT description FROM pg_catalog.pg_description WHERE objoid = A.attrelid AND objsubid = A.attnum ) AS descript,
A.attname,
( select typname from pg_type where oid = A.atttypid) AS type,
A.atttypmod AS data_type
FROM
pg_catalog.pg_attribute A
WHERE
1 = 1
AND A.attrelid = ( SELECT oid FROM pg_class WHERE relname = ‘表名’ )
AND A.attnum > 0
AND NOT A.attisdropped
ORDER BY
A.attnum;

pg_attribute 表
attrelid 引的class对象的id

atttypid 已用的type表的id

attnum objsubid

pg_description

登录数据库

psql -h 127.0.0.1 -U dbuser -p 5832 -d database
上面的命令的参数含义如下:
-h 指定服务器
-p 指定端口
-U 指定用户
-d 指定数据库

查看当前数据库连接

SELECTpg_stat_get_backend_pid(s.backendid)ASprocpid,pg_stat_get_backend_activity(s.backendid)AScurrent_queryFROM(SELECTpg_stat_get_backend_idset()ASbackendid)ASs;

查看当前正在运行sql

SELECT procpid,start,now()-start AS lap,current_query FROM(SELECT backendid,pg_stat_get_backend_pid(S.backendid)AS procpid,pg_stat_get_backend_activity_start(S.backendid)AS start,pg_stat_get_backend_activity(S.backendid)AS current_query FROM(SELECT pg_stat_get_backend_idset()AS backendid)AS S)AS S WHERE current_query<>'<IDLE>'ORDER BY lap DESC;

ABORT 用于退出当前事务。

ABORT [ WORK | TRANSACTION ]

大小写敏感

默认会转换为 小写,如果要保留原样,要加双引号。

查看所有的表

selecttablenamefrompg_tableswhereschemaname='public'andposition('_2'intablename)=0;select*frompg_tables;

查询所有表名称以及字段含义

selectc.relname 表名,cast(obj_description(relfilenode,'pg_class')asvarchar)名称,a.attname 字段,d.description 字段备注,concat_ws('',t.typname,SUBSTRING(format_type(a.atttypid,a.atttypmod)from'\(.*\)'))as列类型frompg_class c,pg_attribute a,pg_type t,pg_description dwherea.attnum>0anda.attrelid=c.oidanda.atttypid=t.oidandd.objoid=a.attrelidandd.objsubid=a.attnumandc.relnamein(selecttablenamefrompg_tableswhereschemaname='public'andposition('_2'intablename)=0)orderbyc.relname,a.attnum

查看表名和备注

selectrelnameastabname,cast(obj_description(relfilenode,'pg_class')asvarchar)ascommentfrompg_class cwhererelnamein(selecttablenamefrompg_tableswhereschemaname='public'andposition('_2'intablename)=0);select*frompg_class;

查看特定表名备注

selectrelnameastabname,cast(obj_description(relfilenode,'pg_class')asvarchar)ascommentfrompg_class cwhererelname='表名';

查看特定表名字段

selecta.attnum,a.attname,concat_ws('',t.typname,SUBSTRING(format_type(a.atttypid,a.atttypmod)from'\(.*\)'))astype,d.descriptionfrompg_class c,pg_attribute a,pg_type t,pg_description dwherec.relname='表名'anda.attnum>0anda.attrelid=c.oidanda.atttypid=t.oidandd.objoid=a.attrelidandd.objsubid=a.attnum;

table_catalog 和 table_schema 的区别

table_catalog 比 table_schema比和 高一级

pg_description表

想要查看注释肯定离不开pg_description表。
共有4列:

字段描述
objoid所属对象的OID(表oid)
classoid对象所属系统目录的OID(pg_class的oid)
objsubid列序号,详细描述我也没看懂:[对于一个表列上的一个注释,这里是列号(objoid和classoid指表本身)。对所有其他对象类型,此列为0。]
description描述文本

注: 根据表名找到oid之后,这里要用objoid关联(不要用classoid哦)。

查看表的注释:

selectoidfrompg_classwhererelname='t_user';select*frompg_descriptionwhereobjoid='从pg_class查出的oid';

pg_attribute表

这个表字段比较多,常用的字段有:

字段描述
attrelid此字段所属的表,值为对应表的odi,也就是pg_class.oid。
attname字段名
atttypid字段的数据类型,值为pg_type.oid
attnum字段的编号,普通字段是从1开始计数的。系统字段,如oid,是任意的负数

http://www.jsqmd.com/news/821237/

相关文章:

  • 构建本地语音对话助手:从ASR到TTS的完整技术栈整合
  • Neovim集成OpenAI:ogpt.nvim插件提升AI编程效率
  • Python GIL与并发模型深入分析
  • 百度网盘直链解析技术实现与架构分析
  • 基于ROS的6-DOF KUKA机器人高效抓取方案:运动学算法与仿真实现
  • Ubuntu根目录爆满别急着扩容!先试试这5个清理命令和3个目录迁移技巧
  • RJ45连接器实战:故障快速定位与来料拦截的6把“手术刀”
  • 南通鑫均信息科技:如皋正规的打印机出租公司怎么联系 - LYL仔仔
  • Godot引擎集成VRM虚拟化身插件:从导入到高级控制全解析
  • ChatGPT人格选择器:构建可编程AI角色框架的完整指南
  • Boss-Key:上班族必备的一键窗口隐藏神器,保护你的数字隐私
  • 终极AMD Ryzen调试工具SMUDebugTool:免费解锁处理器隐藏性能的完整指南
  • Spring Boot集成ChatGPT:构建私有化AI对话服务的完整指南
  • 有技术团队的企业,为什么应该选开源 OA 而不是纯 SaaS
  • unity中TextMeshPro的Font Asset Variant - 冷夜
  • 小肥柴的Hadoop之旅
  • 西高地白梗:上海最受欢迎的白色小勇士,养之前先看这篇 - 速递信息
  • 多维融合,智驭测绘,合众思壮eRTK25激光/视觉测量GNSS接收机,开启高效测绘作业新模式 - 速递信息
  • 我用做了个测试用例自动化生成器,居然真的能用!
  • Navicat Mac版无限试用重置:3种简单方法告别14天限制
  • StockSharp开源量化交易平台:C#/.NET生态的一站式解决方案
  • 整式的四则运算 | 初中数学
  • Hotkey Detective:快速定位Windows热键冲突的终极解决方案
  • SplitQuantV2:大模型CPU高效量化技术解析
  • 新手避坑指南:用Proteus 7.8和Keil 5搞定51单片机温度报警器(附DS18B20驱动代码)
  • 2026新疆包车定制游旅行社推荐,高端私家团首选新疆行未旅行社 - 速递信息
  • 香韵甄选,国货同行 —— 高性价比香水品牌推荐 - 品牌评测官
  • 杭州亨得利深度洗油养护收费标准全公开:2026年5月华润大厦B座4105室实地价目表(附不同品牌真实报价+避坑指南) - 亨得利腕表维修中心
  • 从靶场到实战:手把手复现Redis未授权访问漏洞(CNVD-2019-21763)并利用主从复制RCE
  • VS2017调试卡死?别慌,这招禁用符号服务器能救你(附本地窗口卡死终极排查)