MySQLに "SHOW TABLES"があるように、Oracle DBのテーブルをどのようにカウントしますか。少しの研究でこの質問が出されました:
select owner, count(*) from dba_tables
MySQLには標準コマンドがありますが、Oracleには標準コマンドがありますか?
確かに、クエリを少し修正するだけで機能します。参照はこちらをご覧ください: 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;
テーブルの数を取得します。
試してください:
SELECT COUNT(*) FROM USER_TABLES;
まあ私は私のマシンにOracleを持っていません、私はmysqlを実行します(OPコメント)
執筆時点では、 このサイト は、さまざまな種類のデータベースでのテストに最適でした。
Owner = 'schema_name'のall_tablesからcount(*)を選択します
これらのドキュメントでは、データディクショナリビューについて説明しています。
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;
表領域自体は、一意のオブジェクト所有者を識別しません。複数のユーザーが同じ表領域にオブジェクトを作成でき、単一のユーザーがさまざまな表領域にオブジェクトを作成できます。テーブルとインデックスを異なるテーブルスペースに分けることは一般的な方法です。
以下を見つけてください-私が使用する最も簡単なもの:
select owner, count(*) from dba_tables group by owner;
所有者のリストと所有者ごとのテーブル数のカウントが必要な場合は、次を試してください。
SELECT distinct owner, count(table_name) FROM dba_tables GROUP BY owner;
特定のスキーマ/ユーザーに属するテーブルの数を知りたい場合は、次のようなSQLを使用することもできます。
SELECT Count(*) FROM DBA_TABLES where OWNER like 'PART_OF_NAME%';
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;