统计一个数据库中,无记录的表的sql语句
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语句的更多相关文章
- SpringBoot集成mybatis,同时读取一个数据库中多个数据表
SpringBoot集成mybatis,同时读取一个数据库中多个数据表: application.properties: mybatis.config-location=classpath:mybat ...
- 【mybatis】mybatis执行一个update方法,返回值为1,但是数据库中数据并未更新,粘贴sql语句直接在数据库执行,等待好久报错:Lock wait timeout exceeded; try restarting transaction
今天使用mybatis和jpa的过程中,发现这样一个问题: mybatis执行一个update方法,返回值为1,但是数据库中数据并未更新,粘贴sql语句直接在数据库执行,等待好久报错:Lock wai ...
- sql语句联表更新(从一个数据库中的一张表更新到另一个数据库的另一张表)
一.sql server数据库写法: update a set a.ksgmm=b.ksgmm,a.ksgm=b.ksgm,a.scztm=b.scztm,a.sczt=b.sczt from lan ...
- SQL 中怎么查询一个数据库中一共有多少个表
用户表:select count(*) 总表数 from sysobjects where xtype='u' 总表数:select count(*) 总表数 from sysobject s whe ...
- Oracle数据库中导出某张表到SQL并关联更新
首先想到查询出结果,然后导出为SQL文件: 先导出表结构 1 在桌面建立对应的sql空文件 2 toos-->export userObjects 3 在对话框中选择你要导出的表 4 勾选上si ...
- 怎样用SQL语句查询一个数据库中的所有表?
怎样用SQL语句查询一个数据库中的所有表? --读取库中的所有表名 select name from sysobjects where xtype='u'--读取指定表的所有列名select nam ...
- [SQL]复制数据库某一个表到另一个数据库中
SQL:复制数据库某一个表到另一个数据库中 SELECT * INTO 表1 FROM 表2 --复制表2如果只复制结构而不复制内容或只复制某一列只要加WHERE条件就好了 例子:SELECT * I ...
- SQL把表中的数据复制到另一个数据库中
1 删除整张表的数据,并还原自增长值TRUNCATE TABLE TbWeixinActivity 2 3张表左连接select a.ID,c.Name,b.nickname,a.CreateDate ...
- 统计mysql数据库中数据表/字段等数量的sql
1.查询一个表中有多少个字段: SELECT COUNT(*) FROM information_schema. COLUMNSWHERE table_schema = '数据库名'AND table ...
随机推荐
- 关于vue-cli的项目结构【转】
一.总体框架 一个vue-cli的项目结构如下,其中src文件夹是需要掌握的,所以本文也重点讲解其中的文件,至于其他相关文件,了解一下即可. vue-cli项目总体结构 二.文件结构细分 1.buil ...
- [Codeforces702F]T-Shirts——非旋转treap+贪心
题目链接: Codeforces702F 题目大意:有$n$种T恤,每种有一个价格$c_{i}$和品质$q_{i}$且每种数量无限.现在有$m$个人,第$i$个人有$v_{i}$元,每人每次会买他能买 ...
- LOJ2340 [WC2018] 州区划分 【FMT】【欧拉回路】
题目分析: 这题是WC的题??? 令 $g[S] = (\sum_{x \in S}w_x)^p$ $h[S] = g[S]$如果$S$不是欧拉回路 $d[S] = \frac{f[S]}{g[All ...
- 【XSY2666】排列问题 DP 容斥原理 分治FFT
题目大意 有\(n\)种颜色的球,第\(i\)种有\(a_i\)个.设\(m=\sum a_i\).你要把这\(m\)个小球排成一排.有\(q\)个询问,每次给你一个\(x\),问你有多少种方案使得相 ...
- Souvenir Shop 解题报告
Souvenir Shop 魔幻题目,这谁搞得到啊... 考场上完全sb了写了个线段树合并,想必我是个复杂度分析都没学过的入门级选手 发现这个网格图dag它的出度最多只有2 如果按照先走朝上的一条边进 ...
- 工作环境换成Ubuntu18.04小记
Linux汇总:https://www.cnblogs.com/dunitian/p/4822808.html#linux Ubuntu常用软件安装(小集合)http://www.cnblogs.co ...
- 第五篇-ubuntu下插入U盘,显示可读系统。
如果插上U盘,发现里面的文件都上了锁,显示可读.并且在其它电脑上存在同样的情况. 可是尝试按shift键插入U盘.
- EF CodeFirst系列(9)---添加初始化数据和数据库迁移策略
1.添加初始化数据(Seed) 我们可以在初始化数据库的过程中给数据库添加一些数据.为了实现初始化数据(seed data)我们必须创建一个自定义的数据库初始化器(DB initializer),并重 ...
- Vue技术内幕 出去看看吧 实例化+挂载
实例化时挂载DOM 从 Vue.prototype.$mount 挂载函数开始 有 template配置项时生成 render函数
- C#压缩解压文件
using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; using ...