DB2 Version 10.1 for Linux, UNIX, and Windows

DESCRIBE コマンド

DESCRIBE コマンドは、表またはビューの列、索引、およびデータ・パーティションに関するメタデータを表示します。 このコマンドは、SELECT、CALL、または XQuery ステートメントの出力に関するメタデータも表示できます。

DESCRIBE コマンドを使用して、以下の項目のいずれかに関する情報を表示します。
  • SELECT、CALL、または XQuery ステートメントの出力
  • 表またはビューの列
  • 表またはビューの索引
  • 表またはビューのデータ・パーティション

許可

必要な許可は、DESCRIBE コマンドを使用して表示する情報のタイプによって異なります。
  • SYSTOOLSTMPSPACE 表スペースが存在する場合、以下の表に示されている権限の 1 つが必要になります。
    情報を表示するオブジェクト 必要な特権または権限
    SELECT ステートメントまたは XQuery ステートメントの出力 SELECT ステートメント内で参照されている表またはビューごとに、以下のいずれかの特権または権限:
    • SELECT 特権
    • DATAACCESS 権限
    • DBADM 権限
    • SQLADM 権限
    • EXPLAIN 権限
    CALL ステートメントの出力 以下の特権または権限のいずれか。
    • DATAACCESS 権限
    • ストアード・プロシージャーでの EXECUTE 特権
    表またはビューの列 SYSCAT.COLUMNS システム・カタログ表に対して、以下のいずれかの特権または権限:
    • SELECT 特権
    • ACCESSCTRL 権限
    • DATAACCESS 権限
    • DBADM 権限
    • SECADM 権限
    • SQLADM 権限

    SHOW DETAIL パラメーターを使用する場合、SYSCAT.DATAPARTITIONEXPRESSION システム・カタログ表に対しても、これらの特権または権限のいずれかが必要になります。

    PUBLIC には宣言済み一時表に対するすべての特権が付与されているので、 このコマンドを使用して、接続内に存在するすべての宣言済み一時表に関する情報を表示できます。

    表またはビューの索引 SYSCAT.INDEXES システム・カタログ表に対して、以下のいずれかの特権または権限:
    • SELECT 特権
    • ACCESSCTRL 権限
    • DATAACCESS 権限
    • DBADM 権限
    • SECADM 権限
    • SQLADM 権限

    SHOW DETAIL パラメーターを使用する場合、GET_INDEX_COLNAMES() UDF に対する EXECUTE 特権も必要です。

    PUBLIC には宣言済み一時表に対するすべての特権が付与されているので、 このコマンドを使用して、接続内に存在するすべての宣言済み一時表に関する情報を表示できます。

    表またはビューのデータ・パーティション SYSCAT.DATAPARTITIONS システム・カタログ表に対して、以下のいずれかの特権または権限:
    • SELECT 特権
    • ACCESSCTRL 権限
    • DATAACCESS 権限
    • DBADM 権限
    • SECADM 権限
    • SQLADM 権限

    PUBLIC には宣言済み一時表に対するすべての特権が付与されているので、 このコマンドを使用して、接続内に存在するすべての宣言済み一時表に関する情報を表示できます。

  • SYSTOOLSTMPSPACE 表スペースが存在しない場合は、上にリストされた権限のいずれかに加えて SYSADM または SYSCTRL 権限も必要になります。

必要な接続

データベース。 暗黙接続が可能な場合には、デフォルト・データベースへの接続が確立されます。

コマンド構文

構文図を読む構文図をスキップする
>>-DESCRIBE----------------------------------------------------->

     .-OUTPUT-.                                                                  
>--+-+--------+--+-select-statement---------+--------------------------------+-><
   |             +-call-statement-----------+                                |   
   |             '-XQUERY--XQuery-statement-'                                |   
   '-+-TABLE----------------------------------+--table-name--+-------------+-'   
     +-+-----------------+--INDEXES FOR TABLE-+              '-SHOW DETAIL-'     
     | +-RELATIONAL DATA-+                    |                                  
     | +-XML DATA--------+                    |                                  
     | '-TEXT SEARCH-----'                    |                                  
     '-DATA PARTITIONS FOR TABLE--------------'                                  

コマンド・パラメーター

OUTPUT
ステートメントの出力を記述するよう指示します。 このキーワードはオプションです。
select-statement | call-statement | XQUERY XQuery-statement
情報が必要なステートメントを識別します。 ステートメントは CLP によって自動的に準備されます。 XQuery ステートメントであることを示すには、ステートメントの先頭にキーワード XQUERY を入れます。 DESCRIBE OUTPUT ステートメントで暗黙的な隠し列についての情報が戻されるのは、記述対象の照会の最終的な結果表の SELECT リスト内にその列が明示的に指定されている場合のみです。
TABLE table-name
記述する表またはビューを指定します。 schema.table-name 形式の完全修飾名を使用しなければなりません。実際の表の代わりに表の別名を使用することはできません。 暗黙的に非表示になっている列に関する情報が戻されますが、どの列が暗黙的に非表示にされているかを示すには SHOW DETAIL を使用する必要があります。
DESCRIBE TABLE コマンドは、各列に関する以下の情報をリストします。
  • 列名
  • タイプ・スキーマ
  • タイプ名
  • 長さ
  • スケール
  • NULL 値 (yes/no)
INDEXES FOR TABLE table-name
索引を記述する必要がある表またはビューを指定します。 schema.table-name という形式の完全修飾名を使用するか、table-name のみを指定してデフォルトのスキーマが自動的に使用されるようにできます。実際の表の代わりに表の別名を使用することはできません。
DESCRIBE INDEXES FOR TABLE コマンドは、 その表またはビューの各索引に関する以下の情報をリストします。
  • 索引スキーマ
  • 索引名
  • ユニーク規則
  • 列の数
  • 索引タイプ
DESCRIBE INDEXES FOR TABLE コマンドが SHOW DETAIL オプションを指定して使用される場合、索引名が 18 バイトより長いと、索引名は切り捨てられます。 索引タイプ・オプションが指定されていない場合、すべての索引タイプ (リレーショナル・データ索引、XML データに対する索引、および Text Search 索引) の情報がリストされます。 出力には以下の追加情報が含まれます。
  • リレーショナル・データ索引の索引 ID、XML パス索引、XML 領域索引、または XML データに対する索引
  • XML データに対する索引のデータ・タイプ
  • XML データに対する索引のハッシュ
  • XML データに対する索引の最大 VARCHAR 長
  • XML データに対する索引に指定された XML パターン
  • テキスト検索索引のコード・ページ
  • テキスト検索索引の言語
  • テキスト検索索引に指定された形式
  • テキスト検索索引の更新最小数
  • テキスト検索索引の更新頻度
  • テキスト検索索引のコレクション・ディレクトリー
  • 列名
  • BUSINESS_TIME WITHOUT OVERLAPS 節の指定の有無

特定の索引タイプについてだけの情報をリストする索引タイプを指定します。 複数の索引タイプの指定はサポートされていません。

RELATIONAL DATA
RELATIONAL DATA 索引タイプ・オプションが SHOW DETAIL オプションなしで指定されている場合は、以下の情報だけがリストされます。
  • 索引スキーマ
  • 索引名
  • ユニーク規則
  • 列の数

SHOW DETAIL を指定した場合、列名情報もリストされます。

XML DATA
XML DATA 索引タイプ・オプションが SHOW DETAIL オプションなしで指定されている場合は、以下の情報だけがリストされます。
  • 索引スキーマ
  • 索引名
  • ユニーク規則
  • 列の数
  • 索引タイプ

SHOW DETAIL を指定した場合、以下の XML データに対する索引の情報もリストされます。

  • 索引 ID
  • データ・タイプ
  • ハッシュ
  • 最大 varchar 長
  • XML パターン
  • 列名
TEXT SEARCH
TEXT SEARCH 索引タイプ・オプションが SHOW DETAIL オプションなしで指定されている場合は、以下の情報だけがリストされます。
  • 索引スキーマ
  • 索引名

SHOW DETAIL を指定した場合、以下のテキスト検索索引情報もリストされます。

  • 列名
  • コード・ページ
  • 言語
  • フォーマット
  • 更新最小数
  • 更新頻度
  • コレクション・ディレクトリー

TEXT SEARCH オプションが指定され、テキスト検索オプションがインストールされていないか正しく構成されていない場合、エラー (SQLSTATE 42724) が戻されます。

列にリストされる情報については、DB2® Text Search の情報を参照してください。

DATA PARTITIONS FOR TABLE table-name
データ・パーティションを記述する必要がある表またはビューを指定します。 表に含まれるデータ・パーティションごとに表示される情報には、パーティション ID とパーティション・インターバルが含まれます。 結果は、パーティション ID の順になっています。 schema.table-name 形式の完全修飾名を使用しなければなりません。 実際の表の代わりに表の別名を使用することはできません。 schema はユーザー名で、その下に表またはビューが作成されます。
DESCRIBE DATA PARTITIONS FOR TABLE コマンドの場合、出力に以下の追加情報を内容とする 2 番目の表を含めることを指定します。
  • データ・パーティション順序 ID
  • SQL でのデータ・パーティション式
SHOW DETAIL
DESCRIBE TABLE コマンドの場合、
  • CHARACTER、VARCHAR または LONG VARCHAR 列のいずれかが FOR BIT DATA として定義されたかどうか
  • 列番号
  • 分散キー・シーケンス
  • コード・ページ
  • 非表示属性
  • デフォルト
  • 表パーティションのタイプ (範囲によってパーティション化されている表の場合、元の出力の後にこの出力が表示される)
  • パーティション・キー列 (範囲によってパーティション化されている表の場合、元の出力の後にこの出力が表示される)
  • 索引に使用される表スペースの ID
  • 表に定義された期間 (テンポラル表の場合、元の出力の後にこの出力が表示される)
  • 表でバージョン管理が有効かどうか (テンポラル表の場合、元の出力の後にこの出力が表示される)

SELECT ステートメントの出力の記述
次に示すのは、SELECT ステートメントを記述する方法の一例です。
   db2 describe output select * from staff
Column Information

Number of columns: 7

Data Type             Length  Column Name                     Name Length
--------------------  ------  ------------------------------  --------------
500 SMALLINT               2  ID                                           2
449 VARCHAR                9  NAME                                         4
501 SMALLINT               2  DEPT                                         4
453 CHARACTER              5  JOB                                          3
501 SMALLINT               2  YEARS                                        5
485 DECIMAL              7,2  SALARY                                       6
485 DECIMAL              7,2  COMM                                         4
CALL ステートメントの出力の記述
次のステートメントでストアード・プロシージャーが作成されたとします。
   CREATE PROCEDURE GIVE_BONUS (IN EMPNO INTEGER,
                             IN DEPTNO INTEGER,
                             OUT CHEQUE INTEGER,
                             INOUT BONUS DEC(6,0))
...
次の例は、CALL ステートメントの出力を記述する方法を示しています。
 db2 describe output call give_bonus(123456, 987, ?, 15000.)

Column Information

Number of Columns: 2

Data Type             Length  Column Name                     Name Length
--------------------  ------  ------------------------------  --------------
497   INTEGER              4  CHEQUE                                       6
485   DECIMAL           6, 0  BONUS                                        5

プロシージャーで配列タイプに 1 つ以上のパラメーターがある場合、DESCRIBE コマンドの出力には追加列が 1 つあります。これは、配列パラメーターの最大カーディナリティーを示します。 空の値は、パラメーターが配列でないことを示します。

ステートメントで作成された配列タイプおよびプロシージャーを指定すると、次のようになります。

   CREATE TYPE PRODUCT_LIST AS INTEGER ARRAY[100]
   CREATE TYPE CUSTOMER_LIST AS INTEGER ARRAY[1000]


   CREATE PROCEDURE DISCONTINUE_PROD (IN PROD_LIST PRODUCT_LIST,
                                      IN EFFECTIVE_DATE DATE,
                                      OUT NUM_PENDING_ORDERS INTEGER,
                                      OUT CUST_LIST CUSTOMER_LIST)
...

次の例は、配列パラメーターを指定した CALL ステートメントの出力を記述する方法を示しています。 前の例とのフォーマットの違いは、Max cardinality 列だけです。

 db2 describe output call discontinue_prod(ARRAY[12, 34, 26],'04/13/2006',?)

Column Information

Number of Columns: 2

SQL type              Type length  Column name                     Name length     Max cardinality     
--------------------  -----------  ------------------------------  --------------  ---------------
497 INTEGER                     4  NUM_PENDING_ORDERS                          17
497 INTEGER                    10  CUSTOMER_LIST                               13             1000
XQuery ステートメントの出力の記述
XML データ・タイプの列 INFO を含む表 CUSTOMER に対する XQuery ステートメントの記述例を以下に示します。
   db2 describe xquery for $cust in db2-fn:xmlcolumn("CUSTOMER.INFO") return $cust
Column Information

Number of Columns: 1

SQL type              Type length  Column name                     Name length
--------------------  -----------  ------------------------------  --------------
998   XML                  0       1                                            1

キーワード XQUERY が指定されていない場合、SQL0104N が戻されます。

db2 describe for $cust in db2-fn:xmlcolumn("CUSTOMER.INFO") return $cust       
SQL0104N  An unexpected token "for" was found following "DESCRIBE".  Expected 
tokens may include:  "OUTPUT".  SQLSTATE=42601

XQUERY オプションがサポートされていない旧バージョンのサーバーに対して DESCRIBE XQUERY コマンドが発行された場合、旧バージョンのサーバーによってその機能がサポートされていないことを示すメッセージ DB21108E が戻されます。

表の記述
次に示すのは、表を記述する方法の一例です。
   db2 describe table user1.department
Table: USER1.DEPARTMENT
 
Column             Data Type   Data Type          Column
name               schema      name               length   Scale    Nulls
------------------ ----------- ------------------ -------- -------- --------
AREA               SYSIBM      SMALLINT                  2        0 No
DEPT               SYSIBM      CHARACTER                 3        0 No
DEPTNAME           SYSIBM      CHARACTER                20        0 Yes
次に示すのは、詳細を含めて表索引を記述する方法の一例です。 この例の場合のように表がパーティション化されている場合、付加的な詳細が既存の出力の後に表示されます。 非パーティション表の場合、付加的な表ヘッダーは表示されません。
db2 describe table user1.employee show detail
Column             Data Type   Column    Data Type   Column   Hidden
name               schema      number    name        length 
------------------ ----------- --------- ----------- -------- ----------
FIRST              SYSIBM              0 CHARACTER         10 No
LAST               SYSIBM              1 CHARACTER         10 No
EMPLOYEENUM        SYSTEM              2 CHARACTER         10 Implicitly


Table is partitioned by range (ordered on the following column/s):
------------------------------------------------------------------
LAST
FIRST
EMPLOYEENUM
表索引の記述
次に示すのは、表索引を記述する方法の一例です。 このコマンドは、2 つのリレーショナル・データ索引、6 つの XML データ索引、2 つのテキスト検索索引、およびシステム索引をリストします。
 db2 describe indexes for table user1.department
Index           Index                Unique          Number of      Index
schema          name                 rule            columns        type
--------------  ------------------   --------------  -------------  --------------
SYSIBM          SQL070531145253450   D                          -   XML DATA - REGIONS
SYSIBM          SQL070531145253620   U                          1   XML DATA - PATH
USER1           RELIDX1              D                          1   RELATIONAL DATA
USER1           RELIDX2              D                          2   RELATIONAL DATA
SYSIBM          SQL070531145253650   P                          1   RELATIONAL DATA
USER1           XMLIDX1              D                          1   XML DATA - VALUES LOGICAL
SYSIBM          SQL070531154625650   D                          1   XML DATA - VALUES PHYSICAL
USER1           XMLIDX2              D                          1   XML DATA - VALUES LOGICAL
SYSIBM          SQL070531154626000   D                          1   XML DATA - VALUES PHYSICAL
USER1           XMLIDX3              D                          1   XML DATA - VALUES LOGICAL
SYSIBM          SQL070531154626090   D                          1   XML DATA - VALUES PHYSICAL
USER1           XMLIDX4              D                          1   XML DATA - VALUES LOGICAL
SYSIBM          SQL070531154626190   D                          1   XML DATA - VALUES PHYSICAL
USER1           XMLIDX5              D                          1   XML DATA - VALUES LOGICAL
SYSIBM          SQL070531154626290   D                          1   XML DATA - VALUES PHYSICAL
USER1           XMLIDX6              D                          1   XML DATA - VALUES LOGICAL
SYSIBM          SQL070531154626400   D                          1   XML DATA - VALUES PHYSICAL
USER1           TXTIDX1              -                          1   TEXT SEARCH
USER1           TXTIDX2              -                          1   TEXT SEARCH
以下のコマンドは、表 USER1.DEPARTMENT のリレーショナル・データ索引をリストします。
db2 describe relational data indexes for table user1.department
Index           Index                Unique          Number of
schema          name                 rule            columns
--------------  ------------------   --------------  -------------
SYSIBM          SQL070531145253650   P                           1
USER1           RELIDX1              D                           1
USER1           RELIDX2              D                           2
以下のコマンドは、表 USER1.DEPARTMENT の XML データに対する索引をリストします。
db2 describe xml data indexes for table user1.department
Index           Index                Unique          Number of      Index
schema          name                 rule            columns        type
--------------  ------------------   --------------  -------------  --------------
SYSIBM          SQL070531145253450   D                          -   XML DATA - REGIONS
SYSIBM          SQL070531145253620   U                          1   XML DATA - PATH
USER1           XMLIDX1              D                          1   XML DATA - VALUES LOGICAL
SYSIBM          SQL070531154625650   D                          1   XML DATA - VALUES PHYSICAL
USER1           XMLIDX2              D                          1   XML DATA - VALUES LOGICAL
SYSIBM          SQL070531154626000   D                          1   XML DATA - VALUES PHYSICAL
USER1           XMLIDX3              D                          1   XML DATA - VALUES LOGICAL
SYSIBM          SQL070531154626090   D                          1   XML DATA - VALUES PHYSICAL
USER1           XMLIDX4              D                          1   XML DATA - VALUES LOGICAL
SYSIBM          SQL070531154626190   D                          1   XML DATA - VALUES PHYSICAL
USER1           XMLIDX5              D                          1   XML DATA - VALUES LOGICAL
SYSIBM          SQL070531154626290   D                          1   XML DATA - VALUES PHYSICAL
USER1           XMLIDX6              D                          1   XML DATA - VALUES LOGICAL
SYSIBM          SQL070531154626400   D                          1   XML DATA - VALUES PHYSICAL
以下のコマンドは、表 USER1.DEPARTMENT のテキスト検索索引情報をリストします。
db2  describe text search indexes for table user1.department
Index           Index             
schema          name              
--------------  ------------------
USER1           TXTIDX1
USER1           TXTIDX2
以下のコマンドは、パーティション表 myDpartT のパーティションおよび非パーティション索引の両方に関する情報をリストします。
db2 describe indexes for table myDPartT 
Index                           Index               Unique         Number of      Index Partitioning
schema                          name                rule           columns
------------------------------- ------------------- --------------  --------------  -------------
NEWTON                          IDXNDP              D                           1           N
NEWTON                          IDXDP               D                           1           P
データ・パーティションの記述
次に示すのは、データ・パーティションを記述する方法の一例です。
db2 describe data partitions  for table user1.sales
 
PartitionId     Inclusive (y/n)    Inclusive (y/n)
                  Low Value          High Value
-------------  -- --------------  --  -------------
            0  Y          2001,1  Y          2001,3
            1  N          2001,3  Y          2001,6
            3  N          2001,6  Y          2001,9
詳細を含めてデータ・パーティションを記述した場合、前の例と同じ出力に加えて、パーティション ID およびデータ・パーティションのデータの入っている表スペースと、索引の入っている表スペースの ID を示す付加的な表が戻されます。
db2 describe data partitions for table user1.employee show detail
 
PartitionId     Inclusive (y/n)        Inclusive (y/n)
                  Low Value              High Value
-------------  -- ------------------  --  -------------
            0  Y  MINVALUE,MINVALUE   Y   'beck','kevin'
            1  N  'beck','kevin'      N   'treece','jeff'
            2  Y  'treece','jeff'     Y   'zhang','liping'
            3  Y  'zyzyck',MINVALUE   Y   MAXVALUE,MAXVALUE

PartitionId  PartitionName  TableSpId  LongTblSpId  IndexTblSpId AccessMode  Status
-----------  -------------  ---------  -----------  ------------ ----------  ------
          0  PARTx                  3           43           50           F 
          1  PARTNew               13           13           13           N       A
          2  PART3                 31           33           35           F 
          3  PART4                 23           34           23           N       A