# 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名称)
等