★PostgreSQLカンファレンス2021 11月12日開催/チケット販売中★
他のバージョンの文書 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

36.17. columns

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

表36.15 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

列がNULLを持つことができる場合はYES、NULLを持つことができなければNOです。 非NULL制約は、列にNULLを持たせないようにする方法の1つですが、その他にも存在します。

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が数値型を示す場合、ここには、その列の型の(宣言された、もしくは暗黙的な)精度が含まれます。 この精度は有意な桁数を示します。 numeric_precision_radix列の指定に従い、10進数(10を底)、もしくは2進数(2を底)で表現されます。 この列は、他の全ての型ではNULLです。

numeric_precision_radix cardinal_number

data_typeが数値型を識別する場合、この列は、numeric_precisionおよびnumeric_scaleで表現される値の基が何かを識別します。 この値は2または10です。 他のデータ型ではこの列はNULLです。

numeric_scale cardinal_number

data_typeが高精度数値型を示す場合、 ここには、その列の型の(宣言された、あるいは暗黙的な)位取りが含まれます。 位取りとは、小数点より右側の有意な桁数です。 numeric_precision_radix列の指定に従い、10進数(10を底)、もしくは2進数(2を底)で表現されます。 この列は、他の全ての型ではNULLです。

datetime_precision cardinal_number

data_typeが日付、時刻、タイムスタンプ、間隔型を示す場合、この列の型の秒以下の(宣言された、または暗黙的な)精度、つまり、秒値の小数点以降に保持する10進桁数、です。 他のすべての型の場合ではこの列はNULLです。

interval_type character_data

もしdata_typeが時間間隔型を示す場合、この列はこの属性の時間間隔値がどのフィールドを含むかの仕様を含みます。例えば、YEAR TO MONTHDAY TO SECONDなどです。 もしフィールド制約が指定されていない(時間間隔が全てのフィールドを受け付ける)場合や、他の全てのデータ型の場合はこのフィールドはNULLです。

interval_precision cardinal_number

PostgreSQLで利用できない機能に適用されるものです。(時間間隔型の属性の秒未満の精度についてはdatetime_precisionを参照してください)

character_set_catalog sql_identifier

PostgreSQLでは利用できない機能に適用されるものです。

character_set_schema sql_identifier

PostgreSQLでは利用できない機能に適用されるものです。

character_set_name sql_identifier

PostgreSQLでは利用できない機能に適用されるものです。

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です。

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

常にNULLです。PostgreSQLでは配列の次数は無制限だからです。

dtd_identifier sql_identifier

列のデータ型記述子の、テーブルに属するデータ型記述子内で一意な識別子です。 この識別子のインスタンスを結合する時に、主に有用です。 (識別子の書式仕様は定義されておらず、今後のバージョンで同一性を維持する保証もありません。)

is_self_referencing yes_or_no

PostgreSQLでは利用できない機能に適用されるものです。

is_identity yes_or_no

列が識別列であればYES、そうでなければNOです。

identity_generation character_data

列が識別列であれば、列の定義を反映してALWAYSまたはBY DEFAULTです。

identity_start character_data

列が識別列であれば内部シーケンスの開始値、そうでなければNULLです。

identity_increment character_data

列が識別列であれば内部シーケンスの増分、そうでなければNULLです。

identity_maximum character_data

列が識別列であれば内部シーケンスの最大値、そうでなければNULLです。

identity_minimum character_data

列が識別列であれば内部シーケンスの最小値、そうでなければNULLです。

identity_cycle yes_or_no

列が識別列であれば、内部シーケンスが周回する場合にYES、周回しない場合にNO、識別列でなければNULLです。

is_generated character_data

列が生成された列であればALWAYS、そうでなければNEVERです。

generation_expression character_data

列が生成された列であれば生成式、そうでなければNULLです。

is_updatable yes_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)などとすることができます。