欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

postgresql數(shù)據(jù)庫(kù)如何查看數(shù)據(jù)中表的信息

 更新時(shí)間:2024年04月19日 09:01:55   作者:程序員食堂  
這篇文章主要給大家介紹了關(guān)于postgresql數(shù)據(jù)庫(kù)如何查看數(shù)據(jù)中表信息的相關(guān)資料,要查詢數(shù)據(jù)表信息,需要用到 系統(tǒng)表或系統(tǒng)視圖等,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

切換到postgresql數(shù)據(jù)庫(kù),各種不適應(yīng)吧。

有個(gè)需求需要查詢數(shù)據(jù)表的各種信息。

下面我們一起學(xué)習(xí)吧。

●PostgreSQL: Documentation

PostgreSQL: Documentation

●pg_namespace

存儲(chǔ)名字空間。名字空間是 SQL 模式下層的結(jié)構(gòu):每個(gè)名字空間有獨(dú)立的關(guān)系, 類型等集合但并不會(huì)相互沖突。

OID

在PostgreSQL中,對(duì)象標(biāo)識(shí)符Object identifiers (OIDs) 用來(lái)在整個(gè)數(shù)據(jù)集簇中唯一的標(biāo)識(shí)一個(gè)數(shù)據(jù)庫(kù)對(duì)象,這個(gè)對(duì)象可以是數(shù)據(jù)庫(kù)、表、索引、視圖、元組、類型等等。

OID的分配由系統(tǒng)中的一個(gè)全局OID計(jì)數(shù)器來(lái)實(shí)現(xiàn),OID分配時(shí)會(huì)采用互斥鎖加以鎖定以避免多個(gè)要求分配OID的請(qǐng)求獲得相同的OID。

sql

select * from pg_namespace WHERE nspname ='screen';

pg_tables

pg_tables 提供了對(duì)有關(guān)數(shù)據(jù)庫(kù)中每個(gè)表的有用信息地訪問(wèn)。

SQl

select * from pg_tables  where schemaname = 'creen' and tablename = 'title';

●pg_class

pg_class表記載表和幾乎所有有字段或者是那些類似表的東西。 包括索引(不過(guò)還要參閱pg_index)、序列、視圖、物化視圖、 復(fù)合類型和一些特殊關(guān)系類型;

名字類型引用描述
oidoid行標(biāo)識(shí)符(隱藏屬性; 必須明確選擇)
relnamename表、索引、視圖等的名字。
relnamespaceoidpg_namespace.oid包含這個(gè)關(guān)系的名字空間(模式)的 OID
reltypeoidpg_type.oid如果有,則為對(duì)應(yīng)這個(gè)表的行類型的數(shù)據(jù)類型的OID(索引為零,它們沒(méi)有pg_type記錄)。
reloftypeoidpg_type.oid對(duì)于類型表,為底層復(fù)合類型的OID,對(duì)于所有其他關(guān)系為0
relowneroidpg_authid.oid關(guān)系所有者
relamoidpg_am.oid如果行是索引,那么就是所用的訪問(wèn)模式(B-tree, hash 等等)
relfilenodeoid這個(gè)關(guān)系在磁盤上的文件的名字,0表示這是一個(gè)"映射的"關(guān)系, 它的文件名取決于行級(jí)別的狀態(tài)
reltablespaceoidpg_tablespace.oid這個(gè)關(guān)系存儲(chǔ)所在的表空間。如果為零,則意味著使用該數(shù)據(jù)庫(kù)的缺省表空間。 如果關(guān)系在磁盤上沒(méi)有文件,則這個(gè)字段沒(méi)有什么意義。
relpagesint4以頁(yè)(大小為BLCKSZ)的此表在磁盤上的形式的大小。 它只是規(guī)劃器用的一個(gè)近似值,是由VACUUM,ANALYZE 和幾個(gè) DDL 命令,比如CREATE INDEX更新。
reltuplesfloat4表中行的數(shù)目。只是規(guī)劃器使用的一個(gè)估計(jì)值,由VACUUM,ANALYZE 和幾個(gè) DDL 命令,比如CREATE INDEX更新。
relallvisibleint4在表的可見映射中標(biāo)記所有可見的頁(yè)的數(shù)目。只是規(guī)劃器使用的一個(gè)估計(jì)值, 由VACUUM,ANALYZE 和幾個(gè) DDL 命令,比如CREATE INDEX更新。
reltoastrelidoidpg_class.oid與此表關(guān)聯(lián)的 TOAST 表的 OID ,如果沒(méi)有為 0 。TOAST 表在一個(gè)從屬表里"離線"存儲(chǔ)大字段。
reltoastidxidoidpg_class.oid對(duì)于 TOAST 表是它的索引的 OID ,如果不是 TOAST 表則為 0
relhasindexbool如果它是一個(gè)表而且至少有(或者最近有過(guò))一個(gè)索引,則為真。
relissharedbool如果該表在整個(gè)集群中由所有數(shù)據(jù)庫(kù)共享則為真。只有某些系統(tǒng)表 (比如pg_database)是共享的。
relpersistencecharp = permanent table(永久表), u = unlogged table(未加載的表), t = temporary table (臨時(shí)表)
relkindcharr = ordinary table(普通表), i = index(索引), S = sequence(序列), v = view(視圖), m = materialized view(物化視圖), c = composite type(復(fù)合類型), t = TOAST table(TOAST 表), f = foreign table(外部表)
relnattsint2關(guān)系中用戶字段數(shù)目(除了系統(tǒng)字段以外)。在pg_attribute 里肯定有相同數(shù)目對(duì)應(yīng)行。又見pg_attribute.attnum。
relchecksint2表里的CHECK約束的數(shù)目;參閱pg_constraint表
relhasoidsbool如果為關(guān)系中每行都生成一個(gè) OID 則為真
relhaspkeybool如果這個(gè)表有一個(gè)(或者曾經(jīng)有一個(gè))主鍵,則為真。
relhasrulesbool如表有(或曾經(jīng)有)規(guī)則就為真;參閱pg_rewrite表
relhastriggersbool如果表有(或者曾經(jīng)有)觸發(fā)器,則為真;參閱pg_trigger表
relhassubclassbool如果有(或者曾經(jīng)有)任何繼承的子表,為真。
relispopulatedbool如果關(guān)系是填充的則為真(對(duì)所有關(guān)系為真,除了一些物化視圖)
relfrozenxidxid該表中所有在這個(gè)之前的事務(wù) ID 已經(jīng)被一個(gè)固定的("frozen")事務(wù) ID 替換。 這用于跟蹤該表是否需要為了防止事務(wù) ID 重疊或者允許收縮pg_clog 而進(jìn)行清理。如果該關(guān)系不是表則為零(InvalidTransactionId)。
relminmxidxid該表中所有在這個(gè)之前的多事務(wù) ID 已經(jīng)被一個(gè)事務(wù) ID 替換。 這用于跟蹤該表是否需要為了防止多事務(wù) ID 重疊或者允許收縮pg_clog 而進(jìn)行清理。如果該關(guān)系不是表則為零(InvalidTransactionId)。
relaclaclitem[]訪問(wèn)權(quán)限。參閱GRANT和REVOKE獲取詳細(xì)信息。
reloptionstext[]訪問(wèn)方法特定的選項(xiàng),使用"keyword=value"格式的字符串

SQl

select * from pg_class where relname = 'title' ;

● pg_description

pg_description表可以給每個(gè)數(shù)據(jù)庫(kù)對(duì)象存儲(chǔ)一個(gè)可選的描述(注釋)。 你可以用COMMENT命令操作這些描述,并且可以用psql 的\d命令查看。許多內(nèi)置的系統(tǒng)對(duì)象的描述提供了 pg_description的初始內(nèi)容。

pg_shdescription 提供了類似的功能,它記錄了整個(gè)集群范圍內(nèi)共享對(duì)象的注釋。

名字類型引用描述
objoidoid任意 oid 屬性這條描述所描述的對(duì)象的 OID
classoidoidpg_class.oid這個(gè)對(duì)象出現(xiàn)的系統(tǒng)表的 OID
objsubidint4對(duì)于一個(gè)表字段的注釋,它是字段號(hào)(objoid和classoid 指向表自身)。對(duì)于其它對(duì)象類型,它是零。
descriptiontext作為對(duì)該對(duì)象的描述的任意文本

SQl

select * from pg_description
where objoid = to_regclass('screen' || '.' || 'title')::REGCLASS::OID;

● columns

視圖columns包含有關(guān)數(shù)據(jù)庫(kù)中所有表字段(或者視圖字段)的信息。 不包括系統(tǒng)字段(比如oid等)。只有那些當(dāng)前用戶有權(quán)訪問(wèn)的字段才會(huì)顯示出來(lái) (要么是所有者,要么是有些權(quán)限)。

名字數(shù)據(jù)類型描述
table_catalogsql_identifier包含表的數(shù)據(jù)庫(kù)的名字(總是當(dāng)前數(shù)據(jù)庫(kù))
table_schemasql_identifier包含表的模式的名字
table_namesql_identifier表的名字
column_namesql_identifier字段的名字
ordinal_positioncardinal_number字段在表中的位置序號(hào)(從 1 開始)
column_defaultcharacter_data字段的缺省表達(dá)式
is_nullableyes_or_no如果字段可能為空,則為YES,如果知道它不能為空,則為NO。 非空約束是我們得知字段不能為空的一個(gè)手段,但是還可能有其它的。
data_typecharacter_data如果它是一個(gè)內(nèi)置類型,那么為字段的數(shù)據(jù)類型,如果它是某種數(shù)組, 則為ARRAY(在這種情況下,參閱視圖element_types), 否則就是USER-DEFINED(這時(shí),類型定義在udt_name和相關(guān)的字段上)。 如果字段基于域,這個(gè)字段引用底層域類型(而域是在domain_name和相關(guān)字段里定義的)。
character_maximum_lengthcardinal_number如果data_type標(biāo)識(shí)一個(gè)字符或者位串類型,那么就是聲明的最大長(zhǎng)度; 如果是其它類型或者沒(méi)有定義最大長(zhǎng)度,就是空。
character_octet_lengthcardinal_number如果data_type標(biāo)識(shí)一個(gè)字符類型,就是以字節(jié)記的最大可能長(zhǎng)度; 所有其它類型都是空。最大字節(jié)長(zhǎng)度取決于聲明的字節(jié)最大長(zhǎng)度(見上文)和服務(wù)器編碼。
numeric_precisioncardinal_number如果data_type標(biāo)識(shí)一個(gè)數(shù)值類型,這個(gè)字段包含 (聲明的或隱含的)這個(gè)字段的數(shù)據(jù)類型的精度。精度表示有效小數(shù)位的長(zhǎng)度。 它可以用十進(jìn)制或者二進(jìn)制來(lái)表示,這一點(diǎn)在numeric_precision_radix 字段里聲明。對(duì)于其它數(shù)據(jù)類型,這個(gè)字段是空。
numeric_precision_radixcardinal_number如果data_type標(biāo)識(shí)一個(gè)數(shù)值類型,這個(gè)字段標(biāo)識(shí)字段 numeric_precision和numeric_scale 里的數(shù)據(jù)是多少進(jìn)制的。值要么是 2 要么是 10。對(duì)于所有其它數(shù)據(jù)類型,這個(gè)字段是空。
numeric_scalecardinal_number如果data_type標(biāo)識(shí)一個(gè)精確的數(shù)值類型, 那么這個(gè)字段包含(聲明的或者隱含的)這個(gè)字段上這個(gè)類型的數(shù)值范圍。 數(shù)值范圍表明小數(shù)點(diǎn)右邊的有效小數(shù)位的數(shù)目。它可以用十進(jìn)制(10為基) 或者二進(jìn)制(二為基)來(lái)表示,正如字段numeric_precision_radix 聲明的那樣。對(duì)于所有其它數(shù)據(jù)類型,這個(gè)字段是空。
datetime_precisioncardinal_number如果data_type標(biāo)識(shí)一個(gè)日期,時(shí)間,時(shí)間戳,或者間隔類型, 該字段(公開地或隱含地)包含該字段類型的小數(shù)秒精度,就是說(shuō), 小數(shù)位數(shù)保持到小數(shù)點(diǎn)后面。對(duì)于所有其它的數(shù)據(jù)類型,該字段是null。
interval_typecharacter_data如果data_type標(biāo)識(shí)一個(gè)間隔類型,這個(gè)字段包含這個(gè)字段時(shí)間間隔聲明, 例如,YEAR TO MONTH, DAY TO SECOND等等。 如果沒(méi)有指定字段限制(也就是,間隔接受所有字段),或?qū)τ谒衅渌麛?shù)據(jù)類型,這個(gè)字段是null。
interval_precisioncardinal_number用于一個(gè)PostgreSQL不可用的特性 (參閱datetime_precision獲取間隔類型字段的小數(shù)秒精度)
character_set_catalogsql_identifier用于PostgreSQL里一個(gè)不可用的特性
character_set_schemasql_identifier用于PostgreSQL里一個(gè)不可用的特性
character_set_namesql_identifier用于PostgreSQL里一個(gè)不可用的特性
collation_catalogsql_identifier包含該字段的排序規(guī)則的數(shù)據(jù)庫(kù)的名字(總是當(dāng)前數(shù)據(jù)庫(kù)),缺省或者字段的數(shù)據(jù)類型不可排序時(shí)為null。
collation_schemasql_identifier包含該字段的排序規(guī)則的模式的名字,缺省或者字段的數(shù)據(jù)類型不可排序時(shí)為null。
collation_namesql_identifier字段的排序規(guī)則的名字,缺省或者字段的數(shù)據(jù)類型不可排序時(shí)為null。
domain_catalogsql_identifier如果字段是域類型,就是該域定義所在的數(shù)據(jù)庫(kù)的名字(總是當(dāng)前數(shù)據(jù)庫(kù)),否則為null。
domain_schemasql_identifier如果字段是域類型,就是域定義所在的模式的名字,否則為null。
domain_namesql_identifier如果字段是域類型,就是該域的名字,否則為null。
udt_catalogsql_identifier這個(gè)字段數(shù)據(jù)類型(如果適用,就是底層域類型)定義所在的數(shù)據(jù)庫(kù)的名字(總是當(dāng)前數(shù)據(jù)庫(kù))。
udt_schemasql_identifier這個(gè)字段數(shù)據(jù)類型(如果適用,就是底層域類型)定義所在的模式名字。
udt_namesql_identifier這個(gè)字段數(shù)據(jù)類型(如果適用,就是底層域類型)的名字。
scope_catalogsql_identifier用于PostgreSQL里一個(gè)不可用的特性
scope_schemasql_identifier用于PostgreSQL里一個(gè)不可用的特性
scope_namesql_identifier用于PostgreSQL里一個(gè)不可用的特性
maximum_cardinalitycardinal_number總是空,因?yàn)樵赑ostgreSQL里數(shù)組總是有無(wú)限的最大維數(shù)
dtd_identifiersql_identifier一個(gè)該字段的數(shù)據(jù)類型描述符的標(biāo)識(shí)符,在屬于這個(gè)表中的所有的數(shù)據(jù)類型描述符中唯一。 這個(gè)字段主要用于和其它這樣的標(biāo)識(shí)符實(shí)例連接。 (這個(gè)標(biāo)識(shí)符的確切格式?jīng)]有定義并且不保證在將來(lái)的版本中保持一樣。)
is_self_referencingyes_or_no用于PostgreSQL里一個(gè)不可用的特性
is_identityyes_or_no用于PostgreSQL里一個(gè)不可用的特性
identity_generationcharacter_data用于PostgreSQL里一個(gè)不可用的特性
identity_startcharacter_data用于PostgreSQL里一個(gè)不可用的特性
identity_incrementcharacter_data用于PostgreSQL里一個(gè)不可用的特性
identity_maximumcharacter_data用于PostgreSQL里一個(gè)不可用的特性
identity_minimumcharacter_data用于PostgreSQL里一個(gè)不可用的特性
identity_cycleyes_or_no用于PostgreSQL里一個(gè)不可用的特性
is_generatedcharacter_data用于PostgreSQL里一個(gè)不可用的特性
generation_expressioncharacter_data用于PostgreSQL里一個(gè)不可用的特性
is_updatableyes_or_no如果字段為可更新則為YES,否則為NO (基表中的字段總是可以更新的,而試圖中的字段則不一定)

系統(tǒng)目錄信息函數(shù)

名稱返回類型描述
format_type(type_oid, typemod)text獲得一個(gè)數(shù)據(jù)類型的 SQL 名字
pg_get_constraintdef(constraint_oid)text獲得一個(gè)約束的定義
pg_get_constraintdef(constraint_oid, pretty_bool)text獲得一個(gè)約束的定義
pg_get_expr(pg_node_tree, relation_oid)text反編譯一個(gè)表達(dá)式的內(nèi)部形式,假定其中的任何 Var 指向由第二個(gè)參數(shù)指示的關(guān)系
pg_get_expr(pg_node_tree, relation_oid, pretty_bool)text反編譯一個(gè)表達(dá)式的內(nèi)部形式,假定其中的任何 Var 指向由第二個(gè)參數(shù)指示的關(guān)系
pg_get_functiondef(func_oid)text獲得一個(gè)函數(shù)的定義
pg_get_function_arguments(func_oid)text獲得一個(gè)函數(shù)定義的參數(shù)列表(帶有默認(rèn)值)
pg_get_function_identity_arguments(func_oid)text獲得標(biāo)識(shí)一個(gè)函數(shù)的參數(shù)列表(不帶默認(rèn)值)
pg_get_function_result(func_oid)text獲得函數(shù)的RETURNS子句
pg_get_indexdef(index_oid)text獲得索引的CREATE INDEX命令
pg_get_indexdef(index_oid, column_no, pretty_bool)text獲得索引的CREATE INDEX命令,或者當(dāng)column_no為非零時(shí)只得到一個(gè)索引列的定義
pg_get_keywords()setof record獲得 SQL 關(guān)鍵字的列表及其分類
pg_get_ruledef(rule_oid)text獲得規(guī)則的CREATE RULE命令
pg_get_ruledef(rule_oid, pretty_bool)text獲得規(guī)則的CREATE RULE命令
pg_get_serial_sequence(table_name, column_name)text獲得一個(gè)serial、smallserial或bigserial列使用的序列的名稱
pg_get_triggerdef(trigger_oid)text獲得觸發(fā)器的CREATE [ CONSTRAINT ] TRIGGER命令
pg_get_triggerdef(trigger_oid, pretty_bool)text獲得觸發(fā)器的CREATE [ CONSTRAINT ] TRIGGER命令
pg_get_userbyid(role_oid)name獲得給定 OID 指定的角色名
pg_get_viewdef(view_name)text獲得視圖或物化視圖的底層SELECT命令(已廢棄
pg_get_viewdef(view_name, pretty_bool)text獲得視圖或物化視圖的底層SELECT命令(已廢棄
pg_get_viewdef(view_oid)text獲得視圖或物化視圖的底層SELECT命令
pg_get_viewdef(view_oid, pretty_bool)text獲得視圖或物化視圖的底層SELECT命令
pg_get_viewdef(view_oid, wrap_column_int)text獲得視圖或物化視圖的底層SELECT命令;帶域的行被包裝成指定的列數(shù),并隱含了優(yōu)質(zhì)打印
pg_options_to_table(reloptions)setof record獲得存儲(chǔ)選項(xiàng)的名稱/值對(duì)的集合
pg_tablespace_databases(tablespace_oid)setof oid獲得在該表空間中有對(duì)象的數(shù)據(jù)庫(kù)的 OID 的集合
pg_tablespace_location(tablespace_oid)text獲得這個(gè)表空間所在的文件系統(tǒng)的路徑
pg_typeof(any)regtype獲得任意值的數(shù)據(jù)類型
collation for (any)text獲得該參數(shù)的排序規(guī)則
to_regclass(rel_name)regclass獲得命名關(guān)系的OID
to_regproc(func_name)regproc獲得命名函數(shù)的OID
to_regprocedure(func_name)regprocedure獲得命名函數(shù)的OID
to_regoper(operator_name)regoper獲得命名操作符的OID
to_regoperator(operator_name)regoperator獲得命名操作符的OID
to_regtype(type_name)regtype獲得命名類型的OID
to_regnamespace(schema_name)regnamespace獲得命名模式的OID
to_regrole(role_name)regrole獲得命名角色的OID

查詢表的注釋

SELECT tb.table_name, d.description
FROM information_schema.tables tb
       JOIN pg_class c ON c.relname = tb.table_name
       LEFT JOIN pg_description d ON d.objoid = c.oid AND d.objsubid = '0'
WHERE tb.table_schema = 'screen';

查詢列注釋

-- 查詢列注釋
SELECT col.table_catalog,
       col.table_schema   AS tableSchema,
       col.table_name     AS tableName,
       col.column_name    AS fieldName,
       col.is_nullable    AS "isNull",
       col.data_type      AS dataType,
       col.column_default AS defaultValue,
       d.description      AS fieldDescribe
FROM information_schema.columns col
         JOIN pg_class c ON c.relname = col.table_name
         LEFT JOIN pg_description d ON d.objoid = c.oid
    AND d.objsubid = col.ordinal_position
WHERE col.table_schema = 'screen'
ORDER BY col.table_name;

 總結(jié)

到此這篇關(guān)于postgresql數(shù)據(jù)庫(kù)如何查看數(shù)據(jù)中表信息的文章就介紹到這了,更多相關(guān)postgresql查看表信息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論