一、pg_class:
該系統資料表記錄了資料表、索引(仍然需要參閱pg_index)、序列、視圖、複合類型和一些特殊關聯類型的中繼資料。注意:不是所有欄位對所有物件類型都有意義。
| 名字 |
類型 |
引用 |
描述 |
| relname |
name |
|
資料類型名字。 |
| relnamespace |
oid |
pg_namespace.oid |
包含這個對象的名字空間(模式)的OI。 |
| reltype |
oid |
pg_type.oid |
對應這個表的行類型的資料類型。 |
| relowner |
oid |
pg_authid.oid |
對象的所有者。 |
| relam |
oid |
pg_am.oid |
對於索引對象,表示該索引的類型(B-tree,hash)。 |
| relfilenode |
oid |
|
Object Storage Service在磁碟上的檔案名稱,如果沒有則為0。 |
| reltablespace |
oid |
pg_tablespace.oid |
對象所在的資料表空間。如果為零,則表示使用該資料庫的預設資料表空間。(如果對象在磁碟上沒有檔案,這個欄位就沒有什麼意義) |
| relpages |
int4 |
|
該資料表或索引所佔用的磁碟頁面數量,查詢規劃器會藉助該值選擇最優路徑。 |
| reltuples |
float4 |
|
表中行的數量,該值只是被規劃器使用的一個估計值。 |
| reltoastrelid |
oid |
pg_class.oid |
與此表關聯的TOAST表的OID,如果沒有為0。TOAST表在一個從屬表裡"離線"儲存大欄位。 |
| reltoastidxid |
oid |
pg_class.oid |
如果是TOAST表,該欄位為它索引的OID,如果不是TOAST表則為0。 |
| relhasindex |
bool |
|
如果這是一個資料表而且至少有(或者最近有過)一個索引,則為真。它是由CREATE INDEX設定的,但DROP INDEX不會立即將它清除。如果VACUUM發現一個表沒有索引,那麼它清理 relhasindex。 |
| relisshared |
bool |
|
如果該表在整個叢集中由所有資料庫共用,則為真。 |
| relkind |
char |
|
r = 普通表,i = 索引,S = 序列,v = 視圖, c = 複合類型,s = 特殊,t = TOAST表 |
| relnatts |
int2 |
|
資料表中使用者欄位的數量(除了系統欄位以外,如oid)。在pg_attribute裡肯定有相同數目的資料行。見pg_attribute.attnum. |
| relchecks |
int2 |
|
表中檢查約束的數量,參閱pg_constraint表。 |
| reltriggers |
int2 |
|
表中觸發器的數量;參閱pg_trigger表。 |
| relhasoids |
bool |
|
如果我們為對象中的每行都產生一個OID,則為真。 |
| relhaspkey |
bool |
|
如果該表存在主鍵,則為真。 |
| relhasrules |
bool |
|
如表有規則就為真;參閱pg_rewrite表。 |
| relhassubclass |
bool |
|
如果該表有子表,則為真。 |
| relacl |
aclitem[] |
|
存取權限。 |
見如下應用樣本:
#查看指定表對象testtable的模式
postgres=# SELECT relname,relnamespace,nspname FROM pg_class c,pg_namespace n WHERE relname = 'testtable' AND relnamespace = n.oid;
relname | relnamespace | nspname
-------------+--------------+---------
testtable | 2200 | public
(1 row)
#查看指定表對象testtable的owner(即role)。
postgres=# select relname,rolname from pg_class c,pg_authid au where relname = 'testtable' and relowner = au.oid;
relname | rolname
-------------+----------
testtable | postgres
(1 row)