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

Oracle语句:

  1. select t.table_name,t.num_rows from user_tables t

Mysql语句:

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

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

  1. create or replace function count_rows(table_name in varchar2,
  2.                                       owner      in varchar2 default null)
  3.   return number authid current_user IS
  4.   num_rows number;
  5.   stmt     varchar2(2000);
  6. begin
  7.   if owner is null then
  8.     stmt := 'select count(*) from "' || table_name || '"';
  9.   else
  10.     stmt := 'select count(*) from "' || owner || '"."' || table_name || '"';
  11.   end if;
  12.   execute immediate stmt
  13.     into num_rows;
  14.   return num_rows;
  15. end;

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

Visant

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: