web-dev-qa-db-ja.com

Oracleのテーブルの数を数える

MySQLに "SHOW TABLES"があるように、Oracle DBのテーブルをどのようにカウントしますか。少しの研究でこの質問が出されました:

select owner, count(*) from dba_tables

MySQLには標準コマンドがありますが、Oracleには標準コマンドがありますか?

20
SuperMan

確かに、クエリを少し修正するだけで機能します。参照はこちらをご覧ください: http://download.Oracle.com/docs/cd/B19306_01/server.102/b14237/statviews_2105.htm#i1592091

これを実行します:

SELECT TABLE_NAME FROM DBA_TABLES;

テーブルのリストを取得します。

これを実行します:

SELECT Count(*) FROM DBA_TABLES;

テーブルの数を取得します。

20
Shekhar_Pro

試してください:

SELECT COUNT(*) FROM USER_TABLES;

まあ私は私のマシンにOracleを持っていません、私はmysqlを実行します(OPコメント)

執筆時点では、 このサイト は、さまざまな種類のデータベースでのテストに最適でした。

37
akf

Owner = 'schema_name'のall_tablesからcount(*)を選択します

8
Rakesh Anand

これらのドキュメントでは、データディクショナリビューについて説明しています。

all_tables: http://docs.Oracle.com/cd/B19306_01/server.102/b14237/statviews_4473.htm#REFRN26286

user_tables: http://docs.Oracle.com/cd/B19306_01/server.102/b14237/statviews_2105.htm#i1592091

dba_tables: http://docs.Oracle.com/cd/B19306_01/server.102/b14237/statviews_4155.htm#i1627762

これらのビューでクエリを実行して、必要なものをカウントできます。

@Anurag Thakreの答えにさらに追加するには:

このクエリを使用すると、所有者に関する実際のカウント数がわかります

SELECT COUNT(*),tablespace_name  FROM USER_TABLES group by tablespace_name;

またはテーブルの所有者によって:

SELECT COUNT(*), owner  FROM ALL_TABLES group by owner;

表領域自体は、一意のオブジェクト所有者を識別しません。複数のユーザーが同じ表領域にオブジェクトを作成でき、単一のユーザーがさまざまな表領域にオブジェクトを作成できます。テーブルとインデックスを異なるテーブルスペースに分けることは一般的な方法です。

3
Iľja

以下を見つけてください-私が使用する最も簡単なもの:

select owner, count(*) from dba_tables group by owner;
2
Ajay

所有者のリストと所有者ごとのテーブル数のカウントが必要な場合は、次を試してください。

    SELECT distinct owner, count(table_name) FROM dba_tables GROUP BY owner;
2
David W

特定のスキーマ/ユーザーに属するテーブルの数を知りたい場合は、次のようなSQLを使用することもできます。

SELECT Count(*) FROM DBA_TABLES where OWNER like 'PART_OF_NAME%';
1
jovan
REM setting current_schema is required as the 2nd query depends on the current user referred in the session

ALTER SESSION SET CURRENT_SCHEMA=TABLE_OWNER;

SELECT table_name,
         TO_NUMBER (
            EXTRACTVALUE (
               xmltype (
                  DBMS_XMLGEN.getxml ('select count(*) c from ' || table_name)),
               '/ROWSET/ROW/C'))
            COUNT
    FROM dba_tables
   WHERE owner = 'TABLE_OWNER'
ORDER BY COUNT DESC;
0
Girish