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. Python量化交易

    资料整理: 1.python量化的一个github 代码 2.原理 + python基础 讲解 3.目前发现不错的两个量化交易 学习平台: 聚宽和优矿在量化交易都是在15年线上布局的,聚宽是15年的新 ...

  2. Java拓展接口-default关键词

    Java接口在使用过程中有两点规定: 1.接口中只能有定义方法名.方法返回类型,不能有方法的实现. 2.实现接口的类,必须实现接口中所有的方法. 例如下面的例子: //定义接口 public inte ...

  3. windows配置MySQL

    mysql安装.启动和基础配置 --windows版本 1.把下载好的zip文件解压到任意目录下,这个目录就是mysql的安装目录. 2.打开目录找到my-default.ini这个配置文件,复制这个 ...

  4. Linux设备树(三 属性)

    三 属性(property) device_type = "memory"就是一个属性,等号前边是属性,后边是值.节点是一个逻辑上相对独立的实体,属性是用来描述节点特性的,根据需要 ...

  5. 休眠(1):sleep和wait的区别

    1.这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类. 2.sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际 ...

  6. 使用WebClient进行文件上传

    注释部分为异步上传,几行代码就能搞定 public static bool Upload(string url, string path) { using (WebClient client = ne ...

  7. Numpy系列(十)- 掩码数组

    简介 有时候数据集中存在缺失.异常或者无效的数值,我们可以标记该元素为被屏蔽(无效)状态. import numpy as np import numpy.ma as ma x = np.array( ...

  8. 主机管理+堡垒机系统开发:strace命令用法详解(六)

    一.简单介绍 strace是什么? 按照strace官网的描述, strace是一个可用于诊断.调试和教学的Linux用户空间跟踪器.我们用它来监控用户空间进程和内核的交互,比如系统调用.信号传递.进 ...

  9. CMDB服务器管理系统【s5day89】:部分数据表结构-资产入库思路

    1.用django的app作为统一调用库的好处 1.创建repository app截图如下: 2.好处如下: 1.app的本质就是一个文件夹 2.以后所有的app调用数据就只去repository调 ...

  10. CSS布局 两列布局之单列定宽,单列自适应布局思路

    前言 说起自适应布局方式,单列定宽单列自适应布局是最基本的布局形式.比如斗鱼的直播间,后台管理系统都是常用的 我们将从 float, inline-block, table, absolute, fl ...