计算Oracle中的表数

时间:2011-02-21 05:53:12

标签: oracle select count

就像MySQL有“SHOW TABLES”一样,你如何计算Oracle DB中的表。一点点研究给了我这个问题:

select owner, count(*) from dba_tables

所以像MySQL有一个标准命令,Oracle有一个吗?

11 个答案:

答案 0 :(得分:37)

尝试:

SELECT COUNT(*) FROM USER_TABLES;
  

我的机器上没有oracle,我运行mysql(OP评论)

在撰写本文时,this site非常适合测试各种数据库类型。

答案 1 :(得分:20)

是的,确定您的查询可以正常修改它。在这里寻找参考: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;

获取表的数量。

答案 2 :(得分:8)

  

选择count(*)FROM all_tables,其中owner ='schema_name'

答案 3 :(得分:2)

这些文档描述了数据字典视图:

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;

表空间本身不识别唯一对象所有者。多个用户可以在同一个表空间中创建对象,单个用户可以在各种表空间中创建对象。 将表和索引分成不同的表空间是一种常见的做法。

答案 4 :(得分:2)

如果您想要所有者列表以及每位所有者的表数,请尝试:

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

答案 5 :(得分:1)

请在下面找到 - 这是我用过的最简单的一个:

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

答案 6 :(得分:1)

如果您想知道属于某个模式/用户的表的数量,还可以使用类似于以下内容的SQL:

SELECT Count(*) FROM DBA_TABLES where OWNER like 'PART_OF_NAME%';

答案 7 :(得分:0)

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;

答案 8 :(得分:-1)

使用此查询可以获得与表所有者相关的实际计数

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

答案 9 :(得分:-1)

select COUNT(*) from ALL_ALL_TABLES where OWNER='<Database-name>';

.....

答案 10 :(得分:-1)

此查询将查找特定模式中的所有对象

select owner, object_type, count(*) from dba_objects where owner='owner_name' group by owner, object_type order by 3 desc;