1、以数据库text为例:
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、虚拟空间、营销软件、网站建设、钟祥网站维护、网站推广。
USE text
go
SELECT ?A.NAME,MaxRows = MAX(B.rows)
FROM sys.tables A
INNER JOIN sys.partitions B?ON A.object_id = B.object_id
GROUP BY A.name
ORDER BY MAX(B.rows) DESC?- -按数据行数的降序进行排序显示
2、显示所有空表
USE text
go
SELECT ?A.NAME,MaxRows = MAX(B.rows)
FROM sys.tables A
INNER JOIN sys.partitions B?ON A.object_id = B.object_id
GROUP BY A.name
HAVING MAX(B.rows) = 0
3、显示所有非空表
USE text
go
SELECT ?A.NAME,MaxRows = MAX(B.rows)
FROM sys.tables A
INNER JOIN sys.partitions B?ON A.object_id = B.object_id
GROUP BY A.name
HAVING MAX(B.rows) 0
--这个根据存储区来判断
select B.name from sys.partitions A inner join sys.objects B
on A.object_id=B.object_id
where B.type='U' and A.rows0
--这个根据索引表来判断
select B.name from sysindexes A inner join sys.objects B
on A.id=B.object_id
where B.type='U' And A.rows 0
楼主好,数据库清空表使用delete和truncate语句,但这两个命令语句是有区别的。首先区别在于,delete是数据库操作语句而非命令语句,直接清空的是数据,能够触发触发器等操作。而truncate是命令语句,不会触发触发器等操作,但不能回滚。truncate语句是直接提交的数据库的,而delete是DML语句。delete还会保留数据库的高水线。打个比方,你就能知道最简单的区别。比如你的表中有一个自增长的ID,truncate之后,ID会重新开始编码,但delete会接着你删除的最大值进行编码。语法上 delete可以带where条件,删除指定数据,但truncate是不能的,只能全部清空表。下面写一下两个语句清空表的语法
delete table
truncate table
exec sp_msforeachtable "if not exists(select 1 from ?) drop table ?"
用存储过程
MS未公开的两个存储过程
Sp_MSForEachTable和sp_MSForEachDb是SQL Server的两个系统存储过程,存在于Master数据库当中,但是在SQL Server的联机帮助中并没有这两个存储过程,也就是说微软并没有把这两个存储过程编进SQL Server的联机丛书中。实际上Microsoft设计这两个系统存储过程的目的是要支持编写一种单一的SQL语句,该语句可以在当前服务器的所有数据库上或当前数据库的所有表上执行相同的动作