©
This document uses PHP Chinese website manual Release
视图columns包含有关数据库中所有表字段(或者视图字段)的信息。 不包括系统字段(比如oid 等)。只有那些当前用户有权访问的字段才会显示出来(要么是所有者,要么是有些权限)。
Table 34-10. columns 字段
名字 | 数据类型 | 描述 |
---|---|---|
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标识一个字符或者位串类型,那么就是声明的最大长度; 如果是其它类型或者没有定义最大长度,就是空。 |
character_octet_length | cardinal_number | The maximum octet length depends on the declared character maximum length (see above) and the server encoding. 如果data_type标识一个字符类型,就是以字节记的最大可能长度 ;所有其它类型都是空。 |
numeric_precision | cardinal_number | 如果data_type标识一个数值类型,这个字段包含(声明了或者蕴涵着)这个 字段的数据类型的精度。 精度表示有效小数位的长度。它可以用十进制或者二进制来表示,这一点在 numeric_precision_radix字段里声明。对于其它数据类型,这个字段是空。 |
numeric_precision_radix | cardinal_number | 如果data_type标识一个数值类型,这个字段标识字段 numeric_precision和numeric_scale里的数据是多少进制的。 值要么是 2 要么是 10。对于所有其它数据类型,这个字段是空。 |
numeric_scale | cardinal_number | 如果data_type标识一个精确的数值类型,那么这个字段包含(声明的或者隐含的) 这个字段上这个类型的数量级。 数量级表明小数点右边的有效小数位的数目。它可以用十进制(10为基)或者二进制(二为基)来表示,正如 numeric_precision_radix里声明的那样。对于所有其它数据类型,这个字段是空。 |
datetime_precision | cardinal_number | 如果data_type标识一个日期,时间,时间戳,或者间距类型, 该字段(公开地或隐含地)包含部分的属性类型秒精度,就是说,小数位数保持到小数点后面。 对于所有其它的数据类型,该字段是null。 |
interval_type | character_data | 还没实现 |
interval_precision | character_data | 还没实现 |
character_set_catalog | sql_identifier | 用于PostgreSQL里一个不可用的特性 |
character_set_schema | sql_identifier | 用于PostgreSQL里一个不可用的特性 |
character_set_name | sql_identifier | 用于PostgreSQL里一个不可用的特性 |
collation_catalog | sql_identifier | 用于PostgreSQL里一个不可用的特性 |
collation_schema | sql_identifier | 用于PostgreSQL里一个不可用的特性 |
collation_name | sql_identifier | 用于PostgreSQL里一个不可用的特性 |
domain_catalog | sql_identifier | 如果字段是域类型,就是该域定义所在的数据库名字(总是当前数据库),否则为空。 |
domain_schema | sql_identifier | 如果字段是一个域类型,那么就是域所定义地模式的名字,否则为空。 |
domain_name | sql_identifier | 如果字段是一个域类型,则是域的名字,否则为空 |
udt_catalog | sql_identifier | 这个字段数据类型(如果适用,就是下层的域的类型)定义所在的数据库的名字(总是当前数据库)。 |
udt_schema | sql_identifier | 这个字段数据类型(如果适用,就是下层的域的类型)定义所在的模式名字。 |
udt_name | sql_identifier | 这个字段数据类型(如果适用,就是下层的域的类型)的名字。 |
scope_catalog | sql_identifier | 用于PostgreSQL里一个不可用的特性 |
scope_schema | sql_identifier | 用于PostgreSQL里一个不可用的特性 |
scope_name | sql_identifier | 用于PostgreSQL里一个不可用的特性 |
maximum_cardinality | cardinal_number | 总是空,因为在PostgreSQL里数组总是有无限的最大维数 |
dtd_identifier | sql_identifier | 一个该字段的数据类型描述符的标识符,在属于这个表中的所有的数据类型中唯一。 这个字段主要用于何其它这样的标识符实例连接。 (这个标识符的确切格式没有定义并且不保证在将来的版本中保持一样。) |
is_self_referencing | yes_or_no | 用于PostgreSQL里一个不可用的特性 |
is_identity | yes_or_no | 用于PostgreSQL里一个不可用的特性 |
identity_generation | character_data | 用于PostgreSQL里一个不可用的特性 |
identity_start | character_data | 用于PostgreSQL里一个不可用的特性 |
identity_increment | character_data | 用于PostgreSQL里一个不可用的特性 |
identity_maximum | character_data | 用于PostgreSQL里一个不可用的特性 |
identity_minimum | character_data | 用于PostgreSQL里一个不可用的特性 |
identity_cycle | yes_or_no | 用于PostgreSQL里一个不可用的特性 |
is_generated | character_data | 用于PostgreSQL里一个不可用的特性 |
generation_expression | character_data | 用于PostgreSQL里一个不可用的特性 |
is_updatable | yes_or_no | 如果字段为可更改则为YES,否则为NO (基表中的字段总是可以更新的,而试图中的列则不一定) |
因为数据类型在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)等等。