columns #
视图
columns 包含数据库中全部表列
(或视图列)的信息。
系统列
(
ctid 等)不包含在内。
只显示当前用户有权访问
(通过作为属主或拥有某些特权)的列。
Table 35.15. \1 字段列说明
Column Type Description |
|---|
包含该表的数据库的名称(总是当前数据库) |
包含该表的模式的名字 |
该表的名称 |
该列的名称 |
该列在表中的序号位置(从 1 开始计数) |
该列的默认表达式 |
如果该列可能为空则为
|
该列的数据类型(如果是内建类型);如果它是某种数组则为
|
如果
|
如果
|
如果
|
如果
|
如果
|
如果
|
如果
|
适用于
PostgreSQL 中不可用的特性
(间隔类型列的小数秒精度见
|
适用于 PostgreSQL 中不可用的特性 |
适用于 PostgreSQL 中不可用的特性 |
适用于 PostgreSQL 中不可用的特性 |
包含该列排序规则的数据库的名称 (总是当前数据库);如果为默认或该列的数据类型不可 排序则为空 |
包含该列排序规则的模式的名字, 如果为默认或该列的数据类型不可排序则为 空 |
该列的排序规则的名称,如果为默认或该列的数据类型不可 排序则为空 |
如果该列具有域类型, 是定义该域的数据库的名称 (总是当前数据库);否则为空。 |
如果该列具有域类型, 是定义该域的模式的名字;否则为空。 |
如果该列具有域类型,则为该域的名字,否则为空。 |
定义列数据类型 (如适用,为域的底层类型)的数据库的名称 (总是当前数据库) |
定义列数据类型 (如适用,为域的底层类型)的模式的名字 |
该列的数据类型(如适用,为域的底层类型)的名字 |
适用于 PostgreSQL 中不可用的特性 |
适用于 PostgreSQL 中不可用的特性 |
适用于 PostgreSQL 中不可用的特性 |
总是为空,因为在 PostgreSQL 中数组的最大基数总是不受限制 |
该列的数据类型描述符的标识符,在与该表相关的数据类型 描述符之中唯一。 这主要用于与其他此类标识符的实例进行连接。 (标识符的具体格式未定义,也不保证在未来的版本中保持 不变。) |
适用于 PostgreSQL 中不可用的特性 |
如果该列是一个标识列则为 |
如果该列是一个标识列,
则为
|
如果该列是一个标识列, 是内部序列的开始值;否则为空。 |
如果该列是一个标识列, 是内部序列的增量;否则为空。 |
如果该列是一个标识列, 是内部序列的最大值;否则为空。 |
如果该列是一个标识列, 是内部序列的最小值;否则为空。 |
如果该列是一个标识列,
则内部序列循环时为
|
如果该列是一个生成列则为 |
如果该列是一个生成列,则为生成表达式,否则为空。 |
如果该列可更新则为
|
由于在 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) 等。