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

【Oracle】データベース内の全てのテーブルの一覧を確認するSQL

データベース内にあるテーブルの一覧を確認する方法です。

【スポンサーリンク】

データベース内のテーブルを確認するには

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

  • USER_TABLES
  • ALL_TABLES
  • DBA_TABLES

各テーブルのスコープは以下となります。

 テーブル名 スコープ
USER_TABLES ログインユーザーのテーブル一覧
ALL_TABLES ログインユーザーがアクセスできるすべてのテーブル一覧
DBA_TABLES データベース内のすべてのテーブル一覧

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

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

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

ALL_TABLES
【スポンサーリンク】

サンプルSQL

テーブル一覧を取得するためのサンプルSQLです。

--USER_TABLES
SELECT * FROM USER_TABLES;

--ALL_TABLES
SELECT * FROM ALL_TABLES;

--DBA_TABLES
SELECT * FROM DBA_TABLES;

基本形としては上記のサンプルで事足りると思いますが、DBA_TABLESに対して問い合わせる場合は権限の強いユーザーが必要となりますので、扱いには注意しましょう。基本的にはUSER_TABLESかALL_TABLESで事足りると思います。

で、これらのサンプルをどう利用するかはあなた次第となってしまうのですが、例えば、「特定のスキーマ(ユーザー)でテーブル名に”hoge”を含む」とかに使えます。

 --ALL_TABLES
SELECT * FROM ALL_TABLES
WHERE OWNER = '指定したスキーマ(ユーザー)'
AND TABLE_NAME LIKE '%hoge%'
 

所感ですが、使いどころが多いのはALL_TABLESかと。指定したスキーマ(ユーザー)のテーブル一覧を取得したい時などに使えます。

NUM_ROWSカラムがあるので、各テーブルのレコード数一覧を取得したい時にも使用できます。条件付けないとOracle側が用意しているテーブルも拾ってくるのでそこは注意です。

【スポンサーリンク】

関連記事

【Oracle】SELECT文の基本
OracleにおけるSELECT文の基本的な使い方です。
【Oracle】SELECT文で検索条件を指定する
OracleのSELECT文で検索条件を指定する方法です。
【スポンサーリンク】

参考サイト

ALL_TABLES

.