↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 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
历史版本。 PostgreSQL 9.3 已结束支持。 2018-11-08. 请参阅 当前版本手册.

34.16. columns #

视图columns包含数据库中有关所有表列(或视图列)的信息。系统列(oid等)不被包括在内。只有那些当前用户能够访问(作为拥有者或具有某些权限)的列才被显示。

表 34.14. columns 列

名称数据类型 描述
table_catalogsql_identifier 包含表的数据库的名称(总是当前数据库)
table_schemasql_identifier 包含表的模式的名称
table_namesql_identifier 表的名称
column_namesql_identifier 列名称
ordinal_positioncardinal_number 该列在表内的顺序位置(从 1 开始计)
column_defaultcharacter_data 该列的默认表达式
is_nullableyes_or_no 如果该列可以为空,则为YES,否则为NO。一个非空约束是让一列成为不能为空的方法,但还有其他方法。
data_typecharacter_data 如果该列的数据类型是一种内置类型,则为该列的数据类型;如果是某种数组(此种情况见视图element_types),则为ARRAY;否则为USER-DEFINED(此种情况下该类型被标识在udt_name和相关列中)。如果该列基于一个域,这一列引用该域底层的类型(该列被标识在domain_name和相关列中)。
character_maximum_lengthcardinal_number 如果data_type标识一个字符或位串类型,这里是声明的最大长度;如果没有声明最大长度,则对于所有其他数据类型为空。
character_octet_lengthcardinal_number 如果data_type标识一个字符类型,这里是一个数据的最大可能长度(以字节计);对其他所有数据类型为空。最大字节长度取决于声明的字符最大长度(见上文)和服务器编码。
numeric_precisioncardinal_number 如果data_type标识一种数字类型,这列包含这个属性类型的(声明的或隐式的)精度。精度指示了有效位数。它可以按照列numeric_precision_radix中指定的被表示为十进制(基于 10)或二进制(基于 2)。对于所有其他数据类型,这一列为空。
numeric_precision_radixcardinal_number 如果data_type标识一种数字类型,这一列指示numeric_precision和numeric_scale列中的值是基于什么来表示。该值为 2 或 10。对于所有其他数据类型,这一列为空。
numeric_scalecardinal_number 如果data_type标识一种准确数字类型,这列包含这个属性类型的(声明的或隐式的)比例。标度表示小数点右侧的有效数字位数。它可以按照列numeric_precision_radix中指定的被表示为十进制(基于 10)或二进制(基于 2)。对于所有其他数据类型,这一列为空。
datetime_precisioncardinal_number 如果data_type标识一种日期、时间、时间戳或时间间隔类型,这一列包含这个属性类型的(声明的或隐式的)分数秒的精度,也就是秒值的小数点后的十进制位数。对于所有其他数据类型,这一列为空。
interval_typecharacter_data 如果data_type标识一种时间间隔类型,这一列包含时间间隔为这个属性包括哪些域的声明,例如YEAR TO MONTH、DAY TO SECOND等等。如果没有指定域限制(也就是该时间间隔接受所有域),并且对于所有其他数据类型,这个域为空。
interval_precisioncardinal_number 对应 PostgreSQL 不支持的特性(关于时间间隔类型属性的分数秒精度可见datetime_precision)
character_set_catalogsql_identifier 对应 PostgreSQL 不支持的特性
character_set_schemasql_identifier 对应 PostgreSQL 不支持的特性
character_set_namesql_identifier 对应 PostgreSQL 不支持的特性
collation_catalogsql_identifier 包含该列排序规则的数据库名称(总是当前数据库);如果使用默认排序规则,或该列的数据类型不支持排序规则,则为 null。
collation_schemasql_identifier 包含该列排序规则的模式名称;如果使用默认排序规则,或该列的数据类型不支持排序规则,则为 null。
collation_namesql_identifier 该列排序规则的名称;如果使用默认排序规则,或该列的数据类型不支持排序规则,则为 null。
domain_catalogsql_identifier 如果该列有一个域类型,这里是该域所在的数据库名(总是当前数据库),否则为空。
domain_schemasql_identifier 如果该列有一个域类型,这里是该域所在的模式名,否则为空。
domain_namesql_identifier 如果该列有一个域类型,这里是该域的名称,否则为空。
udt_catalogsql_identifier 该列数据类型(如果适用,底层的域类型)被定义的数据库名称(总是当前数据库)
udt_schemasql_identifier 该列数据类型(如果适用,底层的域类型)被定义的模式名称
udt_namesql_identifier 该列数据类型(如果适用,底层的域类型)的名称
scope_catalogsql_identifier 对应 PostgreSQL 不支持的特性
scope_schemasql_identifier 对应 PostgreSQL 不支持的特性
scope_namesql_identifier 对应 PostgreSQL 不支持的特性
maximum_cardinalitycardinal_number 总是为空,因为 PostgreSQL 中数组的最大基数始终不受限制
dtd_identifiersql_identifier 该列的数据类型描述符的一个标识符,在从属于该表的数据类型标识符之中唯一。这主要用于与这类标识符的其他实例进行连接(该标识符的指定格式没有被定义并且不保证在未来的版本中保持相同)。
is_self_referencingyes_or_no 对应 PostgreSQL 不支持的特性
is_identityyes_or_noApplies to a feature not supported by PostgreSQL
identity_generationcharacter_dataApplies to a feature not supported by PostgreSQL
identity_startcharacter_dataApplies to a feature not supported by PostgreSQL
identity_incrementcharacter_dataApplies to a feature not supported by PostgreSQL
identity_maximumcharacter_dataApplies to a feature not supported by PostgreSQL
identity_minimumcharacter_dataApplies to a feature not supported by PostgreSQL
identity_cycleyes_or_noApplies to a feature not supported by PostgreSQL
is_generatedcharacter_data 对应 PostgreSQL 不支持的特性
generation_expressioncharacter_data 对应 PostgreSQL 不支持的特性
is_updatableyes_or_no 如果该列是可更新的,则为YES,否则为NO(基表中的列总是可更新的,视图中的列则不一定)

因为在 SQL 中有多种方式定义数据类型,而PostgreSQL还包含额外的方式来定义数据类型,它们在信息模式中的表示可能有点困难。列data_type应该标识列的底层内置类型。在PostgreSQL中,这表示定义在系统目录模式pg_catalog中的类型。如果应用能够特别地(例如以不同方式格式化数字类型或使用精度列中的数据)处理众所周知的内置类型,这列可能会有用。列udt_name、udt_schema和udt_catalog总是标识列的底层数据类型,即使该列是基于一个域的(因为PostgreSQL对待内置类型和用户定义类型的方式是一样的,内置类型也出现在这里。这是 SQL 标准的一种扩展)。如果一个应用想要根据该类型以不同的方式处理数据,就应该使用这些列,因为在那种情况下即使该列真地基于一个域也没有关系。如果该列是基于一个域,该域的标识被存储在列domain_name、domain_schema和domain_catalog。如果你想要把列和它们相关的数据类型配对并且把域视作单独的类型,你可以写coalesce(domain_name, udt_name)等等。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.