支援版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4

35.17. columns #

視窗 columns 包含資料庫中所有表格欄位(或視窗欄位)的資訊。系統欄位(ctid 等)不包含在內。只會顯示目前使用者有權存取的欄位(透過身為擁有者或擁有某些權限)。

表格 35.15. columns 欄位

欄位類型

描述

table_catalog sql_identifier

包含表格的資料庫名稱(永遠是目前的資料庫)

table_schema sql_identifier

包含表格的綱要名稱

table_name sql_identifier

表格名稱

column_name sql_identifier

欄位名稱

ordinal_position cardinal_number

欄位在表格中的序數位置(從 1 開始計數)

column_default character_data

欄位的預設表達式

is_nullable yes_or_no

如果欄位可能為可為空值,則為 YES;如果已知欄位不可為空值,則為 NO。非空值約束是得知欄位不可為空值的一種方式,但可能還有其他方式。

data_type character_data

欄位的資料類型,如果它是內建類型,則為 ARRAY(如果它是某個陣列(在這種情況下,請參閱視窗 element_types)),否則為 USER-DEFINED(在這種情況下,該類型在 udt_name 和相關欄位中識別)。如果欄位基於網域,則此欄位引用網域的基礎類型(且網域在 domain_name 和相關欄位中識別)。

character_maximum_length cardinal_number

如果 data_type 識別字元或位元字串類型,則為宣告的最大長度;對於所有其他資料類型或如果未宣告最大長度,則為空值。

character_octet_length cardinal_number

如果 data_type 識別字元類型,則為資料的最大可能長度(以八位元組(位元組)為單位);對於所有其他資料類型,則為空值。最大八位元組長度取決於宣告的字元最大長度(請參閱上文)和伺服器編碼。

numeric_precision cardinal_number

如果 data_type 識別數值類型,則此欄位包含此欄位的類型(宣告或隱含)精確度。精確度表示有效位數。它可以表示為十進制(以 10 為底)或二進制(以 2 為底),如欄位 numeric_precision_radix 中所指定。對於所有其他資料類型,此欄位為空值。

numeric_precision_radix cardinal_number

如果 data_type 識別數值類型,則此欄位指示欄位 numeric_precisionnumeric_scale 中的值以哪個基底表示。該值為 2 或 10。對於所有其他資料類型,此欄位為空值。

numeric_scale cardinal_number

如果 data_type 識別精確的數值類型,則此欄位包含此欄位的類型(宣告或隱含)比例。比例表示小數點右側的有效位數。它可以表示為十進制(以 10 為底)或二進制(以 2 為底),如欄位 numeric_precision_radix 中所指定。對於所有其他資料類型,此欄位為空值。

datetime_precision cardinal_number

如果 data_type 識別日期、時間、時間戳記或間隔類型,則此欄位包含此欄位的類型(宣告或隱含)小數秒數精確度,也就是說,秒數值中小數點後保留的十進制位數。對於所有其他資料類型,此欄位為空值。

interval_type character_data

如果 data_type 識別出一個 interval 類型,則此欄位會包含規格,指示 interval 包含哪些欄位,例如 YEAR TO MONTHDAY TO SECOND 等。如果未指定任何欄位限制(也就是 interval 接受所有欄位),以及對於所有其他資料類型,此欄位為 null。

interval_precision cardinal_number

適用於 PostgreSQL 中不可用的功能(請參閱 datetime_precision 以取得 interval 類型欄位的小數秒精度)

character_set_catalog sql_identifier

適用於 PostgreSQL 中不可用的功能

character_set_schema sql_identifier

適用於 PostgreSQL 中不可用的功能

character_set_name sql_identifier

適用於 PostgreSQL 中不可用的功能

collation_catalog sql_identifier

包含欄位定序的資料庫名稱(永遠是目前的資料庫),如果是預設值或欄位的資料類型不可定序,則為 null。

collation_schema sql_identifier

包含欄位定序的綱要名稱,如果是預設值或欄位的資料類型不可定序,則為 null。

collation_name sql_identifier

欄位的定序名稱,如果是預設值或欄位的資料類型不可定序,則為 null。

domain_catalog sql_identifier

如果欄位具有網域類型,則網域定義所在的資料庫名稱(永遠是目前的資料庫),否則為 null。

domain_schema sql_identifier

如果欄位具有網域類型,則網域定義所在的綱要名稱,否則為 null。

domain_name sql_identifier

如果欄位具有網域類型,則網域名稱,否則為 null。

udt_catalog sql_identifier

欄位資料類型(如果適用,則為網域的底層類型)定義所在的資料庫名稱(永遠是目前的資料庫)

udt_schema sql_identifier

欄位資料類型(如果適用,則為網域的底層類型)定義所在的綱要名稱

udt_name sql_identifier

欄位資料類型名稱(如果適用,則為網域的底層類型)

scope_catalog sql_identifier

適用於 PostgreSQL 中不可用的功能

scope_schema sql_identifier

適用於 PostgreSQL 中不可用的功能

scope_name sql_identifier

適用於 PostgreSQL 中不可用的功能

maximum_cardinality cardinal_number

永遠為 null,因為陣列在 PostgreSQL 中始終具有無限的最大基數

dtd_identifier sql_identifier

欄位資料類型描述符的識別符,在與該表格相關的資料類型描述符中是唯一的。這主要用於與此類識別符的其他實例進行聯結。(識別符的特定格式未定義,並且不保證在將來的版本中保持不變。)

is_self_referencing yes_or_no

適用於 PostgreSQL 中不可用的功能

is_identity yes_or_no

如果欄位是識別欄位,則為 YES,否則為 NO

identity_generation character_data

如果欄位是識別欄位,則為 ALWAYSBY DEFAULT,反映欄位的定義。

identity_start character_data

如果欄位是識別欄位,則為內部序列的起始值,否則為 null。

identity_increment character_data

如果欄位是識別欄位,則為內部序列的增量,否則為 null。

identity_maximum character_data

如果欄位是識別欄位,則為內部序列的最大值,否則為 null。

identity_minimum character_data

如果欄位是識別欄位,則為內部序列的最小值,否則為 null。

identity_cycle yes_or_no

如果欄位是識別欄位,則如果內部序列循環則為 YES,如果不循環則為 NO;否則為 null。

is_generated character_data

如果欄位是產生的欄位,則為 ALWAYS,否則為 NEVER

generation_expression character_data

如果欄位是產生的欄位,則為產生運算式,否則為 null。

is_updatable yes_or_no

如果欄位可更新,則為 YES,如果不可更新,則為 NO(基底表格中的欄位始終可更新,檢視中的欄位不一定)


由於資料類型可以在 SQL 中以多種方式定義,並且 PostgreSQL 包含定義資料類型的其他方式,因此它們在資訊綱要中的表示可能有些困難。欄位 data_type 應該識別欄位的底層內建類型。在 PostgreSQL 中,這表示類型是在系統目錄綱要 pg_catalog 中定義的。如果應用程式可以特別處理眾所周知的內建類型(例如,以不同的方式格式化數值類型或使用精度欄位中的資料),則此欄位可能很有用。欄位 udt_nameudt_schemaudt_catalog 始終識別欄位的底層資料類型,即使欄位基於網域。(由於 PostgreSQL 將內建類型視為使用者定義的類型,因此內建類型也會出現在此處。這是 SQL 標準的擴充。)如果應用程式想要根據類型以不同的方式處理資料,則應使用這些欄位,因為在這種情況下,欄位是否真的基於網域並不重要。如果欄位基於網域,則網域的識別會儲存在欄位 domain_namedomain_schemadomain_catalog 中。如果您想將欄位與其相關的資料類型配對,並將網域視為單獨的類型,則可以編寫 coalesce(domain_name, udt_name) 等。

提交更正

如果您在文件中看到任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表格回報文件問題。