首页 > 数据库 >pgsql基本操作

pgsql基本操作

时间:2022-11-15 15:55:30浏览次数:39  
标签:description oid attnum pgsql pg 类型 基本操作 type

 一.关于系统表 pg_class 记录了数据库中的表,索引,序列,视图("关系")。 其中比较重要字段有:

  • relname 表,索引,视图等的名字。
  • relnamespace 包含这个关系的名字空间(模式)的 OID,对应pg_namespace.oid
  • relkind r = 普通表,i = 索引,S = 序列,v = 视图, c = 复合类型,s = 特殊,t = TOAST表
pg_namespace 记录了数据库的名字空间(模式) 其中比较重要的字段有:
  • nspname 名字空间的名字
  • nspowner 名字空间的所有者
pg_attribute 记录了数据库关于表的字段的信息。 其中比较重要的字段有:
  • attrelid 此列/字段所属的表,对应于pg_class.oid
  • attname 字段名字
  • atttypid 这个字段的数据类型,对应于pg_type.oid
  • attlen 对于定长类型,typlen是该类型内部表现形式的字节数目。 对于变长类型,typlen 是负数。 -1 表示一种"变长"类型(有长度字属性的数据), -2 表示这是一个 NULL 结尾的 C 字串。是本字段类型 pg_type.typlen 的拷贝。
  • attnum 字段数目。普通字段是从 1 开始计数的。系统字段, 比如 oid, 有(任意)正数。
  • atttypmod atttypmod 元组在创建表的时候 提供的类型相关的数据(比如,一个 varchar 字段的最大长度)。 它传递给类型相关的输入和长度转换函数当做第三个参数。 其值对那些不需要 atttypmod 的类型而言通常为 -1。
  • attnotnull 这代表一个非空约束。我们可以改变这个字段以打开或者关闭这个约束。
  • attisdropped 这个字段已经被删除了,不再有效。
注意:
  1. 如果字段类型为变长类型(如varchar),那么在atttypmod中存储的长度比实际长度多4。可见参考文档1。
  2. 如果字段类型为numeric,那么可通过atttypmod获得长度、精度等信息,具体方式可见参考文档2。
pg_type 记录了数据库有关数据类型的信息。 其中比较重要的字段有:
  • typname 数据类型名字
  • typlen 对于定长类型,typlen是该类型内部表现形式的字节数目。 对于变长类型,typlen 是负数。 -1 表示一种"变长"类型(有长度字属性的数据), -2 表示这是一个 NULL 结尾的 C 字串。
pg_description 记录了数据库中对象(表、字段等)的注释。 其中比较重要的字段有:
  • objoid 这条描述所描述的对象的 OID。如果这条注释是一个表或表中字段的注释,那么,该值对应于pg_class.oid
  • objsubid 对于一个表字段的注释,它是字段号,对应于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

标签:description,oid,attnum,pgsql,pg,类型,基本操作,type
From: https://www.cnblogs.com/diaobw/p/16892679.html

相关文章

  • PG基本操作入门
    1.安装介绍  windos下安装,双击安装包,例如:postgressql-10.13-1-windows-x64.exe输入默认管理用户postgres的密码:<自拟>2.操作数据库  2.1管理工具   ......
  • Python字典基本操作
    Python字典基本操作与列表和元组有所不同,字典是另一种可变容器模型,且可存储任意类型的对象。下面将学习字典的基本操作。1.*字典常用的基本操作字典的对象使用大括号{}......
  • Python元组基本操作
    Python元组基本操作与列表相比,元组对象不能修改,同时元组使用小括号、列表使用方括号。元组创建很简单,只需要在括号中添加元素并使用逗号隔开即可。1.*元组对象的常用操......
  • mongodb基本操作命令及数据类型(一)
    从MongoDB3.2,它使用WiredTiger作为其默认的存储引擎,也可以通过以下语句查询默认的存储引擎1.mongodb入门命令showdatabases/dbs查看当前数据库(test(测试库)、admin......
  • 9、事务基本操作
    Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。Redis事务的主要作用就是串联多......
  • Linux基本操作命令之Mac
    对在macbook上使用shell命令访问Linux服务器的一些常用命令作一个记录 ssh用户名@ip (如:[email protected])pw向上一级:cd..进入根目录:cd/进入下一级home目......
  • 【SVN】基本操作
    新建一个文件夹后,在文件夹中检出版本库 ......
  • 【数据结构-树】并查集的基本操作(待整理)
    目录1数据结构定义2初始化3查找操作4并操作1数据结构定义#defineMAX50intUFSets[MAX];//并查集2初始化//参数:并查集SvoidInit(intS[]){inti;......
  • Go实现栈与队列基本操作
    @目录一前言二实现栈与队列基本操作2.1栈基本操作2.2队列基本操作三用栈实现队列3.1理论3.2算法题3.3思路3.4代码部分四用队列实现栈4.1理论4.2算法题4.3思路......
  • Java中线程的基本操作以及Thread和Runnable两种实现的比较
    线程的定义:某一时间点执行的处理,是操作系统能够进行运算调度的最小单位。一条线程是某一进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务......