Web
Analytics

社畜ゲートウェイ

京成・京急を中心に取り上げる阪急ファンのブログです。日本一遅い速報を届けます。

MENU

【スポンサーリンク】

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

【スポンサーリンク】

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

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

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

  • USER_TAB_COLUMNS
  • ALL_TAB_COLUMNS
  • DBA_TAB_COLUMNS

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

www.stellacreate.com

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のリファレンスを参照頂きたく。読めば大体わかると思います。

docs.oracle.com

 

サンプル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に条件を付与しないと、データベースの設定によってはタイムアウトしたり、長時間応答が無かったりするのでご注意を。

 

編集後記

データベースの調査などでテーブル一覧を取得すると同じくらい使用すると思います。基本的な方法なので、コピペしてアレンジして使ってみて下さい。

 

関連記事

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

www.stellacreate.com

www.stellacreate.com

www.stellacreate.com

参考サイト

docs.oracle.com

*1:Database Administrator(データベース管理者)