35.17. columns #
视图 columns 包含数据库中有关所有表列(或视图列)的信息。系统列(ctid 等)不被包括在内。只有那些当前用户能够访问(作为拥有者或具有某些权限)的列才被显示。
表 35.15. columns 列
列类型 描述 |
|---|
包含表的数据库的名称(总是当前数据库) |
包含表的模式的名称 |
表的名称 |
列名称 |
该列在表内的顺序位置(从 1 开始计) |
该列的默认表达式 |
如果该列可能为 null,则为 |
如果该列的数据类型是内置类型,则为该列的数据类型;如果是数组,则为 |
如果 |
如果 |
如果 |
如果 |
如果 |
如果 |
如果 |
对应 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) 等等。
报告文档问题
阅读 上游文档. 通过 PostgreSQL 文档反馈表单.