columns
#视图 columns
包含数据库中所有表列(或视图列)的信息。不包括系统列(ctid
等)。只能显示当前用户有权访问的列(作为所有者或拥有某些权限)。
表 35.15 columns
列
列类型 说明 |
---|
包含表的数据库名称(始终为当前数据库) |
包含表的架构的名称 |
表名 |
列名 |
表中列的序数位置(从 1 开始计数) |
列的默认表达式 |
|
列的数据类型(如果为内置类型)或 |
如果 |
如果 |
如果 |
如果 |
如果 |
如果 |
如果 |
适用于 PostgreSQL 中不可用的特性(见 |
适用于 PostgreSQL 中不可用的特性 |
适用于 PostgreSQL 中不可用的特性 |
适用于 PostgreSQL 中不可用的特性 |
包含列校对的数据库名称(总是当前数据库),如果缺省或列的数据类型不可校对,则为 null |
包含列校对的模式名称,如果缺省或列的数据类型不可比较,则为 null |
列排序名称,如果为默认值或列数据类型不可排序,则为 null |
如果列具有域类型,则为定义域的数据库名称(始终为当前数据库),否则为 null。 |
如果列具有域类型,则为定义域的架构名称,否则为 null。 |
如果列具有域类型,则为域名称,否则为 null。 |
该列数据类型(如果适用,则为域的底层类型)在其中定义的数据库名称(始终为当前数据库) |
该列数据类型(如果适用,则为域的底层类型)在其中定义的架构名称 |
列数据类型名称(如果适用,则为域的底层类型) |
适用于 PostgreSQL 中不可用的特性 |
适用于 PostgreSQL 中不可用的特性 |
适用于 PostgreSQL 中不可用的特性 |
始终为 null,因为在 PostgreSQL 中,数组始终具有无限的最大基数 |
列数据类型描述符的标识符,在属于该表的特定数据类型描述符中唯一。这主要适用于与此类标识符的其他实例连接。(标识符的特定格式未定义,且不能保证与未来版本保持一致。) |
适用于 PostgreSQL 中不可用的特性 |
如果列为标识列,则为 |
如果列为标识列,则为 |
如果列为标识列,则为内部序列的起始值,否则为 null。 |
如果列是标识列,则增加内部序列,否则为 null。 |
如果列是标识列,则内部序列的最大值,否则为 null。 |
如果列是标识列,则内部序列的最小值,否则为 null。 |
如果列是标识列,则 |
如果列是生成列,则为 |
如果列是生成列,则为生成表达式,否则为 null。 |
如果列可更新,则为 |
由于在 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)
等代码。