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

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

 /************************************************************
* Code formatted by SoftTree SQL Assistant ?v7.0.158
* Time: 2016/5/19 18:47:02
* Author:zhangcn
************************************************************/ -- 指定一个数据库名称
USE [TestDB]; DECLARE @tableCount INT = 0; -- 定义变量,统计一个数据库中有多少张表
DECLARE @rowCount INT = 0; -- 定义变量,记录单个表中的记录数
DECLARE @i INT = 1; -- 定义变量, 用于循环计数
DECLARE @tableNamesWithoutData NVARCHAR(4000) = ''; -- 定义变量,用于记录数据库中哪些表没有数据
DECLARE @tableNamesWithoutDataCount INT = 0; -- 定义变量,统计数据库中无无记录表的数量
DECLARE @tableName NVARCHAR(2000) = ''; -- 定义变量,记录单个表的名字(该表没有记录)
DECLARE @sql NVARCHAR(2000) = ''; -- 定义sql,接收查询语句 -- 统计指定的数据库中有多少张表
SELECT @tableCount = COUNT([name])
FROM sys.objects -- 系统基础对象所在的视图
WHERE [type] = 'U' -- 判断临时表是否已经存在
IF OBJECT_ID('tempdb..#TempTable') IS NOT NULL
BEGIN
DROP TABLE #TempTable;-- 删除临时表
END -- 将指定数据库中的表名称与排序号,装入临时表中(效率很高)
SELECT ROW_NUMBER() OVER(ORDER BY NAME) AS rowNumber, [name]
INTO #TempTable
FROM sys.objects
WHERE [type] = 'U' WHILE @i <= @tableCount
BEGIN
-- 循环计算每个表的名称
SELECT @tableName = [name]
FROM #TempTable
WHERE rowNumber = @i; -- 拼接sql语句,用于统计表中的记录数
SET @sql = ' SELECT @num = COUNT(*) FROM [' + @tableName + ']';
EXEC sp_executesql @sql,N'@num int output',@rowCount OUTPUT -- 执行查询 -- select @rowCount IF @rowCount = 0
BEGIN
SET @tableNamesWithoutDataCount = @tableNamesWithoutDataCount + 1; -- 无记录表计数器 + 1
IF @tableNamesWithoutData = ''
BEGIN
SET @tableNamesWithoutData = @tableName
END
ELSE
BEGIN
SET @tableNamesWithoutData = @tableNamesWithoutData + '、' + @tableName
END
END SET @i = @i + 1; -- 计数加1
SET @rowCount = 0; -- 设置为0,下次重新计算
SET @tableName = ''; -- 清空,下次重新计算
SET @sql = ''; -- 清空,下次重新计算
END SELECT @tableNamesWithoutDataCount; -- 输出无记录表的总数量
SELECT @tableNamesWithoutData; -- 输出无记录表的名称

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

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

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

统计一个数据库中,无记录的表的sql语句的更多相关文章

  1. SpringBoot集成mybatis,同时读取一个数据库中多个数据表

    SpringBoot集成mybatis,同时读取一个数据库中多个数据表: application.properties: mybatis.config-location=classpath:mybat ...

  2. 【mybatis】mybatis执行一个update方法,返回值为1,但是数据库中数据并未更新,粘贴sql语句直接在数据库执行,等待好久报错:Lock wait timeout exceeded; try restarting transaction

    今天使用mybatis和jpa的过程中,发现这样一个问题: mybatis执行一个update方法,返回值为1,但是数据库中数据并未更新,粘贴sql语句直接在数据库执行,等待好久报错:Lock wai ...

  3. sql语句联表更新(从一个数据库中的一张表更新到另一个数据库的另一张表)

    一.sql server数据库写法: update a set a.ksgmm=b.ksgmm,a.ksgm=b.ksgm,a.scztm=b.scztm,a.sczt=b.sczt from lan ...

  4. SQL 中怎么查询一个数据库中一共有多少个表

    用户表:select count(*) 总表数 from sysobjects where xtype='u' 总表数:select count(*) 总表数 from sysobject s whe ...

  5. Oracle数据库中导出某张表到SQL并关联更新

    首先想到查询出结果,然后导出为SQL文件: 先导出表结构 1 在桌面建立对应的sql空文件 2 toos-->export userObjects 3 在对话框中选择你要导出的表 4 勾选上si ...

  6. 怎样用SQL语句查询一个数据库中的所有表?

    怎样用SQL语句查询一个数据库中的所有表?  --读取库中的所有表名 select name from sysobjects where xtype='u'--读取指定表的所有列名select nam ...

  7. [SQL]复制数据库某一个表到另一个数据库中

    SQL:复制数据库某一个表到另一个数据库中 SELECT * INTO 表1 FROM 表2 --复制表2如果只复制结构而不复制内容或只复制某一列只要加WHERE条件就好了 例子:SELECT * I ...

  8. SQL把表中的数据复制到另一个数据库中

    1 删除整张表的数据,并还原自增长值TRUNCATE TABLE TbWeixinActivity 2 3张表左连接select a.ID,c.Name,b.nickname,a.CreateDate ...

  9. 统计mysql数据库中数据表/字段等数量的sql

    1.查询一个表中有多少个字段: SELECT COUNT(*) FROM information_schema. COLUMNSWHERE table_schema = '数据库名'AND table ...

随机推荐

  1. P1313 计算系数 HMR大佬讲解

    今天,HMR大佬给我们讲解了这一道难题. 这道题明显的二项式定理,自然想到了要用到杨辉三角了.基本思路就是先用for循环求出杨辉三角,这样就求出了x的n次方的系数和y的m次方的系数. 这是大佬的AC代 ...

  2. 使用Sublime Text 3进行Markdown编辑+实时预览

    使用Sublime Text 3进行Markdown编辑+实时预览 安装软件包管理器 打开Sublime Text 3 同时按下 ctrl+` ,窗口底部出现一个小控制台 复制以下代码,粘贴到控制台的 ...

  3. [python]python3.7中文手册

    https://pythoncaff.com/docs/tutorial/3.7.0

  4. [SCOI2015]小凸想跑步

    题目描述 小凸晚上喜欢到操场跑步,今天他跑完两圈之后,他玩起了这样一个游戏. 操场是个凸 n 边形, nn 个顶点按照逆时针从 0 ∼n−1 编号.现在小凸随机站在操场中的某个位置,标记为p点.将 p ...

  5. JS 防抖函数和节流函数

    文章转载自:木上有水 什么是防抖?什么是节流? 工作中我们经常会用一些方法监听某些事件的完成,比如scroll.resize.keyup等. 常规事件触发的时候,比如scroll,会在短时间内触发多次 ...

  6. BZOJ 3674 可持久化并查集

    https://www.lydsy.com/JudgeOnline/problem.php?id=3674 用可持久化数组维护并查集的fa数组, 查询时间复杂度为nlognlogn,一个log是并查集 ...

  7. Kubernetes之RBAC

    API Server的授权管理 API Server 内部通过用户认证后,然后进入授权流程.对合法用户进行授权并且随后在用户访问时进行鉴权,是权限管理的重要环节.API Server 目前支持一下几种 ...

  8. 纯js Ajax 请求

    var XMLHttpReq; function createXMLHttpRequest() { if(window.ActiveXObject ) { try { XMLHttpReq = new ...

  9. JGUI源码:从头开始,建一个自己的UI框架(1)

    开篇 1.JGUI是为了逼迫自己研究底层点的前端技术而做的框架,之前对web底层实现一直没有深入研究,有了技术瓶颈,痛定思痛从头研究, 2.虽然现在vue技术比较火,但还在发展阶段,暂时先使用JQue ...

  10. [译]Ocelot - Request Aggregation

    原文 Aggregate ReRoutes用来组合多个ReRoutes,将它们的响应结果映射到一个响应中返回给客户端. 为了使用Aggregate ReRoutes,你必须像下面的ocelot.jso ...