postgresql用sql语句查询表结构
用到的postgresql系统表
关于postgresql系统表,可以参考PostgreSQL 8.1 中文文档-系统表。
pg_class
记录了数据库中的表,索引,序列,视图("关系")。
其中比较重要字段有:
relname表,索引,视图等的名字。relnamespace包含这个关系的名字空间(模式)的 OID,对应pg_namespace.oidrelkindr = 普通表,i = 索引,S = 序列,v = 视图, c = 复合类型,s = 特殊,t = TOAST表
pg_namespace
记录了数据库的名字空间(模式)
其中比较重要的字段有:
nspname名字空间的名字nspowner名字空间的所有者
pg_attribute
记录了数据库关于表的字段的信息。
其中比较重要的字段有:
attrelid此列/字段所属的表,对应于pg_class.oidattname字段名字atttypid这个字段的数据类型,对应于pg_type.oidattlen对于定长类型,typlen是该类型内部表现形式的字节数目。 对于变长类型,typlen 是负数。 -1 表示一种"变长"类型(有长度字属性的数据), -2 表示这是一个 NULL 结尾的 C 字串。是本字段类型 pg_type.typlen 的拷贝。attnum字段数目。普通字段是从 1 开始计数的。系统字段, 比如 oid, 有(任意)正数。atttypmodatttypmod 元组在创建表的时候 提供的类型相关的数据(比如,一个 varchar 字段的最大长度)。 它传递给类型相关的输入和长度转换函数当做第三个参数。 其值对那些不需要 atttypmod 的类型而言通常为 -1。attnotnull这代表一个非空约束。我们可以改变这个字段以打开或者关闭这个约束。attisdropped这个字段已经被删除了,不再有效。
注意:
- 如果字段类型为变长类型(如
varchar),那么在atttypmod中存储的长度比实际长度多4。可见参考文档1。 - 如果字段类型为
numeric,那么可通过atttypmod获得长度、精度等信息,具体方式可见参考文档2。
pg_type
记录了数据库有关数据类型的信息。
其中比较重要的字段有:
typname数据类型名字typlen对于定长类型,typlen是该类型内部表现形式的字节数目。 对于变长类型,typlen 是负数。 -1 表示一种"变长"类型(有长度字属性的数据), -2 表示这是一个 NULL 结尾的 C 字串。
pg_description
记录了数据库中对象(表、字段等)的注释。
其中比较重要的字段有:
objoid这条描述所描述的对象的 OID。如果这条注释是一个表或表中字段的注释,那么,该值对应于pg_class.oidobjsubid对于一个表字段的注释,它是字段号,对应于pg_attribute.attnum。对于其它对象类型,它是零。description作为对该对象的描述的任意文本
查询用户表
SELECT a.oid,
a.relname AS name,
b.description AS comment
FROM pg_class a
LEFT OUTER JOIN pg_description b ON b.objsubid=0 AND a.oid = b.objoid
WHERE a.relnamespace = (SELECT oid FROM pg_namespace WHERE nspname='public') --用户表一般存储在public模式下
AND a.relkind='r'
ORDER BY a.relname
使用表名查询表字段的定义
SELECT a.attnum,
a.attname AS field,
t.typname AS type,
a.attlen AS length,
a.atttypmod AS lengthvar,
a.attnotnull AS notnull,
b.description AS comment
FROM pg_class c,
pg_attribute a
LEFT OUTER JOIN pg_description b ON a.attrelid=b.objoid AND a.attnum = b.objsubid,
pg_type t
WHERE c.relname = 'zc_zclx'
and a.attnum > 0
and a.attrelid = c.oid
and a.atttypid = t.oid
ORDER BY a.attnum
使用表oid查询表字段的定义
SELECT a.attname AS field,
t.typname AS type,
a.attlen AS length,
a.atttypmod AS lengthvar,
a.attnotnull AS notnull,
b.description AS comment
FROM pg_attribute a
LEFT OUTER JOIN pg_description b ON a.attrelid=b.objoid AND a.attnum = b.objsubid,
pg_type t
WHERE a.attnum > 0
and a.attrelid = 162903
and a.atttypid = t.oid
ORDER BY a.attnum
参考文档
- PostgreSQL 9.0 modify pg_attribute.atttypmod extend variable char length avoid rewrite table
- PostgreSQL How can i decode the NUMERIC precision and scale in pg_attribute.atttypmod
postgresql用sql语句查询表结构的更多相关文章
- SQL语句查询表结构
SQL语句查询表结构 刚刚在做一个小项目,数据库中一张表有20来个字段,用我以前做的一个.NET实体类生成器一个一个的输入还是闲麻烦,于是打算找个时间来重新的改造一个那个.NET实体类,能够通过选 ...
- SQL语句 & 查询表结构
[group by] 对结果集进行分组,常与汇总函数一起使用. SELECT column,SUM(column) FROM table GROUP BY column HAVING 通常与 GROU ...
- Sql 2000系统表 语句查询表结构
SQL2000系统表的应用 –1:获取当前数据库中的所有用户表 select Name from sysobjects where xtype=’u’ and status>=0 –2:获取 ...
- sql server 查询表结构
--查询表结构start SELECT 序号 = a.colorder,字段名称 = a.name,字段描述 = f.value, 标识 then '√' else '' end, 主键 FROM s ...
- sql语句查询表中重复字段以及显示字段重复条数
今天跟大家分享两条SQL语句,是关于查询某表中重复字段以及显示该字段的重复条数. 1.select * from 表名 where 列名 in (select 列名 from 表名 group by ...
- 使用SQL语句查询表及表字段类型说明
今天突然遇到有人要数据库表及表字段说明,数据库表太多又不能一个个表去找,就想想SQL是否能直接查询出来. 经过查询资料,加上一些自己的一些调整写了一个sql语句,在此记录一下,以方便日后查找使用. S ...
- SQL Server查询表结构语句
--1:获取当前数据库中的所有用户表 www.2cto.com select Name from sysobjects where xtype='u' and status>=0 -- ...
- PostgreSQL的SQL语句中的双引号引发的问题
最近开发一个WEB的ETL工具需要用到不同的数据源.第一次用POSTGRESQL发现一个双引号引发的问题: 标准的SQL是不区分大小写的.但是PostgreSQL对于数据库中对象的名字允许使用支持大小 ...
- postgresql 字段sql语句 更改表名
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/sq8706/article/detail ...
随机推荐
- NYOJ35 表达式求值
表达式求值 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 ACM队的mdd想做一个计算器,但是,他要做的不仅仅是一计算一个A+B的计算器,他想实现随便输入一个表达式 ...
- 母函数(Generating function)详解
母函数(Generating function)详解 在数学中,某个序列的母函数(Generating function,又称生成函数)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息.使用 ...
- H - Parity game 并查集
Now and then you play the following game with your friend. Your friend writes down a sequence consis ...
- [bzoj1613][Usaco2008 Jan]Running贝茜的晨练计划_动态规划
Running贝茜的晨练计划 bzoj-1613 Usaco-2008 Jan 题目大意:题目链接(U组题题意真的是没法概括qwq....). 注释:略. 想法:一眼dp题. 状态:dp[i][j]表 ...
- LVS 源代码分析
http://blog.chinaunix.net/uid/11207493.html http://zh.linuxvirtualserver.org/blog/3309
- windows下检測文件改变
这个主要是应用在我前一篇博客里提到的脚本热载入功能. 主要实现的功能检測目录内文件的变化(改变.新增.删除.重命名),当发现改变的时候通知lua又一次载入脚本.基本上就是一个windows api的使 ...
- smart pointer
smart pointer是一种abstract data type,它可以模仿指针的行为,而且额外提供了一系列诸如自己主动内存管理.边界检查等特性,这些特性是为了在保证效率的基础上降低因为对指针的不 ...
- UVA - 10691 Subway
题目大意:给定n个点.要求建造尽量少得铁路(从原点发射出的射线).使得全部点到铁路的最短距离小于d. 解题思路:题目能够转化成区间选点问题,即以极角来表示铁轨.然后计算出每一个区间可行的极角范围,进行 ...
- luogu2346 四子连棋
题目大意 在一个4*4的棋盘上摆放了14颗棋子,其中有7颗白色棋子,7颗黑色棋子,有两个空白地带,任何一颗黑白棋子都可以向上下左右四个方向移动到相邻的空格,这叫行棋一步,黑白双方交替走棋,任意一方可以 ...
- imagebutton 设置了src属性的图片更换
<ImageButton android:id="@+id/mediacontroller_play_pause" android:layout_width="wr ...