掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
SQL Server 2005數(shù)據(jù)庫(kù)操作中,數(shù)據(jù)修改操作是我們經(jīng)常要使用的,因此是必須要掌握的。以前為了動(dòng)態(tài)返回sp或批處理的結(jié)果,做為下一步處理的中繼數(shù)據(jù),總是使用臨時(shí)表和openQuery來(lái)實(shí)現(xiàn)。有時(shí)還實(shí)現(xiàn)不了,比如需要指定參數(shù)的sp.其實(shí)有INSERT EXEC很好解決我的這些困擾。Insert Exec 語(yǔ)句可以把存儲(chǔ)過程或動(dòng)態(tài)批處理返回的結(jié)果集直接保存到現(xiàn)有表中:INSERT INTO

碌曲ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
例如:
- INSERT INTO DBO.Result
- EXEC DBO.USP_MYSP @Parm1='A',@Parm2='B'
刪除數(shù)據(jù)只知道TRUNCATE和無(wú)WHERE DELETE區(qū)別。TRUNCATE日志最小化不觸發(fā)TRIGGER,所以要比日志全記錄的無(wú)WHERE DELETE要快。刪除大量數(shù)據(jù)的操作,肯定要指定WHERE的,能做的就是寫好語(yǔ)句,等著執(zhí)行完畢。在執(zhí)行過程會(huì)發(fā)生日志暴漲,鎖升級(jí)等狀況卻沒有考慮到。
假設(shè)MYTB是***的表,要?jiǎng)h除其中幾百萬(wàn)行,老辦法會(huì)執(zhí)行很久必然會(huì)有阻塞發(fā)生。可以用如下方法:
- WHILE 11=1
- Begin
- Delete TOP(5000) From dbo.MYTB
- Where myCol='del';
- IF @@ROWCOUNT<5000
- BREAK;
- End
這樣第次刪除5000行,當(dāng)刪除到***一批數(shù)據(jù),不足5000行就跳出。鎖升級(jí)的可能大大降低。移除重復(fù)性數(shù)據(jù),這是一個(gè)老話題了,針對(duì)行重復(fù)、部分列重復(fù),無(wú)非就是DISTINCT,主鍵,臨時(shí)表之類的處理方法,在SQL2005里新引入的CTE和ROW_NUMBER函數(shù)可以提供一個(gè)清晰和清新的解決方法:
假設(shè)MYTB沒有主鍵列,有部分重復(fù)數(shù)據(jù)需要?jiǎng)h除,則可以:
- WITH DUPS AS
- (
- SELECT *,ROW_NUMBER() OVER (ORDER BY COL1,COL2,COL3) AS RN
- FROM DBO.MYTB
- )
- DELETE FROM DUPS WHERE RN>1
關(guān)于SQL Server 2005數(shù)據(jù)修改的心得就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流