PostgreSQL columns

2021-08-21 10:01 更新

視圖columns包含數(shù)據(jù)庫中有關(guān)所有表列(或視圖列)的信息。系統(tǒng)列(ctid等)不被包括在內(nèi)。只有那些當(dāng)前用戶能夠訪問(作為擁有者或具有某些特權(quán))的列才被顯示。

表 36.15. columns

列類型

描述

table_catalog sql_identifier

包含該表的數(shù)據(jù)庫名稱(總是當(dāng)前數(shù)據(jù)庫)

table_schema sql_identifier

包含該表的模式名稱

table_name sql_identifier

表名稱

column_name sql_identifier

列名稱

ordinal_position cardinal_number

該列在表內(nèi)的順序位置(從 1 開始計)

column_default character_data

該列的默認(rèn)表達式

is_nullable yes_or_no

如果該列可以為空,則為YES,否則為NO。一個非空約束是讓一列成為不能為空的方法,但還有其他方法。

data_type character_data

如果該列的數(shù)據(jù)類型是一種內(nèi)建類型,則為該列的數(shù)據(jù)類型;如果是某種數(shù)組(此種情況見視圖element_types),則為ARRAY;否則為USER-DEFINED(此種情況下該類型被標(biāo)識在udt_name和相關(guān)列中)。 如果該列基于一個域,這一列引用該域底層的類型(該列被標(biāo)識在 domain_name和相關(guān)列中)。

character_maximum_length cardinal_number

如果data_type標(biāo)識一種字符或位串類型,這里是聲明的最大長度;如果沒有聲明最大長度或者所有其他數(shù)據(jù)類型,這里為空。

character_octet_length cardinal_number

如果data_type標(biāo)識一個字符類型,這里是一個數(shù)據(jù)的最大可能長度(以字節(jié)計);對其他所有數(shù)據(jù)類型為空。 最大字節(jié)長度取決于聲明的字符最大長度(見上文)和服務(wù)器編碼。

numeric_precision cardinal_number

如果data_type標(biāo)識一種數(shù)字類型,這列包含這個屬性類型的(聲明的或隱式的)精度。精度指示了有效位數(shù)。 它可以按照列numeric_precision_radix中指定的被表示為十進制(基于 10)或二進制(基于 2)。對于所有其他數(shù)據(jù)類型,這一列為空。

numeric_precision_radix cardinal_number

如果data_type標(biāo)識一種數(shù)字類型,這一列指示numeric_precisionnumeric_scale列中的值是基于什么來表示。 該值為 2 或 10。對于所有其他數(shù)據(jù)類型,這一列為空。

numeric_scale cardinal_number

如果data_type標(biāo)識一種準(zhǔn)確數(shù)字類型,這列包含這個屬性類型的(聲明的或隱式的)比例。 比例指示了有效位數(shù)。它可以按照列numeric_precision_radix中指定的被表示為十進制(基于 10)或二進制(基于 2)。 對于所有其他數(shù)據(jù)類型,這一列為空。

datetime_precision cardinal_number

如果data_type標(biāo)識一種日期、時間、時間戳或時間間隔類型,這一列包含這個屬性類型的(聲明的或隱式的)分?jǐn)?shù)秒的精度,也就是秒值的小數(shù)點后的十進制位數(shù)。 對于所有其他數(shù)據(jù)類型,這一列為空。

interval_type character_data

如果data_type標(biāo)識一種時間間隔類型,這一列包含時間間隔為這個屬性包括哪些域的聲明,例如YEAR TO MONTH、DAY TO SECOND等等。 如果沒有指定域限制(也就是該時間間隔接受所有域),并且對于所有其他數(shù)據(jù)類型,這個域為空。

interval_precision cardinal_number

應(yīng)用于一個PostgreSQL中不可用的特性(關(guān)于時間間隔類型屬性的分?jǐn)?shù)秒精度可見datetime_precision

character_set_catalog sql_identifier

應(yīng)用于一個PostgreSQL中不可用的特性

character_set_schema sql_identifier

應(yīng)用于一個PostgreSQL中不可用的特性

character_set_name sql_identifier

應(yīng)用于一個PostgreSQL中不可用的特性

collation_catalog sql_identifier

包含此屬性排序規(guī)則的數(shù)據(jù)庫名(總是當(dāng)前數(shù)據(jù)庫),如果默認(rèn)或者該屬性的數(shù)據(jù)類型不可排序則為空

collation_schema sql_identifier

該列的包含排序規(guī)則的模式名,如果默認(rèn)或者該列的數(shù)據(jù)類型不可排序則為空

collation_name sql_identifier

該列的排序規(guī)則的名稱,如果默認(rèn)或者該列的數(shù)據(jù)類型不可排序則為空

domain_catalog sql_identifier

如果該列有一個域類型,這里是該域所在的數(shù)據(jù)庫名(總是當(dāng)前數(shù)據(jù)庫),否則為空。

domain_schema sql_identifier

如果該列有一個域類型,這里是該域所在的模式名,否則為空。

domain_name sql_identifier

如果該列有一個域類型,這里是該域的名稱,否則為空。

udt_catalog sql_identifier

該列數(shù)據(jù)類型(如果適用,底層的域類型)被定義的數(shù)據(jù)庫名(總是當(dāng)前數(shù)據(jù)庫)

udt_schema sql_identifier

該列數(shù)據(jù)類型(如果適用,域的底層類型)被定義的模式名稱

udt_name sql_identifier

該列數(shù)據(jù)類型(如果適用,域的底層類型)的名稱

scope_catalog sql_identifier

應(yīng)用于一個PostgreSQL中不可用的特性

scope_schema sql_identifier

應(yīng)用于一個PostgreSQL中不可用的特性

scope_name sql_identifier

應(yīng)用于一個PostgreSQL中不可用的特性

maximum_cardinality cardinal_number

總是空,因為數(shù)組在PostgreSQL中總是有無限制的最大勢

dtd_identifier sql_identifier

該列的數(shù)據(jù)類型描述符的一個標(biāo)識符,在從屬于該表的數(shù)據(jù)類型標(biāo)識符之中唯一。 這主要用于與這類標(biāo)識符的其他實例進行連接(該標(biāo)識符的指定格式?jīng)]有被定義并且不保證在未來的版本中保持相同)。

is_self_referencing yes_or_no

應(yīng)用于一個PostgreSQL中不可用的特性

is_identity yes_or_no

如果該列是一個標(biāo)識列,則為YES,否則為NO。

identity_generation character_data

如果該列是一個標(biāo)識列,則為ALWAYS或者BY DEFAULT,它反映該列的定義。

identity_start character_data

如果該列是一個標(biāo)識列,則是內(nèi)部序列的起始值,否則為空。

identity_increment character_data

如果該列是一個標(biāo)識列,則是內(nèi)部序列的增量,否則為空。

identity_maximum character_data

如果該列是一個標(biāo)識列,則是內(nèi)部序列的最大值,否則為空。

identity_minimum character_data

如果該列是一個標(biāo)識列,則是內(nèi)部序列的最小值,否則為空。

identity_cycle yes_or_no

如果該列是一個標(biāo)識列,則YESNO分別表示內(nèi)部序列可循環(huán)和不可循環(huán),否則為空。

is_generated character_data

如果列是生成的列,則ALWAYS,否則 NEVER。

generation_expression character_data

如果列是生成的列,則生成表達式,否則為空。

is_updatable yes_or_no

如果該列是可更新的,則為YES,否則為NO(基表中的列總是可更新的,視圖中的列則不一定)


因為在 SQL 中有多種方式定義數(shù)據(jù)類型,而PostgreSQL還包含額外的方式來定義數(shù)據(jù)類型,它們在信息模式中的表示可能有點困難。列data_type應(yīng)該標(biāo)識列的底層內(nèi)建類型。在PostgreSQL中,這表示定義在系統(tǒng)目錄模式pg_catalog中的類型。如果應(yīng)用能夠特別地(例如以不同方式格式化數(shù)字類型或使用精度列中的數(shù)據(jù))處理總所周知的內(nèi)建類型,這列可能會有用。列 udt_name、udt_schemaudt_catalog總是標(biāo)識列的底層數(shù)據(jù)類型,即使該列是基于一個域的(因為PostgreSQL對待內(nèi)建類型和用戶定義類型的方式是一樣的,內(nèi)建類型也出現(xiàn)在這里。這是 SQL 標(biāo)準(zhǔn)的一種擴展)。如果一個應(yīng)用想要根據(jù)該類型以不同的方式處理數(shù)據(jù),就應(yīng)該使用這些列,因為在那種情況下即使該列真地基于一個域也沒有關(guān)系。如果該列是基于一個域,該域的標(biāo)識被存儲在列 domain_name、domain_schemadomain_catalog。如果你想要把列和它們相關(guān)的數(shù)據(jù)類型配對并且把域視作單獨的類型,你可以寫coalesce(domain_name, udt_name)等等。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號