在我们的Oracle或MySQL数据库中,有时候需要查询Oracle或MySQL查询数据库中各表的行数或大小,但是由于我们数据库中的表实在是太多了,因此要一个个的“select count(*)”来比较是不太可能的,于是我们就需要有一些SQL语句能够直接从数据库中查询出每个表的大小或行数分别是多少。
由于Oracle数据库与MySQL数据库不太一样,因此我们需要多Oracle与MySQL分别来进行学习,先来看看在Oracle数据库中如何查询每张表的行数或大小吧!
(一):Oracle数据库中查询各表的行数与大小的SQL语句:
1:我们先来查看一下oracle数据库中,各个数据库表从大到小倒序排列的语句,此语句不显示行数,只显示每张表的大小,“OWNER='ZHANGSAN'”属性表示本数据库的用户名,即所有者,Sql语句如下:
select Owner,Segment_name,Bytes/1024/1024||'M' "Size" From Dba_segments Where Segment_type='TABLE' and OWNER='ZHANGSAN' and Tablespace_name like '%' Order by Bytes desc ;
查询的效果如图所示,每张表从小到大排列:
OWNER:所有者
SEGMENT_NAME:表示表名
SIZE:表示大小
2:如果在Oracle数据库中,我们想要查询出各表的行数,则需要使用以下语句查询:
select * from user_tables t where t.NUM_ROWS is not null order by t.NUM_ROWS desc
查询出来的效果如图所示:
TABLE_NAME:表示表名
NUM_ROWS:表示表行数
(二):MySQL数据库中查询每张表的行数
1:如果在mysql数据库中想要查询各表的行数,如果你是命令行中的话,直接运行下面的sql语句即可,如果你使用的是Navcat查询工具的话,需要在“information_schema”下运行以下sql语句才行:
select table_name,table_rows from tables where TABLE_SCHEMA = 'test' order by table_rows desc;
效果如图所示,语句中的TABLE_SCHEMA=‘test 表示需要查询的数据库名为test的数据库:
2:如果想要查看mysql某个数据库下所有表的数据总条数,则使用如下sql语句,但仍然需要在“information_schema”下运行sql语句:
use information_schema; //如果是在“information_schema”下,则此条语句可省略,只要下面这一个sql语句 select sum(TABLE_ROWS) from tables where TABLE_SCHEMA = 'test';
效果如图,总条数是12条: