データベース内にあるカラムの一覧を確認する方法です。
データベース内のカラムを確認するには
データベース内のカラムを確認する方法はいくつかあります。FROM句に次のいずれかを指定すれば、カラムの一覧を確認することが可能です。
- 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 | データベース内のすべてのカラム一覧 |
「USER_TAB_COLUMNS」と「ALL_TAB_COLUMNS」についてはそのまま使用することが可能ですが、「DBA_TAB_COLUMNS」についてはDBAロール*1もしくは、SYSDBA権限を有するユーザーでSQLを実行する必要があります。
仮にDBAロール、SYSDBA権限を持っていないユーザーが「DBA_TABLES」に問い合わせても「ORA-00942: 表またはビューが存在しません。」とエラーが返ってきます。
各テーブルのカラムについてはOracleのリファレンスを参照頂きたく。読めば大体わかると思います。
サンプル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に条件を付与しないと、データベースの設定によってはタイムアウトしたり、長時間応答が無かったりするのでご注意を。
関連記事
こちらはテーブル一覧を取得する方法です。
参考サイト
.