使用SQL语句清空数据库所有表的数据

近来发现数据库过大,空间不足,因此打算将数据库的数据进行全面的清理,但表非常多,一张一张的清空,实在麻烦,因此就想利用SQL语句一次清空所有数据.找到了三种方法进行清空.使用的数据库为MS
SQL SERVER.
1.搜索出所有表名,构造为一条SQL语句

declare @trun_name varchar(8000)
set @trun_name=‘‘

select @trun_name=@trun_name + ‘truncate table ‘ + [name] + ‘ ‘ from sysobjects where xtype=‘U‘ and status > 0
exec (@trun_name)

该方法适合表不是非常多的情况,否则表数量过多,超过字符串的长度,不能进行完全清理.

2.利用游标清理所有表

declare @trun_name varchar(50)
declare name_cursor cursor for

select ‘truncate table ‘ + name from sysobjects where xtype=‘U‘ and status > 0
open name_cursor
fetch next from name_cursor into @trun_name

while @@FETCH_STATUS = 0
begin
  exec (@trun_name)

 print ‘truncated table ‘ + @trun_name

 fetch next from name_cursor into @trun_name

end

close name_cursor
deallocate name_cursor

这是我自己构造的,可以做为存储过程调用, 能够一次清空所有表的数据,并且还可以进行有选择的清空表.
3.利用微软未公开的存储过程

exec sp_msforeachtable "truncate table ?"

该方法可以一次清空所有表,但不能加过滤条件.

来源:http://www.cnblogs.com/kingkoo/archive/2008/02/24/1079157.html

使用SQL语句清空数据库所有表的数据,布布扣,bubuko.com

时间: 05-30

使用SQL语句清空数据库所有表的数据的相关文章

SQL语句创建数据库及表

--删除数据库drop database ArchiveDev; --建立归档数据库CREATE DATABASE ArchiveDev; USE ArchiveDev;GO --1.建立归档计划执行表CREATE TABLE Arch_CollectDataExecSchedule(ID INT NOT NULL,ArchCollectRuleID INT NOT NULL, --归档规则IDArchParameterID INT NOT NULL, --归档参数IDScheduleDate

清空数据库所有表的数据

declare cursor c_t is select table_name from user_tables;table_name user_tables.table_name%type;begin open c_t;loop fetch c_t into table_name;exit when c_t%notfound;execute immediate 'delete from ' || table_name;end loop;close c_t;end;

sql语句使用游标修改表中数据

declare @a varchar(100),@b varchar(100) declare user_cursor cursor for select a,b from tableA tab open user_cursor fetch next from user_cursor into @a,@b while @@fetch_status=0 begin update tableA set [email protected] where b=@b fetch next from user

SQL语句创建数据库,SQL语句删除数据库,SQL语句创建表,SQL语句删除表,SQL语句添加约束,SQL语句删除约束

创建数据库: 1 CREATE DATABASE Test --要创建的数据库名称 2 ON PRIMARY 3 ( 4 --数据库文件的具体描述 5 NAME='Test_data', --主数据文件的逻辑名称 6 FILENAME='E:\project\Test_data.mdf', --主数据文件的物理名称 7 SIZE=5MB, --主数据文件的初始大小 8 MAXSIZE=100MB, --主数据文件的增长的最大值 9 FILEGROWTH=15% --主数据文件的增长率 10 )

SQL语句基础之 管理数据库,表 和 数据

MySQL中的基本sql语句 MySQL中主要有三个大的对象,第一个是数据库,有了数据库后,我们才能在数据库里面建表,因为Mysql是关系数据库,它的数据都会以记录的形式存到表里,所以第二个是表,然后第三个才是数据.下面我们根据这个关系来学习一下mysql中的sql语句~ Sql语句管理数据库 1.查看Mysql中有哪些数据库 语句:show databases 2.创建一个数据库 语句: create database vmaxtam default character set utf8;--

mysql用户管理, 常用sql语句,mysql数据库备份恢复

mysql用户管理 新创建一个指定IP的用户,可以访问mysql的某些库某些表. 所有库的所有表,如果想指定访问某个库某些表,只需要修改名称user1 指定用户名br/>@后面的ip是指定ip,%表示所有的ipindentified by 后面是用户的密码验证用用户user1登录也可以指定localhost,登录时不输入本机ip地址即可访问查看授权,用于授权给新用户,新权限: 常用sql 语句 查看库表的行数搜索:select count() from mysql.user;搜索:select

3,SQL语句及数据库优化

 1,统一SQL语句的写法 对于以下两句SQL语句,程序员认为是相同的,数据库查询优化器认为是不同的. 所以封装成复用方法,用标准模板来控制. select*from dual select*From dual 其实就是大小写不同,查询分析器就认为是两句不同的SQL语句,必须进行两次解析.生成2个执行计划 2,不要把SQL语句写得太复杂 我经常看到,从数据库中捕捉到的一条SQL语句打印出来有2张A4纸这么长.一般来说这么复杂的语句通常都是有问题的.我拿着这2页长的SQL语句去请教原作者,结果他说

SQL语句及数据库优化

1,统一SQL语句的写法 对于以下两句SQL语句,程序员认为是相同的,数据库查询优化器认为是不同的. 所以封装成复用方法,用标准模板来控制. select*from dual select*From dual 其实就是大小写不同,查询分析器就认为是两句不同的SQL语句,必须进行两次解析.生成2个执行计划 2,不要把SQL语句写得太复杂 我经常看到,从数据库中捕捉到的一条SQL语句打印出来有2张A4纸这么长.一般来说这么复杂的语句通常都是有问题的.我拿着这2页长的SQL语句去请教原作者,结果他说时

SQL语句在数据库中是如何执行的

第一步:应用程序把查询SQL语句发给服务器端执行 我们在数据层执行SQL语句时,应用程序会连接到相应的数据库服务器,把SQL语句发送给服务器处理. 第二步:服务器解析请求的SQL语句 SQL计划缓存,经常用查询分析器的朋友大概都知道这样一个事实,往往一个查询语句在第一次运行的时候需要执行特别长的时间,但是如果你马上或者在一定时间内运行同样的语句,会在很短的时间内返回查询结果.原因是: 服务器在接收到查询请求后,并不会马上去数据库查询,而是在数据库中的计划缓存中找是否有相对应的执行计划.如果存在,