sql 查询某个库中的每个表的记录行数

打比方{XX}数据库中,有很多张表 我想通过一个语句 可以知道每个表都有多少行记录,请问怎么写呢

select d.name as 表名,COUNT (*)as 记录 from syscolumns a inner join sysobjects d on a.id = d.id and d.xtype = 'U'
group by d.name
这是sqlserver 实现的,不知道符不符合。不过刚刚验证了一下,不是很对,估计是主键的原因,修改好了再看看
以上语句只能测试出部分,这个存储过程可以实现全部,sqlserver直接执行即可:
create table #temp(Recordcount int ,tableName varchar(30))
declare @tablename varchar(30)
declare @sql varchar(100)
declare @str varchar(30)
declare tablecursor cursor for
select name from sysobjects where xtype='u'
open tablecursor
fetch next from tablecursor into @tablename
while @@fetch_status=0
begin
set @str=@tablename
set @sql='insert into #temp(recordcount,tablename) select count(*),'+''''+@tablename+''''+' from '+@tablename
exec(@sql)
fetch next from tablecursor into @tablename
end
close tablecursor
deallocate tablecursor
select * from #temp drop table #temp追问

能不能写个语句,出来的结果就是 表名,所有行数,这样的结果啊 感谢大侠

追答

create table #temp(Recordcount int ,tableName varchar(30))
declare @tablename varchar(30)
declare @sql varchar(100)
declare @str varchar(30)
declare tablecursor cursor for
select name from sysobjects where xtype='u'
open tablecursor
fetch next from tablecursor into @tablename
while @@fetch_status=0
begin
set @str=@tablename
set @sql='insert into #temp(recordcount,tablename) select count(*),'+''''+@tablename+''''+' from '+@tablename
exec(@sql)
fetch next from tablecursor into @tablename
end
close tablecursor
deallocate tablecursor
select * from #temp drop table #temp
就这个语句,执行完就出结果了,sqlserver的,其他的数据库的没尝试

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-07-09
最简单的是这个:
select a.name as '表名',b.rows as '表数据行数'
from sysobjects a inner join sysindexes b
on a.id = b.id
where a.type = 'u'
and b.indid in (0,1)
order by b.rows desc
亲测OK。
第2个回答  2013-09-22
如果你的每个表都有聚集索引,可以通过 select * from sysindexes,查看rows列。追问

找是找到了,但不是我想要的结果,麻烦再问下,能不能写个语句,出来的结果就是 表名,所有行数,这样的结果啊 感谢大侠

第3个回答  2013-09-22
Oracle数据库是 SELECT TABLE_NAME ,NUM_ROWS FROM USER_TABLES。
但是在使用这个之前,需要进行一下数据收集。要不信息有点误差哦。是上次数据统计的结果。

如何sql语句查询出数据库每个表的几条数据
---方法1:select count(1) from [表名]---方法2:select schema_name(t.schema_id) as [Schema], t.name as [表名],i.rows as [总行数]from sys.tables as t, sysindexes as iwhere t.object_id = i.id and i.indid <=1请试一试,如有疑问,及时沟通!

oracle查看所有表及各表行数
在Oracle数据库中,获取所有表及其对应行数的操作可以通过简单的SQL查询来完成。只需要关注两个字段,table_name表示表名,num_rows则是表的行数。以下是实现这一目标的两种方法:首先,要查看数据库中所有表的表名和行数,可以使用以下查询:1、查询所有表的SQL语句:selectt.table_name,t.num_rowsfr...

如何用SQL语句查询表名和行数
select name from sysobjects where xtype='u'select * from sys.tables \/\/查询数据库中所有的表名及行数 SELECT a.name, b.rows FROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.id WHERE (a.type = 'u') AND (b.indid IN (0, 1))ORDER BY a.name,b.rows DESC ...

MS SQL 如何查看一个数据库中所有表的行数
systypes 每个数据库 用户定义数据类型 select 列名=name from syscolumns where id=object_id(N'要查的表名')

求快速统计SQL Server 某个库里所有表的方法,count() 函数很慢的。
我们都知道用聚合函数count()可以统计表的行数。如果需要统计数据库每个表各自的行数(DBA可能有这种需求),用count()函数就必须为每个表生成一个动态SQL语句并执行,才能得到结果。以前在互联网上看到有一种很好的解决方法,忘记出处了,写下来分享一下。该方法利用了sysindexes 系统表提供的rows字段。rows...

怎样用SQL语句查询一个数据库中的所有表
简单的建一张很小的表 y1,记录数为 10 条。表 t1,插入 10 条记录 mysql-(ytt\/3305)->create table t1 (r1 int,r2 int);Query OK, 0 rows affected (0.02 sec)mysql-(ytt\/3305)->insert into t1 with recursive aa(a,b) as (select 1,1 union all select a+1,ceil(rand()*20...

oracle查看所有表及各表行数
在Oracle数据库中,查看所有表及对应个表的行数,只用一个select语句查询table_name和num_rows两个字段即可。table_name是表名,num_rows代表表的行数。具体如下:1、查询数据库所有的表sql:select t.table_name,t.num_rows from all_tables t;sql执行后的输出结果如下图:2、查询当前用户表sql...

怎样查询SQL数据库中某一个表中的某个列的一个数值的所有行数据?
是在你表中的类型为数字类型的时候\\x0d\\x0aselect * from accuont where VIP='1'\\x0d\\x0a\/\/上面的1 是在你表中的类型为非数字类型的时候\\x0d\\x0a第一个:查询下拉框的选项\\x0d\\x0aselect a.Name,a.ID form TBMenu a where a.IsUsed=1\\x0d\\x0a查询Name和ID: Name为显示...

怎样查询SQL数据库中某一个表中的某个列的一个数值的所有行数据
select * from accuont where VIP = 1 \/\/上面的1 是在你表中的类型为数字类型的时候 select * from accuont where VIP='1'\/\/上面的1 是在你表中的类型为非数字类型的时候

SQL查询数据库中合格记录的总数
1。从表(*)中选择计数;2。从表(列)中选择计数;列列值的统计信息 三.根据条件选择计数(从*)表中的字段;记录的总数 4。sql_count =select count(*)从第一个1 = 1 ;此语句代表本表中的文章A,后面可以写一个字段来代表表1的字段,其中= 1,相当于提供一个位置。因为1 = 1总是...

相似回答