PLSQL查询列出我的所有表,它们的列数和行数

时间:2014-04-13 17:08:23

标签: sql plsql

标题说明了一切。我在PLSQL中没有太多经验,需要弄清楚如何显示表列表,列数和行数。它最终会成为一种观点,但是如果你们至少可以通过单一的SELECT语句指引我朝着正确的方向发展,我会感到高兴!谢谢!

1 个答案:

答案 0 :(得分:2)

试试这个。替换"所有_"与" dba _"如果您在数据库中有足够的权限。 all_前缀将显示当前用户只能访问的对象。 dba_显示了所有内容,但您需要有权访问它们。

select x.table_name, x.num_cols, y.num_rows
  from (select table_name, count(*) as num_cols
          from all_tab_cols
         group by table_name) x
  join (select table_name, num_rows from all_tables) y
    on x.table_name = y.table_name

作为旁注,w /相对于行数,这将显示上次分析表时表上的行数。统计数据应保持最新,尤其是性能,但您应该知道计数不是“直播”。如果要更新表的统计信息,可以这样做:

analyze table table_name compute statistics;

您可以运行以下内容查看上次分析每个表的时间(我给您的查询基本上会显示截至该日期的每个表的行数。

select owner, table_name, last_analyzed from all_tables order by 3, 1, 2;
相关问题