八木日記

いろいろなこと

oracleDBのスキーマに対するselectのメモ

DBがoracleの場合のスキーマに対してのクエリ

例えば、以下のような2つのテーブルがあるとする。

商品テーブル

商品名 価格
りんご 100

商品名:VARCHAR2(10)
価格:NUMBER(3)

お店テーブル

お店名 取扱商品名
A商店 りんご

お店名:VARCHAR2(10)
取扱商品名:VARCHAR2(10)

カラム名に「商品」が含まれているカラムとそのテーブルが知りたい

以下のクエリを実行すると

select a.COLUMN_NAME, a.TABLE_NAME from USER_TAB_COLUMNS a where a.COLUMN_NAME like '%商品%'

この結果が得られる。

a.COLUMN_NAME a.TABLE_NAME
商品名 商品テーブル
取扱商品名 お店テーブル
「VARCHAR2(10)」のカラムとそのテーブルが知りたい

以下のクエリを実行すると

select a.COLUMN_NAME, a.TABLE_NAME from USER_TAB_COLUMNS a where a.DATA_TYPE = 'VARCHAR2(10)'

この結果が得られる。

a.COLUMN_NAME a.TABLE_NAME
商品名 商品テーブル
お店名 お店テーブル
取扱商品名 お店テーブル

これらのCOLUMN_NAME、TABLE_NAME、USER_TAB_COLUMNS、DATA_TYPEなどで取得できる情報を
データディクショナリーと言うらしい