成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Sybase ASE V15.7新版本支持MERGE語句

數據庫
Sybase ASE V15.7新版本將會在9月份發布,新版本將支持MERGE語句。本文我們簡單介紹了幾個MERGE的小例子,并對其進行了分析,希望能夠對您有所幫助。

2011年9月,Sybase公司將發布ASE的下一個版本V15.7。即將推出的 ASE V15.7中增加了很多的新特性。本文我們只介紹一下MERGE特性的使用,希望能夠對您有所幫助。

ANSI- SQL2003標準中***提到了MERGE這個命令,簡單理解為:”向目標表中插入不存在的記錄,更新已經存在的數據“。其它數據庫管理系統,比如 Oracle在9i中就引入了MERGE命令,Sybase SQL Anywhere中也有該命令。迄今為止,Sybase ASE中只能使用類似的if update else insert的方法來實現MERGE的功能。

下面是一個使用MERGE的例子。表Customers中存儲客戶信息,每周需要將表Cust_updates_week_10中的數據更新到客戶表Customers中。為了簡化起見,本例子只更新address和number這2個字段。

 

  1. merge into Customers as c                                        
  2. using Cust_updates_week_10 as u                                  
  3. on c.CustID = u.CustID                                           
  4. when not matched then                                            
  5. insert (CustID,Addr,Phone) values(u.CustID,u.Addr,u.Phone)  
  6. when matched then                                                
  7. update set Addr=u.Addr, Phone=u.Phone   

 

讓我們來分析一下上面的這個SQL語句。

第1行merge into Customers as c表示Customers為目的表。

第2行using Cust_updates_week_10 as u表示Cust_updates_week_10為源數據表,被插入或更新的內容將來源于此表。

第3行指定數據行是否存在的條件,本例子為演示起見,僅指定了一個條件。on c.CustID = u.CustID將使得ASE語法解釋器對Customers和Cust_updates_week_10做左外連接處理。

第4-5行表示Cust_updates_week_10包含的并且在Customers中不存在的數據,也就是“新客戶”數據,將被插入到表Customers中。

第6行表示兩張表中的記錄匹配時,“非鍵”列可以被更新。本例子僅更新address和phone兩個字段。

我們可以拓展MERGE命令的語法,比如:可以使用多個“當存在時”、“當不存在時”這樣的語句。下面的例子將使用兩個“when matched”語句,***個“when matched”語句判斷存在的記錄中address字段是否為空,當address為空,記錄將被刪除。

 

  1. merge into Customers as c  
  2. using Cust_updates_week_10 as u  
  3. on c.CustID = u.CustID  
  4. when not matched then  
  5. insert (CustID,Addr,Phone) values(u.CustID,u.Addr,u.Phone)  
  6. when matched and u.Addr = NULL then  
  7. delete  
  8. when matched then  
  9. update set Addr=u.Addr, Phone=u.Phone 

 

注意:語句“when matched”和“when not matched”的順序會影響處理的結果。上面的SQL語句中,***條語句的條件被完全滿足時,后面的類似“when [not] matched”語句就不會被執行了。

MERGE 命令比較實用的地方在于它將比較復雜的多條語句集成到單條SQL語句中。不僅僅使得SQL語句更加簡潔、清晰,還能顯著得提高執行效率。使用MERGE命 令僅需訪問一次源數據表的內容,然后直接處理匹配的每條記錄。如果你使用單獨的insert、update、delete語句來實現類似的功能時,那么將 至少訪問三次源數據表的內容。

MERGE命令比較靈活些,除了使用基表外,還可以使用派生表。

 

  1. merge into Customers as c  
  2. using (select CustID, Addr, Phone from Cust_updates_week_10  
  3. where Phone is not NULL) as u  
  4. on c.CustID = u.CustID  
  5. when not matched then  
  6. insert (CustID,Addr,Phone) values(u.CustID,u.Addr,u.Phone  
  7. when matched then  
  8. update set Addr=u.Addr, Phone=u.Phone 

 

MERGE命令有一些限制條件,比如上面的SQL語句中,第3行中的鍵列(CustID)不能被更新。當然,還有其它的一些限制。讓我們期待ASE V15.7版本的發布。

關于Sybase ASE V15.7的相關知識就介紹這么多了,希望本次的介紹能夠對您有所幫助。

【編輯推薦】

  1. Oracle數據庫PL/SQL快捷鍵設置詳解
  2. Oracle數據庫診斷工具RDA的安裝與使用詳解
  3. Oracle數據庫GLOBAL_NAMES參數的詳細研究
  4. Oracle數據庫歸檔模式的切換及其相關操作詳解
  5. Oracle 10g UNDO表空間過大導致磁盤空間不足的解決
責任編輯:趙鵬 來源: CSDN博客
相關推薦

2011-07-18 10:24:18

Debian 7Hurd內核

2011-08-01 15:35:51

GlassFishJava 7

2011-09-30 10:02:37

開源云計算OpenStack

2015-06-17 09:17:52

2015-11-04 12:15:11

應用交付深信服OpenStack

2009-01-14 13:56:39

Wine應用程序

2017-08-22 21:42:51

WebVRFirefox瀏覽器

2011-09-29 21:24:41

點心省電

2014-11-04 15:09:02

2009-07-06 23:30:22

2012-05-07 12:31:44

HMPP編譯器OpenACC標準

2015-10-30 15:05:08

Sybase數據庫安全

2015-02-05 16:59:36

平安WiFiiOS

2009-06-17 09:24:34

學習strutsStruts新版本

2010-02-23 17:44:48

Python 3.0

2019-06-12 10:01:10

華勝天成

2012-06-20 16:13:59

街旁

2009-12-29 13:43:21

Ubuntu 9.10

2012-05-15 13:39:41

微軟Windows8

2023-05-18 08:00:59

CephRGW 性能
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品日韩电影 | 在线观看亚洲精品 | 日韩有码一区二区三区 | 91大神在线看 | 亚洲欧美激情精品一区二区 | 在线看片网站 | 在线看一区二区三区 | 亚洲日本国产 | 国产精品久久久久久中文字 | 97国产在线观看 | 国产精品日女人 | 中文字幕av网站 | 999观看免费高清www | 99视频在线免费观看 | 精品免费av| 亚洲一二三视频 | 国产精品18久久久久久久 | 日韩欧美手机在线 | 一级a毛片 | 97狠狠干| 亚洲欧美日韩精品久久亚洲区 | 亚洲成人午夜在线 | 中文字幕一区二区三区乱码在线 | 欧美一区二区三区在线免费观看 | 国产精品91久久久久久 | 麻豆久久久久久 | 91精品久久 | 精品欧美色视频网站在线观看 | 黄色国产| 国产一级影片 | 91天堂网 | www国产精品 | 欧美在线视频网 | 久久久久亚洲精品 | 欧美日韩国产中文 | 精品视频一区二区三区在线观看 | 久久久久91| 欧美精品一区二区在线观看 | 精品一区二区三区中文字幕 | 91pao对白在线播放 | 欧美在线视频网站 |