解讀SQL Server 2008的新語句MERGE_Mssql數據庫教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:微軟SQL Server 2008之行值構造器相信大家都知道怎樣使用數據操作語言(DML)對SQL Server表的數據進行插入、刪除和更新等處理。有時候,我們需要用INSERT語句進行插入的數據實在是多得讓人頭疼,有很多傳統但繁瑣的方法可以用來
SQL Server 2008將包含用于合并兩個行集(rowset)數據的新句法。根據一個源數據表對另一個數據表進行確定性的插入、更新和刪除這樣復雜的操作,運用新的MERGE語句,開發者用一條命令就可以完成。對兩個表進行信息同步時,有三步操作要進行。首先要處理任何需要插入目標數據表的新行。其次是處理需要更新的已存在的行。最后要刪除不再使用的舊行。這個過程中需要維護大量重復的邏輯,并可能導致微妙的錯誤。
Bob Beauchemin討論了MERGE語句,這個語句將上述的多個操作步驟合并成單一語句。他給出了如下的例子:
以下是引用片段:
merge [target] t using [source] s on t.id = s.id when matched then update t.name = s.name, t.age = s.age -- use "rowset1" when not matched then insert values(id,name,age) -- use "rowset2" when source not matched then delete; -- use "rowset3" |
如你所見,具體操作是根據后面的聯合(join)的解析結果來確定的。在這個例子中,如果目標和源數據表有匹配的行,就實行更新操作。如果沒有,就實行插入或者刪除操作來使目標數據表和源數據表保持一致。
這個新句法的一個美妙之處是它在處理更新時的確定性。在使用標準的UPDATE句法和聯合時,可能有超過一個源行跟目標行匹配。在這種情況下,無法預料更新操作會采用哪個源行的數據。
而當使用MERGE句法時,如果存在多處匹配,它會拋出一個錯誤。這就提醒了開發者,要達到預想的目標,當前的聯合條件還不夠明確。
分享:Sql語句密碼驗證的安全漏洞Sql語句作為國際標準的數據庫查詢語句,在各種編程環境中得到了廣泛的應用。作為一個成熟、穩定的系統,用戶登陸和密碼驗證是必不可少的。 Sql語句作為國際標準的數據庫查詢語句,在
相關Mssql數據庫教程:
- sql 語句練習與答案
- 深入C++ string.find()函數的用法總結
- SQL Server中刪除重復數據的幾個方法
- sql刪除重復數據的詳細方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數據庫,提示 無法為該請求檢索數據 錯誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲過程參數的用法實例詳解
- 相關鏈接:
- 教程說明:
Mssql數據庫教程-解讀SQL Server 2008的新語句MERGE。