あんにんにっき。

日々思ったことや、おこったことを記録するブログ。要するに日記。

ORACLEで、TABLEやVIEWなどの定義情報を見る方法

 うろ覚えなので、あとでまた困らないようにメモ。
 ORACLEで定義しているTABLEやVIEWやINDEXの情報を得るには、SYS.USER_TAB_COLUMNS, SYS.USER_VIEWS, SYS.USER_INDEXES, SYS.USER_IND_COLUMNSという、SYSにあるVIEWを覗くと良い。

USER_TAB_COLUMNS

 テーブルの各項目に関する情報がある。テーブルだけでなく、VIEWの項目情報も含まれている。使いそうな項目は以下の通り

TABLE_NAMEテーブルの名前
COLUMN_NAME項目名
DATA_TYPE項目の型。VARCHAR2やNUMBERなど
DATA_LENGTH項目長。文字項目の場合想定した値がそのまま入っている。NUMBER型の22固定。
DATA_PRECISION数値の精度(NUMBER(8,3)とかの8の部分)
DATA_SCALE数値の小数部(NUMBER(8,3)とかの3の部分)
NULLABLENULL値を許可するかどうか。NULLを許容する場合、Y
COLUMN_IDテーブル内での項目の位置

USER_VIEWS

 VIEWの情報がある。使いそうな項目は以下のとおり

VIEW_NAMEVIEWの名前
TEXTVIEWの定義に使用したSQL

USER_INDEXES

 インデックスの情報。どのテーブルにどのINDEXがあるか。

INDEX_NAMEINDEXの名称
TABLE_NAMEそのインデックスが定義されているテーブル名
UNIQUENESS一意制約の有無

USER_IND_COLUMNS

 インデックス内の、個別の項目の情報。

INDEX_NAMEINDEXの名称
TABLE_NAMEそのインデックスが定義されているテーブル名
COLUMN_NAMEそのINDEXに含まれる項目の項目名
COLUMN_POSITIONそのINDEXのINDEX内での位置