r刪除表但不刪除表里的數(shù)據(jù)?

成都創(chuàng)新互聯(lián)是一家專業(yè)提供普蘭店企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、html5、小程序制作等業(yè)務(wù)。10年已為普蘭店眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
什么意思?你要給表改名嗎?
在外部應(yīng)用中沒有直接的方式去改表名,只能新建一個(gè)表,然后把數(shù)據(jù)導(dǎo)過(guò)去,在把原表刪了。數(shù)據(jù)量大的話此法不可行。
應(yīng)該是鎖表了,一種方法是找到鎖表進(jìn)程,殺之,然后drop表。或者重啟數(shù)據(jù)庫(kù),重啟后鎖表進(jìn)程已被清除,可以刪除了。
在sql
server
2008management
studio,用相關(guān)賬號(hào)登錄,找到你所要清空數(shù)據(jù)的表所在的數(shù)據(jù)庫(kù),然后選中數(shù)據(jù)庫(kù)右鍵選擇新建查詢,進(jìn)入查詢界面窗口,選擇輸入以下sql語(yǔ)句就可以了。
如果沒有其他表的外鍵關(guān)聯(lián)這個(gè)表的主鍵,可以用下面的語(yǔ)句(效率比較高)
truncate
table
tablename
如果有的話,就用
delete
from
tablename
也許很多讀者朋友都經(jīng)歷過(guò)這樣的事情:要在開發(fā)數(shù)據(jù)庫(kù)基礎(chǔ)上清理一個(gè)空庫(kù),但由于對(duì)數(shù)據(jù)庫(kù)結(jié)構(gòu)缺乏整體了解,在刪除一個(gè)表的記錄時(shí),刪除不了,因?yàn)榭赡苡型怄I約束,一個(gè)常見的數(shù)據(jù)庫(kù)結(jié)構(gòu)是一個(gè)主表,一個(gè)子表,這種情況下一般都得先刪除子表記錄,再刪除主表記錄。
1.按照先后順序逐個(gè)刪除,這個(gè)方法在表非常多的情況下顯得很不現(xiàn)實(shí),即便是表數(shù)量不多,但約束比較多時(shí),你還是要花費(fèi)大量的時(shí)間和精力去研究其間的約束關(guān)系,然后找出先刪哪個(gè)表,再刪哪個(gè)表,最后又刪哪個(gè)表。
首先得編寫代碼循環(huán)檢查所有的表,這里我推薦一個(gè)存儲(chǔ)過(guò)程sp_MSForEachTable,因?yàn)樵谖④浀墓俜轿臋n中沒有對(duì)這個(gè)存儲(chǔ)過(guò)程有描述,很多開發(fā)人員也許都還未曾聽說(shuō),所以你在互聯(lián)網(wǎng)上搜索得到的解決辦法大多很復(fù)雜,也許有的人會(huì)認(rèn)為,既然沒有官方文檔,這個(gè)存儲(chǔ)過(guò)程可能會(huì)不穩(wěn)定,打心理上會(huì)排斥它,但事實(shí)并非如此。下面來(lái)先看一個(gè)完整的腳本:
這個(gè)腳本創(chuàng)建了一個(gè)命名為sp_DeleteAllData的存儲(chǔ)過(guò)程,前面兩行語(yǔ)句分別禁用約束和觸發(fā)器,第三條語(yǔ)句才是真正地刪除所有數(shù)據(jù),接下里的語(yǔ)句分別還原約束和觸發(fā)器,最后一條語(yǔ)句是顯示每個(gè)表中的記錄,當(dāng)然這條語(yǔ)句也可以不要,我只是想確認(rèn)一下是否清空了所有表而已。
1、首先創(chuàng)建一個(gè)臨時(shí)表,用于演示sqlserver語(yǔ)法中delete刪除的使用方法
IF OBJECT_ID('tempdb..#tblDelete') IS NOT NULL DROP TABLE #tblDelete;
CREATE TABLE #tblDelete(
Code varchar(50),? ? ?
Total int?
);
2、然后往臨時(shí)表#tblDelete中插入幾行測(cè)試,用于演示如何刪除數(shù)據(jù)
insert into #tblDelete(Code, Total) values('Code1', 30);
insert into #tblDelete(Code, Total) values('Code2', 40);
insert into #tblDelete(Code, Total) values('Code3', 50);
insert into #tblDelete(Code, Total) values('Code4', 6);
3、查詢臨時(shí)表#tblDelete中的測(cè)試數(shù)據(jù)select * from #tblDelete;
4、刪除臨時(shí)表#tblDelete中Code欄位=Code3的記錄,使用下面的delete語(yǔ)句
delete #tblDelete where Code = 'Code3'
5、再次查詢臨時(shí)表#tblDelete的結(jié)果,可以看到Code3的記錄沒有了
select * from #tblDelete;
6、刪除臨時(shí)表#tblDelete中Code欄位=Code2的記錄,使用下面的delete語(yǔ)句。
注意,下面的delete語(yǔ)句后面有一個(gè)from關(guān)鍵字,這個(gè)關(guān)鍵字是可以省略的,但是建議不要省略
delete from #tblDelete where Code = 'Code2'
7、再次查詢臨時(shí)表#tblDelete的結(jié)果,可以看到Code2的記錄沒有了
select * from #tblDelete;
8、最后,如果想要快速的刪除表中的所有數(shù)據(jù),有下面兩種方式。第二種方式速度更快,delete from #tblDelete;truncate table #tblDelete;完成效果圖。
分享名稱:sqlserver刪表,sql 刪表數(shù)據(jù)
轉(zhuǎn)載源于:http://chinadenli.net/article4/dsshsie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站收錄、外貿(mào)網(wǎng)站建設(shè)、定制網(wǎng)站、網(wǎng)站策劃、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)