sql 查询某个库中的每个表的记录行数
打比方{XX}数据库中,有很多张表我想通过一个语句可以知道每个表都有多少行记录,请问怎么写呢...
打比方{XX}数据库中,有很多张表 我想通过一个语句 可以知道每个表都有多少行记录,请问怎么写呢
展开
4个回答
展开全部
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
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的,其他的数据库的没尝试
展开全部
最简单的是这个:
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。
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。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你的每个表都有聚集索引,可以通过 select * from sysindexes,查看rows列。
追问
找是找到了,但不是我想要的结果,麻烦再问下,能不能写个语句,出来的结果就是 表名,所有行数,这样的结果啊 感谢大侠
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-22
展开全部
Oracle数据库是 SELECT TABLE_NAME ,NUM_ROWS FROM USER_TABLES。
但是在使用这个之前,需要进行一下数据收集。要不信息有点误差哦。是上次数据统计的结果。
但是在使用这个之前,需要进行一下数据收集。要不信息有点误差哦。是上次数据统计的结果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询