2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 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 標識字元或位串型別,則為宣告的最大長度;對於所有其他資料型別或未宣告最大長度的情況,則為 null。

character_octet_length cardinal_number

如果 data_type 標識字元型別,則為單個數據項的最大可能位元組數(bytes);對於所有其他資料型別,則為 null。最大位元組數取決於宣告的字元最大長度(見上)和伺服器編碼。

numeric_precision cardinal_number

如果 data_type 標識數值型別,則此列包含該列型別的(宣告的或隱式的)精度。精度表示有效數字的個數。它可以以十進位制(基數 10)或二進位制(基數 2)表示,具體取決於 numeric_precision_radix 列的指定。對於所有其他資料型別,此列為 null。

numeric_precision_radix cardinal_number

如果 data_type 標識數值型別,則此列指示 numeric_precisionnumeric_scale 列中的值是以何種基數表示的。該值為 2 或 10。對於所有其他資料型別,此列為 null。

numeric_scale cardinal_number

如果 data_type 標識精確數值型別,則此列包含該列型別的(宣告的或隱式的)標度。標度表示小數點右邊的有效數字個數。它可以以十進位制(基數 10)或二進位制(基數 2)表示,具體取決於 numeric_precision_radix 列的指定。對於所有其他資料型別,此列為 null。

datetime_precision cardinal_number

如果 data_type 標識日期、時間、時間戳或間隔型別,則此列包含該列型別的(宣告的或隱式的)小數秒精度,即秒值中小數點後保留的十進位制位數。對於所有其他資料型別,此列為 null。

interval_type character_data

如果 data_type 標識間隔型別,則此列包含間隔包含的欄位規範,例如 YEAR TO MONTHDAY TO SECOND 等。如果未指定欄位限制(即間隔接受所有欄位),以及對於所有其他資料型別,此欄位為 null。

interval_precision cardinal_number

適用於 PostgreSQL 中不可用的功能(請參閱 datetime_precision 以獲取間隔型別列的小數秒精度)

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) 等。

提交更正

如果您在文件中看到任何不正確、與您對特定功能的體驗不符或需要進一步說明的內容,請使用 此表單 報告文件問題。