[ Oracle ] テーブル定義情報の取得 ( ALL_TAB_COLUMNS )

Pocket

ここでは、Oracle のテーブルの定義情報を取得する SQL を掲載しています。なお、ここで示す SQL は Oracle9.0 以降を対象としており、それ以前の Oracle については対応していません。

※ 本 SQL は ZendFramework-1.11.3 内のコードから部分的に抜粋したものです。

スポンサーリンク


テーブル定義情報取得 SQL
SELECT
    TC.TABLE_NAME,       ---  テーブル名
    TC.OWNER,            ---  所有者
    TC.COLUMN_NAME,      ---  カラム名
    TC.DATA_TYPE,        ---  データタイプ(型 VARCHAR2 など)
    TC.DATA_DEFAULT,     ---  デフォルト値
    TC.NULLABLE,         ---  NULL を許容する場合は 'Y'
    TC.COLUMN_ID,        ---  コラムID(コラム位置 : 1 から始まる連番)
    TC.DATA_LENGTH,      ---  データ長
    TC.DATA_SCALE,       ---  NUMBER 型の場合の小数点以下の桁数
    TC.DATA_PRECISION,   ---  NUMBER 型の場合の全体の桁数(精度)
    C.CONSTRAINT_TYPE,   ---  プライマリキーの場合は 'P'、 ユニークキーの場合は 'U' など
    CC.POSITION          ---  プライマリキーの場合の位置
FROM ALL_TAB_COLUMNS TC
     LEFT JOIN (ALL_CONS_COLUMNS CC JOIN ALL_CONSTRAINTS C
                ON (CC.CONSTRAINT_NAME = C.CONSTRAINT_NAME AND CC.TABLE_NAME = C.TABLE_NAME AND CC.OWNER = C.OWNER AND C.CONSTRAINT_TYPE = 'P'))
     ON TC.TABLE_NAME = CC.TABLE_NAME AND TC.COLUMN_NAME = CC.COLUMN_NAME
WHERE
    UPPER(TC.TABLE_NAME) = UPPER(:TBNAME)        --- :TBNAME に取得するテーブル名を代入する 
ORDER BY
    TC.COLUMN_ID

ALL_TAB_COLUMNS テーブル、ALL_CONS_COLUMNS テーブル、ALL_CONSTRAINTS テーブルからはその他にも情報を取得できますので、以下の参考リンクより取得できる項目をご確認ください。

参考

 

スポンサーリンク

Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>