# 37.17.

风景包含有关数据库中所有表列(或视图列)的信息。系统列 (ctid等)不包括在内。仅显示当前用户有权访问的那些列(通过成为所有者或具有某些特权)。

表 37.15.

列类型

描述
表目录 sql_identifier

包含表的数据库的名称(始终为当前数据库)
表模式 sql_identifier

包含表的模式的名称
表名 sql_identifier

表名
列名 sql_identifier

列名
ordinal_position 基数

表中列的序号位置(计数从 1 开始)
column_default 字符数据

列的默认表达式
is_nullable 是还是不是

是的如果该列可能为空,如果已知它不可为空。非空约束是已知列不可为空的一种方式,但也可以有其他方式。
数据类型 字符数据

列的数据类型,如果它是内置类型,或者大批如果它是某个数组(在这种情况下,请参阅视图元素类型), 别的用户自定义(在这种情况下,类型在udt_name和相关的列)。如果该列基于域,则该列引用该域基础的类型(并且该域在域名和相关的列)。
character_maximum_length 基数

如果数据类型标识一个字符或位串类型,声明的最大长度;对于所有其他数据类型,或者如果没有声明最大长度,则为 null。
character_octet_length 基数

如果数据类型标识字符类型,即数据的最大可能长度(以字节为单位);对于所有其他数据类型为空。最大八位字节长度取决于声明的字符最大长度(见上文)和服务器编码。
数字精度 基数

如果数据类型标识数字类型,此列包含此列的类型(声明或隐式)精度。精度表示有效位数。根据列中的规定,它可以用十进制(以10为基数)或二进制(以2为基数)表示数字精度基数。对于所有其他数据类型,此列为空。
数字精度基数 基数

如果数据类型标识一个数字类型,此列指示列中的值的基数字精度数字比例尺都表达出来了。该值为2或10.对于所有其他数据类型,此列为空。
数字比例尺 基数

如果数据类型标识精确的数字类型,此列包含此列类型的(声明或隐式)刻度。刻度表示小数点右侧的有效位数。根据列中的规定,它可以用十进制(以10为基数)或二进制(以2为基数)表示数字精度基数。对于所有其他数据类型,此列为空。
日期时间精度 基数

如果数据类型标识日期、时间、时间戳或间隔类型,此列包含此列类型的(声明或隐式)小数秒精度,即秒值小数点后保留的小数位数。对于所有其他数据类型,此列为空。
区间型 字符数据

如果数据类型标识间隔类型,此列包含此列间隔包含的字段的规格,例如。,年复一年, 日复一日,等等。如果未指定字段限制(即间隔接受所有字段),并且对于所有其他数据类型,此字段为空。
区间精度 基数

适用于PostgreSQL中不可用的功能(请参阅日期时间精度用于间隔类型列的小数秒精度)
字符集目录 sql_标识符

适用于PostgreSQL中不可用的功能
字符集模式 sql_标识符

适用于PostgreSQL中不可用的功能
字符集名称 sql_标识符

适用于PostgreSQL中不可用的功能
整理目录 sql_标识符

包含列排序规则的数据库的名称(始终为当前数据库),如果为默认值,则为null,或者列的数据类型不可折叠
排序规则 sql_标识符

包含列排序规则的架构的名称,如果为默认值,则为null,或者列的数据类型不可折叠
排序规则名称 sql_标识符

列排序规则的名称,如果为默认值,则为null,或者列的数据类型不可折叠
域目录 sql_标识符

如果列具有域类型,则为定义域的数据库的名称(始终为当前数据库),否则为空。
域模式 sql_标识符

如果列具有域类型,则定义域的架构的名称,否则为空。
域名 sql_标识符

如果列具有域类型,则域的名称为空,否则为空。
udt_目录 sql_标识符

定义列数据类型(域的基础类型,如果适用)的数据库的名称(始终是当前数据库)
udt_模式 sql_标识符

定义列数据类型(域的基础类型,如果适用)的架构的名称
udt_名称 sql_标识符

列数据类型的名称(域的基础类型,如果适用)
目录范围 sql_标识符

适用于PostgreSQL中不可用的功能
范围和模式 sql_标识符

适用于PostgreSQL中不可用的功能
范围名称 sql_标识符

适用于PostgreSQL中不可用的功能
最大基数 基数

总是空的,因为数组在PostgreSQL中总是有无限的最大基数
dtd_标识符 sql_标识符

列的数据类型描述符的标识符,在与表有关的数据类型描述符中是唯一的。这主要用于与此类标识符的其他实例连接。(未定义标识符的具体格式,也不保证在未来版本中保持不变。)
是自我参照吗 是还是不是

适用于PostgreSQL中不可用的功能
你的身份是什么 是还是不是

如果列是标识列,则其他的.
身份认同与新一代 字符数据

如果列是标识列,则总是默认情况下,反映了列的定义。
身份识别与启动 字符数据

如果列是标识列,则内部序列的起始值为null。
单位增量 字符数据

如果该列是标识列,则内部序列的增量为null。
最大值 字符数据

如果列是标识列,则内部序列的最大值为null。
最小标识 字符数据

如果列是标识列,则内部序列的最小值为null。
身份周期 是还是不是

如果列是标识列,则如果内部序列循环或如果没有;否则为空。
_是生成的吗 字符数据

如果该列是生成的列,则总是其他的从不.
代际表达 字符数据

如果列是生成的列,则生成表达式为空。
_是可更新的吗 是还是不是

如果列是可更新的,如果不是(基表中的列始终是可更新的,视图中的列不一定是可更新的)

由于数据类型可以在SQL中以多种方式定义,而PostgreSQL包含定义数据类型的其他方式,因此它们在信息模式中的表示可能有些困难。专栏数据类型用于标识列的基本内置类型。在PostgreSQL中,这意味着类型是在系统目录模式中定义的pg_目录。如果应用程序可以专门处理已知的内置类型(例如,以不同的格式设置数字类型或使用精度列中的数据),则此列可能会很有用。柱子udt_名称, udt_模式udt_目录始终标识列的基础数据类型,即使该列基于域。(因为PostgreSQL像对待用户定义的类型一样对待内置类型,所以这里也会出现内置类型。这是SQL标准的扩展。)如果应用程序希望根据类型不同地处理数据,则应使用这些列,因为在这种情况下,列是否真正基于域并不重要。如果列基于域,则域的标识存储在列中域名, 域模式域目录。如果您想将列与其关联的数据类型配对,并将域视为单独的类型,您可以编写合并(域名、udt名称)