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)
等。
如果您发现文档中有任何不正确、与您使用特定功能的经验不符或需要进一步澄清的地方,请使用此表格报告文档问题。