Oracle Database テーブルの一覧を取得する

Oracle Database テーブルの一覧を取得する

Oracle Databaseで、テーブルの一覧を取得する手順を記述してます。「DBA_TABLES」を「SELECT」することで可能です。ここでは、実際に実行した結果を画像で掲載してます。

環境

  • OS windows11 home
  • Oracle Database 21c Express Edition

手順

テーブルの一覧を取得するには、「DBA_TABLES」を使用します。

SELECT *
FROM DBA_TABLES;

実際に、確認してみます。

SELECT *
FROM DBA_TABLES;

実行結果

テーブル一覧が取得できていることが確認できます。

ログインユーザーが持っているテーブル一覧

ログインしているユーザーが持っているテーブルを一覧で取得するには「USER_TABLES」を使用します。

SELECT *
FROM USER_TABLES;

実行結果

ログインユーザーがアクセス可能なテーブル

ログインしているユーザーがアクセスできるテーブルを一覧で取得するには「ALL_TABLES」を使用します。

SELECT *
FROM ALL_TABLES;

実行結果

テーブル名を指定して一覧を取得する

特定のテーブル名のみを確認したい場合は、「WHERE」を使用します。

SELECT *
FROM USER_TABLES
WHERE TABLE_NAME = 'TEST_TABLE';

部分一致で検索したい場合は、「LIKE」を使用します。

SELECT *
FROM USER_TABLES
WHERE TABLE_NAME LIKE 'TEST%';

「TEST」から始まるテーブルのみ取得できます。

テーブル一覧を名前順に並び替える

テーブル名を昇順で並び替えたい場合は、「ORDER BY」を使用します。

SELECT TABLE_NAME
FROM USER_TABLES
ORDER BY TABLE_NAME;

降順で表示したい場合は、「DESC」を指定します。

SELECT TABLE_NAME
FROM USER_TABLES
ORDER BY TABLE_NAME DESC;

テーブル数を確認する

現在のユーザーが保持しているテーブル数を確認するには、「COUNT」を使用します。

SELECT COUNT(*)
FROM USER_TABLES;

アクセス可能な全テーブル数を確認したい場合は、以下になります。

SELECT COUNT(*)
FROM ALL_TABLES;

特定ユーザーのテーブル一覧を取得する

Oracle Databaseでは、「OWNER」を指定することで特定ユーザーのテーブル一覧を取得できます。

SELECT TABLE_NAME
FROM DBA_TABLES
WHERE OWNER = 'SYSTEM';

実行するには、「DBA_TABLES」を参照できる権限が必要です。

システムテーブルを除外する

システム関連のテーブルを除外して確認したい場合は、「OWNER」を条件に指定します。

SELECT OWNER, TABLE_NAME
FROM DBA_TABLES
WHERE OWNER NOT IN ('SYS', 'SYSTEM');

ユーザーが作成したテーブルのみ確認したい場合に便利です。

カラム情報も確認する

テーブル一覧だけではなく、カラム情報も確認したい場合は「USER_TAB_COLUMNS」を使用します。

SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM USER_TAB_COLUMNS;

特定テーブルのみ確認する場合は、以下のように指定します。

SELECT COLUMN_NAME, DATA_TYPE
FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = 'TEST_TABLE';

SQL Developerで確認する方法

Oracle SQL Developerを使用している場合は、GUIからテーブル一覧を確認できます。

「接続」→「対象ユーザー」→「テーブル」を開くことで、現在のテーブル一覧が表示されます。

SQLを使用しなくても確認できるため、開発環境では便利です。