您的位置:首页 > 数据库

sqlserver查询数据的所有表名和行数

2014-09-24 08:47 357 查看
原文:sqlserver查询数据的所有表名和行数

//查询所有表明
select name from sysobjects where xtype='u'

select * from sys.tables

//查询数据库中所有的表名及行数


SELECT  a.name AS [TABLE NAME] ,
b.rows AS [RECORD COUNT]
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


//查询所有的标明及空间占用量\行数

select

object_name(id) tablename,

8*reserved/1024 reserved,

rtrim(8*dpages)+'kb' used,

8*(reserved-dpages)/1024 unused,

8*dpages/1024-rows/1024*minlen/1024 free,

rows

--,*

from sysindexes

where indid=1

order by tablename,reserved desc


SELECT  T.TABLE_NAME AS [TABLE NAME] ,
MAX(I.ROWS) AS [RECORD COUNT]
FROM    SYSINDEXES I ,
INFORMATION_SCHEMA.TABLES T
WHERE   T.TABLE_NAME = OBJECT_NAME(I.ID)
AND T.TABLE_TYPE = 'BASE TABLE'
GROUP BY T.TABLE_SCHEMA ,
T.TABLE_NAME;
---------------------------------------------------------------

SELECT  OBJECT_NAME(id) AS [TABLE NAME] ,
rowcnt AS [RECORD COUNT]
FROM    sysindexes
WHERE   indid < 2
AND OBJECTPROPERTY(id, 'ismsshipped') = 0
ORDER BY OBJECT_NAME(id)


--创建临时表
CREATE   TABLE ##RowCount
(
[TABLE NAME] VARCHAR(500) ,
[RECORD COUNT] INT
)
--执行存储过程
EXEC sp_msforeachtable 'insert   into   ##RowCount   ([TABLE NAME],[RECORD COUNT])   select   ''?''   tableName,   count(*)   dataCount from   ?'

--查询结果
SELECT  *
FROM    ##RowCount
ORDER BY [TABLE NAME]

DROP TABLE ##RowCount


--统计一个数据库中所有表记录的数量
-- 最近公司的数据库发现有表的数据被弄掉了,有些数据表记录为0,于是想找出此数据库中到底有哪些数据表的记录都为0以缩小分析范围,可使用如下的SQL Statement:

CREATE   TABLE #tmptb
(
tbname sysname ,
tbrows INT ,
tbREserved VARCHAR(10) ,
tbData VARCHAR(10) ,
tbIndexSize VARCHAR(10) ,
tbUnUsed VARCHAR(10)
)

INSERT  INTO #tmptb
EXEC sp_MSForEachTable 'EXEC   sp_spaceused   ''?'''

SELECT  *
FROM    #tmptb
--列出所有表的情况

SELECT  tbrows ,
tbname
FROM    #tmptb
WHERE   tbrows = 0 --列出记录数据为0的表
ORDER BY tbname

DROP TABLE #tmptb

--其中
--tbname     表名
--tbrows     记录数
--tbREserved     保留空间
--tbData     使用空间
--tbIndexSize     索引使用空间
--tbUnUsed   未用空间


--SQLServer遍历数据库所有表及统计表数据总数:
DECLARE @TableName VARCHAR(255);
CREATE TABLE #GetRecordingTempTable
(
[id] [INT] IDENTITY(1, 1)
NOT NULL ,
[TableName] VARCHAR(255) NOT NULL ,
[RecordingCount] INT
);
DECLARE Table_Cursor CURSOR
FOR
SELECT  [name]
FROM    sysobjects
WHERE   xtype = 'U';
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @TableName;
WHILE ( @@FETCH_STATUS = 0 )
BEGIN
EXEC('INSERT INTO #GetRecordingTempTable ([TableName],[RecordingCount]) SELECT '''+@TableName+''', COUNT(0) FROM ['+@TableName+'];');
FETCH NEXT FROM Table_Cursor INTO @TableName;
END
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
SELECT    [TableName] AS [表名称] ,
[RecordingCount] AS [总记录数]
FROM      #GetRecordingTempTable
ORDER BY  [TableName];
DROP TABLE #GetRecordingTempTable;
GO
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: