記事内に広告が含まれています。

【Oracle】データベース内の全てのカラム一覧を取得するSQL

データベース内にあるカラムの一覧を確認する方法です。

【スポンサーリンク】

データベース内のカラムを確認するには

データベース内のカラムを確認する方法はいくつかあります。FROM句に次のいずれかを指定すれば、カラムの一覧を確認することが可能です。

  • USER_TAB_COLUMNS
  • ALL_TAB_COLUMNS
  • DBA_TAB_COLUMNS

テーブル一覧を取得する場合と似ています。

【Oracle】データベース内の全てのテーブルの一覧を確認するSQL
データベース内にあるテーブルの一覧を確認する方法です。

USER_TAB_COLUMNS、ALL_TAB_COLUMNS、DBA_TAB_COLUMNSのスコープは以下となっています。

 テーブル名 スコープ
USER_TAB_COLUMNS ログインユーザーのカラム一覧
ALL_TAB_COLUMNS ログインユーザーがアクセスできるすべてのカラム一覧
DBA_TAB_COLUMNS データベース内のすべてのカラム一覧

「USER_TAB_COLUMNS」と「ALL_TAB_COLUMNS」についてはそのまま使用することが可能ですが、「DBA_TAB_COLUMNS」についてはDBAロール*1もしくは、SYSDBA権限を有するユーザーでSQLを実行する必要があります。

仮にDBAロール、SYSDBA権限を持っていないユーザーが「DBA_TABLES」に問い合わせても「ORA-00942: 表またはビューが存在しません。」とエラーが返ってきます。

各テーブルのカラムについてはOracleのリファレンスを参照頂きたく。読めば大体わかると思います。

ALL_TAB_COLUMNS
【スポンサーリンク】

サンプルSQL

カラム一覧を取得するためのサンプルSQLです。

--USER_TAB_COLUMNS
SELECT * FROM USER_TAB_COLUMNS;

--ALL_TAB_COLUMNS
SELECT * FROM ALL_TAB_COLUMNS;

--DBA_TAB_COLUMNS
SELECT * FROM DBA_TAB_COLUMNS;

これもテーブル一覧取得の方法と似ていますね。DBA_TAB_COLUMNSに対しての問い合わせはログインユーザーの権限に注意して下さい。基本的にはUSER_TAB_COLUMNSかALL_TAB_COLUMNSを使用すれば事足りると思います。

で、何を取得したいかとなるとちょっと迷うかもしれません。必要なカラムの情報は各々で指定頂ければいいのですが、基本的な情報が欲しい場合は、次のSQLを実行すれば良いかなと。

--ALL_TAB_COLUMNS
SELECT
  OWNER        --所有者(スキーマ)
 ,TABLE_NAME   --テーブル名、ビュー名
 ,COLUMN_NAME  --カラム名
 ,DATA_TYPE    --データ型
 ,DATA_LENGTH  --カラムの長さ
 ,NULLABLE     --NULL許容
FROM ALL_TAB_COLUMNS
--WHERE 任意の条件
;

テーブル定義の基本的な情報ですね。上記のサンプルは各々で条件を付与して頂くために敢えてWHERE句をコメントアウトしていますが、使用する時はWHEREに条件を付与しないと、データベースの設定によってはタイムアウトしたり、長時間応答が無かったりするのでご注意を。

【スポンサーリンク】

関連記事

こちらはテーブル一覧を取得する方法です。

【Oracle】データベース内の全てのテーブルの一覧を確認するSQL
データベース内にあるテーブルの一覧を確認する方法です。
【Oracle】SELECT文の基本
OracleにおけるSELECT文の基本的な使い方です。
【Oracle】SELECT文で検索条件を指定する
OracleのSELECT文で検索条件を指定する方法です。
【スポンサーリンク】

参考サイト

ALL_TAB_COLUMNS

.