他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

34.16. columns

columnsビューには、データベース内の全てのテーブル列(もしくはビューの列)についての情報が含まれます。 システム列(oidなど)は含まれません。 現在のユーザが(所有者である、権限を持っているなどの方法で)アクセスできる列のみが示されます。

表 34-14. columnsの列

名前データ型説明
table_catalogsql_identifierそのテーブルを持つデータベースの名前です(常に現在のデータベースです)。
table_schemasql_identifierそのテーブルを持つスキーマの名前です。
table_namesql_identifierテーブルの名前です。
column_namesql_identifier列の名前です。
ordinal_positioncardinal_numberテーブル内の列の位置(1から始まる序数)です。
column_defaultcharacter_data列のデフォルト式です。
is_nullableyes_or_no列がNULLを持つことができる場合はYES、NULLを持つことができなければNOです。 非NULL制約は、列にNULLを持たせないようにする方法の1つですが、その他にも存在します。
data_typecharacter_data組み込み型の場合、列のデータ型、配列の場合、ARRAY(この場合はelement_typesビューを参照してください)、さもなくば、USER-DEFINEDです(この場合、型はudt_nameと関連する列で識別されます)。 列がドメインに基づくものであれば、その列はドメインの背後にある型を示します (そして、ドメインはdomain_nameと関連する列によって識別されます)。
character_maximum_lengthcardinal_numberdata_typeが、文字、もしくはビット文字列型を表す場合、宣言された最大の長さです。その他の型や最大長が宣言されていない場合はNULLになります。
character_octet_lengthcardinal_numberdata_typeが文字型を示す場合、オクテット(バイト)単位の最大長です 他の全てのデータ型ではNULLです。 最大オクテット長は宣言された文字最大長(上述)とサーバ符号化方式に依存します。
numeric_precisioncardinal_numberdata_typeが数値型を示す場合、ここには、その列の型の(宣言された、もしくは暗黙的な)精度が含まれます。 この精度は有意な桁数を示します。 numeric_precision_radix列の指定に従い、10進数(10を底)、もしくは2進数(2を底)で表現されます。 この列は、他の全ての型ではNULLです。
numeric_precision_radixcardinal_numberdata_typeが数値型を示す場合、この列は、numeric_precisionnumeric_scaleの表現の底とする数を示します。 2もしくは10を取ります。 この列は、他の全ての型ではNULLです。
numeric_scalecardinal_numberdata_typeが高精度数値型を示す場合、 ここには、その列の型の(宣言された、あるいは暗黙的な)位取りが含まれます。 位取りとは、小数点より右側の有意な桁数です。 numeric_precision_radix列の指定に従い、10進数(10を底)、もしくは2進数(2を底)で表現されます。 この列は、他の全ての型ではNULLです。
datetime_precisioncardinal_numberdata_typeが日付、時刻、タイムスタンプ、間隔型を示す場合、この列の型の秒以下の(宣言された、または暗黙的な)精度、つまり、秒値の小数点以降に保持する10進桁数、です。 他のすべての型の場合ではこの列はNULLです。
interval_typecharacter_dataもしdata_typeが時間間隔型を示す場合、この列はこの属性の時間間隔値がどのフィールドを含むかの仕様を含みます。例えば、YEAR TO MONTHDAY TO SECONDなどです。 もしフィールド制約が指定されていない(時間間隔が全てのフィールドを受け付ける)場合や、他の全てのデータ型の場合はこのフィールドはNULLです。
interval_precisioncardinal_numberPostgreSQLで利用できない機能に適用されるものです。(時間間隔型の属性の秒未満の精度についてはdatetime_precisionを参照してください)
character_set_catalogsql_identifierPostgreSQLで利用できない機能に適用されるものです。
character_set_schemasql_identifierPostgreSQLで利用できない機能に適用されるものです。
character_set_namesql_identifierPostgreSQLで利用できない機能に適用されるものです。
collation_catalogsql_identifier列の照合を含むデータベース(常に現在のデータベース)の名前で、デフォルトであるか属性のデータ型が照合可能でない場合はNULLです。
collation_schemasql_identifier属性の照合を含むスキーマの名前で、デフォルトであるか属性のデータ型が照合可能でない場合はNULLです。
collation_namesql_identifier列の照合の名前で、デフォルトであるか列のデータ型が照合可能でない場合はNULLです。
domain_catalogsql_identifier列がドメイン型の場合、そのドメインを定義したデータベースの名前です (常に現在のデータベースです)。 さもなくば、NULLです。
domain_schemasql_identifier列がドメイン型の場合、そのドメインを定義したスキーマの名前です。 さもなくば、NULLです。
domain_namesql_identifier列がドメイン型の場合、そのドメインの名前です。 さもなくば、NULLです。
udt_catalogsql_identifier列データ型(もし適切ならば背後にあるドメインの型)を定義したデータベースの名前です (常に現在のデータベースです)。
udt_schemasql_identifier列データ型(もし適切ならば背後にあるドメインの型)を定義したスキーマの名前です。
udt_namesql_identifier列データ型(もし適切ならば背後にあるドメインの型)の名前です。
scope_catalogsql_identifierPostgreSQLで利用できない機能に適用されるものです。
scope_schemasql_identifierPostgreSQLで利用できない機能に適用されるものです。
scope_namesql_identifierPostgreSQLで利用できない機能に適用されるものです。
maximum_cardinalitycardinal_number常にNULLです。 PostgreSQLでは配列の最大次数は常に無制限だからです。
dtd_identifiersql_identifier列のデータ型記述子の、テーブルに属するデータ型記述子内で一意な識別子です。 この識別子のインスタンスを結合する時に、主に有用です (識別子の書式仕様は定義されておらず、今後のバージョンで同一性を維持する保証もありません)。
is_self_referencingyes_or_noPostgreSQLで利用できない機能に適用されるものです。
is_identityyes_or_noPostgreSQLで利用できない機能に適用されるものです。
identity_generationcharacter_dataPostgreSQLで利用できない機能に適用されるものです。
identity_startcharacter_dataPostgreSQLで利用できない機能に適用されるものです。
identity_incrementcharacter_dataPostgreSQLで利用できない機能に適用されるものです。
identity_maximumcharacter_dataPostgreSQLで利用できない機能に適用されるものです。
identity_minimumcharacter_dataPostgreSQLで利用できない機能に適用されるものです。
identity_cycleyes_or_noPostgreSQLで利用できない機能に適用されるものです。
is_generatedcharacter_dataPostgreSQLで利用できない機能に適用されるものです。
generation_expressioncharacter_dataPostgreSQLで利用できない機能に適用されるものです。
is_updatableyes_or_no列が更新可能な場合YES、さもなくばNOです。 (ベーステーブルの列は常に更新可能です。ビューの列では不要です。)

データ型は、複数の方法でSQLにより定義でき、さらにPostgreSQLにはデータ型定義に別の方法も追加されていますので、情報スキーマにおけるデータ型表現は多少難しくなっています。 data_type列は、列の背後にある組み込み型を識別できるようになっていなければなりません。 PostgreSQLでは、型がpg_catalogシステムカタログスキーマで定義されていることを意味します。 よく知られた組み込み型を特別に扱うことができるアプリケーション(例えば、数値型を異なる書式にする、精度列内のデータを使用する)の場合、この列が有用な場合があります。 udt_nameudt_schemaudt_catalog列は、たとえドメインに基づいた列であっても、常に列の背後にあるデータ型を識別します (PostgreSQLは、組み込み型をユーザ定義型と同様に扱いますので、ここには組み込み型も現れます。これは標準SQLからの拡張です)。 アプリケーションが型に従って異なる処理を行う場合、これらの列を使用しなければなりません。 このような場合、本当はドメインに基づいている列なのかどうかが関係ないからです。 列がドメインに基づく場合、ドメインの識別子はdomain_namedomain_schemadomain_catalog列に保持されます。 関連するデータ型と列の組み合わせを作りたい場合や、ドメインを別の型として扱いたい場合は、coalesce(domain_name, udt_name)などとすることができます。