?
Dieses Dokument verwendet PHP-Handbuch für chinesische Websites Freigeben
視圖columns包含有關(guān)數(shù)據(jù)庫中所有表字段(或者視圖字段)的信息。 不包括系統(tǒng)字段(比如oid 等)。只有那些當(dāng)前用戶有權(quán)訪問的字段才會顯示出來(要么是所有者,要么是有些權(quán)限)。
Table 34-10. columns 字段
名字 | 數(shù)據(jù)類型 | 描述 |
---|---|---|
table_catalog | sql_identifier | 包含表的數(shù)據(jù)庫的名字(總是當(dāng)前數(shù)據(jù)庫) |
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 | 如果它是一個內(nèi)置類型,那么為字段的數(shù)據(jù)類型,如果它是某種數(shù)組, 則為ARRAY(在這種情況下,參閱視圖 element_types), 否則就是USER-DEFINED(這時,類型定義在udt_name 和相關(guān)的字段上)。 如果字段基于域,這個字段引用域下層的類型(而域是在domain_name和相關(guān)字段里定義的)。 |
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標識一個字符類型,就是以字節(jié)記的最大可能長度 ;所有其它類型都是空。 |
numeric_precision | cardinal_number | 如果data_type標識一個數(shù)值類型,這個字段包含(聲明了或者蘊涵著)這個 字段的數(shù)據(jù)類型的精度。 精度表示有效小數(shù)位的長度。它可以用十進制或者二進制來表示,這一點在 numeric_precision_radix字段里聲明。對于其它數(shù)據(jù)類型,這個字段是空。 |
numeric_precision_radix | cardinal_number | 如果data_type標識一個數(shù)值類型,這個字段標識字段 numeric_precision和numeric_scale里的數(shù)據(jù)是多少進制的。 值要么是 2 要么是 10。對于所有其它數(shù)據(jù)類型,這個字段是空。 |
numeric_scale | cardinal_number | 如果data_type標識一個精確的數(shù)值類型,那么這個字段包含(聲明的或者隱含的) 這個字段上這個類型的數(shù)量級。 數(shù)量級表明小數(shù)點右邊的有效小數(shù)位的數(shù)目。它可以用十進制(10為基)或者二進制(二為基)來表示,正如 numeric_precision_radix里聲明的那樣。對于所有其它數(shù)據(jù)類型,這個字段是空。 |
datetime_precision | cardinal_number | 如果data_type標識一個日期,時間,時間戳,或者間距類型, 該字段(公開地或隱含地)包含部分的屬性類型秒精度,就是說,小數(shù)位數(shù)保持到小數(shù)點后面。 對于所有其它的數(shù)據(jù)類型,該字段是null。 |
interval_type | character_data | 還沒實現(xiàn) |
interval_precision | character_data | 還沒實現(xiàn) |
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 | 如果字段是域類型,就是該域定義所在的數(shù)據(jù)庫名字(總是當(dāng)前數(shù)據(jù)庫),否則為空。 |
domain_schema | sql_identifier | 如果字段是一個域類型,那么就是域所定義地模式的名字,否則為空。 |
domain_name | sql_identifier | 如果字段是一個域類型,則是域的名字,否則為空 |
udt_catalog | sql_identifier | 這個字段數(shù)據(jù)類型(如果適用,就是下層的域的類型)定義所在的數(shù)據(jù)庫的名字(總是當(dāng)前數(shù)據(jù)庫)。 |
udt_schema | sql_identifier | 這個字段數(shù)據(jù)類型(如果適用,就是下層的域的類型)定義所在的模式名字。 |
udt_name | sql_identifier | 這個字段數(shù)據(jù)類型(如果適用,就是下層的域的類型)的名字。 |
scope_catalog | sql_identifier | 用于PostgreSQL里一個不可用的特性 |
scope_schema | sql_identifier | 用于PostgreSQL里一個不可用的特性 |
scope_name | sql_identifier | 用于PostgreSQL里一個不可用的特性 |
maximum_cardinality | cardinal_number | 總是空,因為在PostgreSQL里數(shù)組總是有無限的最大維數(shù) |
dtd_identifier | sql_identifier | 一個該字段的數(shù)據(jù)類型描述符的標識符,在屬于這個表中的所有的數(shù)據(jù)類型中唯一。 這個字段主要用于何其它這樣的標識符實例連接。 (這個標識符的確切格式?jīng)]有定義并且不保證在將來的版本中保持一樣。) |
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 (基表中的字段總是可以更新的,而試圖中的列則不一定) |
因為數(shù)據(jù)類型在SQL里可以用多種方法定義,并且PostgreSQL 包含額外的定義數(shù)據(jù)類型的方法,因此他們在信息模式里的表現(xiàn)形式可能不太一樣。 字段data_type會被用于標識該字段下層的內(nèi)置數(shù)據(jù)類型。 在PostgreSQL里,這意味著類型將定義在系統(tǒng)的系統(tǒng)表pg_catalog里。 如果應(yīng)用可以很好地處理那些重要的內(nèi)置類型(比如,對數(shù)值類型格式化成不同的 東西,或者使用在精度字段里的數(shù)據(jù))。字段 udt_name, udt_schema, 和udt_catalog總是標識該字段的下層數(shù)據(jù)類型,即使字段是基于域的也一樣。 (因為PostgreSQL把內(nèi)置類型看作和用戶定義類型一樣,所以, 內(nèi)置類型也在這里出現(xiàn)。這是對SQL標準的一個擴展。)如果一個應(yīng)用想 根據(jù)數(shù)據(jù)類型的不同而區(qū)別處理數(shù)據(jù),那么應(yīng)該使用這些字段, 因為在這種情況下它不會在意這個字段是否真正基于域的。 如果這個字段基于一個域,那么該域的標識保存在字段 domain_name, domain_schema,和domain_catalog里。 如果你想把字段和他們相關(guān)的數(shù)據(jù)類型湊成對兒,并且把域當(dāng)作不同的類型處理, 你可以這么寫coalesce(domain_name,udt_name)等等。