無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

34.16. columns

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

表 34-14. 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 MONTH DAY 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 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) などとすることができます。


powered by SEO.CUG.NET