新聞中心
SQL Server 2005數(shù)據(jù)庫操作中,數(shù)據(jù)修改操作是我們經(jīng)常要使用的,因此是必須要掌握的。以前為了動態(tài)返回sp或批處理的結(jié)果,做為下一步處理的中繼數(shù)據(jù),總是使用臨時表和openQuery來實現(xiàn)。有時還實現(xiàn)不了,比如需要指定參數(shù)的sp.其實有INSERT EXEC很好解決我的這些困擾。Insert Exec 語句可以把存儲過程或動態(tài)批處理返回的結(jié)果集直接保存到現(xiàn)有表中:INSERT INTO

碌曲ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
例如:
- INSERT INTO DBO.Result
- EXEC DBO.USP_MYSP @Parm1='A',@Parm2='B'
刪除數(shù)據(jù)只知道TRUNCATE和無WHERE DELETE區(qū)別。TRUNCATE日志最小化不觸發(fā)TRIGGER,所以要比日志全記錄的無WHERE DELETE要快。刪除大量數(shù)據(jù)的操作,肯定要指定WHERE的,能做的就是寫好語句,等著執(zhí)行完畢。在執(zhí)行過程會發(fā)生日志暴漲,鎖升級等狀況卻沒有考慮到。
假設(shè)MYTB是***的表,要刪除其中幾百萬行,老辦法會執(zhí)行很久必然會有阻塞發(fā)生??梢杂萌缦路椒ǎ?/p>
- WHILE 11=1
- Begin
- Delete TOP(5000) From dbo.MYTB
- Where myCol='del';
- IF @@ROWCOUNT<5000
- BREAK;
- End
這樣第次刪除5000行,當(dāng)刪除到***一批數(shù)據(jù),不足5000行就跳出。鎖升級的可能大大降低。移除重復(fù)性數(shù)據(jù),這是一個老話題了,針對行重復(fù)、部分列重復(fù),無非就是DISTINCT,主鍵,臨時表之類的處理方法,在SQL2005里新引入的CTE和ROW_NUMBER函數(shù)可以提供一個清晰和清新的解決方法:
假設(shè)MYTB沒有主鍵列,有部分重復(fù)數(shù)據(jù)需要刪除,則可以:
- 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ū)δ兴斋@!
【編輯推薦】
- SQL Server 2008 MDX學(xué)習(xí)筆記之理解元數(shù)組
- SQL Server數(shù)據(jù)庫DataRelation的應(yīng)用示例詳解
- SQL Server 2005/2008中的CTE應(yīng)用之遞歸查詢
- SQL Server 2008數(shù)據(jù)庫學(xué)習(xí)筆記之MDX查詢示例
- 淺析SQL Server數(shù)據(jù)庫SSIS導(dǎo)入IIS日志的簡單步驟
分享標(biāo)題:SQLServer2005學(xué)習(xí)筆記之?dāng)?shù)據(jù)修改心得
文章URL:http://www.dlmjj.cn/article/cdjiohs.html


咨詢
建站咨詢
