truncate table tablename
delete from tablename
delete方法最大的问题,当有标志字段时就有问题
===问:需要晴空数据库里所有的表
首先sysobjects表里查询语句:select name from sysobjects where xtype='u'
表sysobjects见《SQL Server中各个系统表的作用 》
=======================================================
般建議盡可能使用delete去刪除表的字段,它具有選擇性刪除的作用,所以常常delete from tablename where 條件
delete和truncate作用其實是一樣的,隻是truncate后面不跟where條件句,它的作用是刪除表中所有的行(記錄)
兩者最大的區別就是delete是寫日誌文件的,而truncate則不寫日誌直接刪除,前者可恢復,而后者無法恢復,后者的危險性更高,所以一般不建議使用truncate,常用delete
=========================================================
要清空數據庫中所有的表:drop table tablename
貌似隻能一張一張表刪除
========================================================
使用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 ?"
该方法可以一次清空所有表,但不能加过滤条件.
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com