博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
统计一个数据库中,无记录的表的sql语句
阅读量:5325 次
发布时间:2019-06-14

本文共 2404 字,大约阅读时间需要 8 分钟。

  SQL Server数据库中统计无记录数的表

 大家使用的时候,将sql脚本中的红色[TestDB] 换成你的目标数据库名称。

1 /************************************************************ 2  * Code formatted by SoftTree SQL Assistant ?v7.0.158 3  * Time: 2016/5/19 18:47:02 4  * Author:zhangcn 5  ************************************************************/ 6  7 -- 指定一个数据库名称 8 USE [TestDB]; 9 10 DECLARE @tableCount INT = 0;                        --定义变量,统计一个数据库中有多少张表11 DECLARE @rowCount INT = 0;                          --定义变量,记录单个表中的记录数                        12 DECLARE @i INT = 1;                                 --定义变量,用于循环计数13 DECLARE @tableNamesWithoutData NVARCHAR(4000) = ''; --定义变量,用于记录数据库中哪些表没有数据14 DECLARE @tableNamesWithoutDataCount INT = 0;        --定义变量,统计数据库中无无记录表的数量15 DECLARE @tableName NVARCHAR(2000) = '';             --定义变量,记录单个表的名字(该表没有记录)16 DECLARE @sql NVARCHAR(2000) = '';                   --定义sql,接收查询语句17 18 -- 统计指定的数据库中有多少张表19 SELECT @tableCount = COUNT(name)20 FROM   sys.objects21 WHERE  [type] = 'U'22 23 --判断临时表是否已经存在24 IF OBJECT_ID('tempdb..#TempTable') IS NOT NULL25 BEGIN26     DROP TABLE #TempTable;--删除临时表27 END28 29 --将指定数据库中的表名称与排序号,装入临时表中(效率很高)30 SELECT ROW_NUMBER() OVER(ORDER BY NAME) AS rowNumber, [name]31 INTO #TempTable 32 FROM   sys.objects33 WHERE  [type] = 'U'34 35 WHILE @i <= @tableCount36 BEGIN37     --循环计算每个表的名称38     SELECT @tableName = name39     FROM  #TempTable 40     WHERE rowNumber = @i;41     42     -- 拼接sql语句,用于统计表中的记录数43     SET @sql = ' SELECT @num = COUNT(*) FROM [' + @tableName + ']';44     EXEC sp_executesql @sql,N'@num int output',@rowCount OUTPUT  --执行查询45     46     --select @rowCount47     48     IF @rowCount = 049     BEGIN50         SET @tableNamesWithoutDataCount = @tableNamesWithoutDataCount + 1; --无记录表计数器 + 151         IF @tableNamesWithoutData = ''52         BEGIN53             SET @tableNamesWithoutData = @tableName54         END55         ELSE56         BEGIN57             SET @tableNamesWithoutData = @tableNamesWithoutData + '、' + @tableName58         END59     END60     61     SET @i = @i + 1; --计数加162     SET @rowCount = 0; --设置为0,下次重新计算63     SET @tableName = ''; --清空,下次重新计算64     SET @sql = '';--清空,下次重新计算65 END66 67 SELECT @tableNamesWithoutDataCount; --输出无记录表的总数量68 SELECT @tableNamesWithoutData;      --输出无记录表的名称

 打开SQL 查询分析器,将上述脚本拷贝后运行,结果如下:

 第一个查询结果,代表无记录数的表的总数量为652个;

 第二个查询结果,代表无记录数的表的名称的字符串,中间用分号分割。

 

转载于:https://www.cnblogs.com/SavionZhang/p/5510887.html

你可能感兴趣的文章
使用Html5shiv.js让ie支持html5
查看>>
DBA 优化法则
查看>>
用Python连接SQLServer抓取分析数据、监控 (pymssql)
查看>>
升级ruby后再安装cocodPod
查看>>
MySQL数据库8(十三)高级数据操作之select指令
查看>>
随心测试_Python Se_002<不同浏览器驱动>
查看>>
在ASP.NET WebService 中如何使用 WebMethod 属性
查看>>
一个很详细的web.xml讲解
查看>>
ArcGIS 《空间分析使用手册》的一些内容(分配函数、成本加权距离制图、单元统计、邻域统计等等)...
查看>>
福大软工1816 · 第三次作业 - 结对项目1
查看>>
开发命名规范
查看>>
The connection to adb is down, and a severe error has occured.
查看>>
前端面试题(2):介绍一下对浏览器内核的理解
查看>>
收藏网站
查看>>
学习:组件生命周期(2)
查看>>
模板方法模式
查看>>
3.创建额外域
查看>>
(转)关于TCP封包、粘包、半包
查看>>
animate.css注意事项
查看>>
Java输入输出流
查看>>