關於postgresql系統表,能夠參考PostgreSQL 8.1 中文文檔-系統表。php
記錄了數據庫中的表,索引,序列,視圖("關係")。
其中比較重要字段有:html
relname
表,索引,視圖等的名字。relnamespace
包含這個關係的名字空間(模式)的 OID,對應pg_namespace.oid
relkind
r = 普通表,i = 索引,S = 序列,v = 視圖, c = 複合類型,s = 特殊,t = TOAST表記錄了數據庫的名字空間(模式)
其中比較重要的字段有:sql
nspname
名字空間的名字nspowner
名字空間的全部者記錄了數據庫關於表的字段的信息。
其中比較重要的字段有:數據庫
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
這個字段已經被刪除了,再也不有效。注意:函數
varchar
),那麼在atttypmod
中存儲的長度比實際長度多4。可見參考文檔1。numeric
,那麼可經過atttypmod
得到長度、精度等信息,具體方式可見參考文檔2。記錄了數據庫有關數據類型的信息。
其中比較重要的字段有:post
typname
數據類型名字typlen
對於定長類型,typlen是該類型內部表現形式的字節數目。 對於變長類型,typlen 是負數。 -1 表示一種"變長"類型(有長度字屬性的數據), -2 表示這是一個 NULL 結尾的 C 字串。記錄了數據庫中對象(表、字段等)的註釋。
其中比較重要的字段有:spa
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
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