Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

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