COLUMNS
包含有关数据库中所有表列(或视图列)的信息。不包括系统列(oid等)。仅显示当前用户有权访问的那些列(通过成为所有者或具有某些特权)。
由于数据类型可以在 SQL 中以多种方式定义,并且Vastbase包含定义数据类型的其他方法,因此它们在信息模式中的表示可能有些困难。
列data_type应该标识列的底层内置类型。在Vastbase中,这意味着类型是在系统目录模式pg_catalog中定义的。如果应用程序可以专门处理众所周知的内置类型(例如,以不同的方式格式化数字类型或使用精度列中的数据),则此列可能很有用。
udt_name、udt_schema和 udt_catalog列始终标识列的基础数据类型,即使列基于域。(由于Vastbase 将内置类型视为用户定义类型,因此此处也出现内置类型。这是 SQL 标准的扩展。)如果应用程序希望根据类型以不同方式处理数据,则应使用这些列,因为在这种情况下,列是否真的基于域并不重要。
如果列基于域,则域的标识存储在domain_name、domain_schema和domain_catalog列中。如果需要将列与其关联的数据类型配对并将域视为单独的类型,可以编写coalesce(domain_name, udt_name)等。
名称 | 数据类型 | 描述 |
---|---|---|
table_catalog | sql_identifier | 包含表的数据库的名称(始终为当前数据库)。 |
table_schema | sql_identifier | 包含表的模式的名称。 |
table_name | sql_identifier | 表名。 |
column_name | sql_identifier | 列名。 |
ordinal_position | cardinal_number | 表中列的序号位置(计数从 1 开始)。 |
column_default | character_data | 列的默认表达式。 |
is_nullable | yes_or_no | 如果该列可能为空,则为YES ,如果已知它不可为空,则为NO 。非空约束是已知列不可为空的一种方式,但也可以有其他方式。 |
data_type | character_data | 列的数据类型,如果它是内置类型,或者 ARRAY如果它是某个数组(在这种情况下,请参阅视图element_types,否则为 USER-DEFINED(在这种情况下,类型在udt_name中标识并关联列)。如果该列基于域,则该列引用该域的基础类型(并且该域在domain_name和相关列中标识)。 |
character_maximum_length | cardinal_number | 如果data_type标识字符或位串类型,则声明最大长度;对于所有其他数据类型,或者如果没有声明最大长度,则为 null。 |
character_octet_length | cardinal_number | 如果data_type标识字符类型,则以八位字节(字节)为单位的数据的最大可能长度;所有其他数据类型为 null。最大八位字节长度取决于声明的字符最大长度(见上文)和服务器编码。 |
numeric_precision | cardinal_number | 如果data_type标识数字类型,则此列包含此列类型的(声明的或隐含的)精度。精度表示有效位数。它可以用十进制(以 10 为底)或二进制(以 2 为底)表示,如numeric_precision_radix列中指定的那样。对于所有其他数据类型,此列为空。 |
numeric_precision_radix | cardinal_number | 如果data_type标识数字类型,则此列指示numeric_precision和numeric_scale列中的值以哪个基表示。该值为 2 或 10。对于所有其他数据类型,此列为空。 |
numeric_scale | cardinal_number | 如果data_type标识了一个精确的数字类型,则此列包含此列的类型的(声明的或隐含的)比例。刻度表示小数点右侧的有效位数。它可以用十进制(以 10 为底)或二进制(以 2 为底)表示,如numeric_precision_radix列中指定的那样。对于所有其他数据类型,此列为空。 |
datetime_precision | cardinal_number | 如果data_type标识日期、时间、时间戳或间隔类型,则此列包含此列类型的(声明的或隐含的)小数秒精度,即秒值中小数点后保留的小数位数. 对于所有其他数据类型,此列为空。 |
interval_type | character_data | 如果data_type标识一个区间类型,则此列包含该列的区间包含哪些字段的规范,例如 YEAR TO MONTH、DAY TO SECOND等。如果未指定字段限制(即,区间接受所有字段),对于所有其他数据类型,此字段为空。 |
interval_precision | cardinal_number | 适用于Vastbase中不可用的功能(请参阅datetime_precision了解间隔类型列的小数秒精度)。 |
character_set_catalog | sql_identifier | 适用于Vastbase中不可用的功能。 |
character_set_schema | sql_identifier | 适用于Vastbase中不可用的功能。 |
character_set_name | sql_identifier | 适用于Vastbase中不可用的功能。 |
collation_catalog | sql_identifier | 包含列排序规则的数据库的名称(始终为当前数据库),默认为 null 或列的数据类型不可排序。 |
collation_schema | sql_identifier | 包含列排序规则的架构名称,默认为 null 或列的数据类型不可排序。 |
collation_name | sql_identifier | 列的排序规则名称,默认为 null 或列的数据类型不可排序。 |
domain_catalog | sql_identifier | 如果列具有域类型,则为定义域的数据库的名称(始终为当前数据库),否则为 null。 |
domain_schema | sql_identifier | 如果该列具有域类型,则为定义域的模式的名称,否则为 null。 |
domain_name | sql_identifier | 如果该列具有域类型,则为域的名称,否则为 null。 |
outt_catalog | sql_identifier | 定义列数据类型(域的基础类型,如果适用)的数据库的名称(始终为当前数据库)。 |
udt_schema | sql_identifier | 列数据类型(域的基础类型,如果适用)在其中定义的模式的名称。 |
udt_name | sql_identifier | 列数据类型的名称(域的基础类型,如果适用)。 |
scope_catalog | sql_identifier | 适用于Vastbase中不可用的功能。 |
scope_schema | sql_identifier | 适用于Vastbase中不可用的功能。 |
scope_name | sql_identifier | 适用于Vastbase中不可用的功能。 |
maximum_cardinality | cardinal_number | 始终为 null,因为数组在Vastbase中始终具有无限的最大基数。 |
dtd_identifier | sql_identifier | 列的数据类型描述符的标识符,在与表有关的数据类型描述符中唯一。这主要用于与此类标识符的其他实例连接。(标识符的具体格式没有定义,也不保证在以后的版本中保持不变)。 |
is_self_reference | yes_or_no | Vastbase中不可用的功能。 |
is_identity | yes_or_no | Vastbase中不可用的功能。 |
identity_generation | character_data | Vastbase中不可用的功能。 |
identity_start | character_data | Vastbase中不可用的功能。 |
identity_increment | character_data | Vastbase中不可用的功能。 |
identity_maximum | character_data | Vastbase中不可用的功能。 |
identity_minimum | character_data | Vastbase中不可用的功能。 |
identity_cycle | yes_or_no | Vastbase中不可用的功能。 |
is_generated | character_data | Vastbase中不可用的功能。 |
generation_expression | character_data | Vastbase中不可用的功能。 |
is_updateable | yes_or_no | YES如果列是可更新的,NO如果不是(基表中的列总是可更新的,视图中的列不一定)。 |