Oracle、MySQL查询数据库中所有表的记录数

时间:2021-04-04 13:57:09

Oracle语句:

select t.table_name,t.num_rows from user_tables t

Mysql语句:

USE information_schema;
SELECT table_name,table_rows FROM TABLES WHERE TABLE_SCHEMA = '数据库名' ORDER BY table_rows DESC;

Oracle查询:如果执行SQL,未有结果返回,先执行如下脚本,再执行原查询SQL

create or replace function count_rows(table_name in varchar2, owner in varchar2 default null) return number authid current_user IS num_rows number;
  stmt     varchar2(2000);
begin if owner is null then stmt := 'select count(*) from "' || table_name || '"';
  else
    stmt := 'select count(*) from "' || owner || '"."' || table_name || '"'; end if; execute immediate stmt into num_rows; return num_rows; end;

MySQL查询:需要使用mysql的版本在5.0及以上,主要是通过查询information_schema库中的tables表来获取,该表中使用table_rows记录表的行数信息。不过需要注意的是,对于InnoDB表,table_rows行计数仅是大概估计值。