merge into 詳細(xì)介紹

merge into 詳細(xì)介紹

ID:12548107

大?。?1.00 KB

頁(yè)數(shù):8頁(yè)

時(shí)間:2018-07-17

merge into 詳細(xì)介紹_第1頁(yè)
merge into 詳細(xì)介紹_第2頁(yè)
merge into 詳細(xì)介紹_第3頁(yè)
merge into 詳細(xì)介紹_第4頁(yè)
merge into 詳細(xì)介紹_第5頁(yè)
資源描述:

《merge into 詳細(xì)介紹》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、Mergeinto詳細(xì)介紹/*Mergeinto詳細(xì)介紹MERGE語(yǔ)句是Oracle9i新增的語(yǔ)法,用來(lái)合并UPDATE和INSERT語(yǔ)句。通過(guò)MERGE語(yǔ)句,根據(jù)一張表或子查詢(xún)的連接條件對(duì)另外一張表進(jìn)行查詢(xún),連接條件匹配上的進(jìn)行UPDATE,無(wú)法匹配的執(zhí)行INSERT。這個(gè)語(yǔ)法僅需要一次全表掃描就完成了全部工作,執(zhí)行效率要高于INSERT+UPDATE。*//*語(yǔ)法:MERGE[INTO[schema.]table[t_alias]USING[schema.]{table

2、view

3、subquery}[t_alias]ON(condition)WHENMATCHED

4、THENmerge_update_clauseWHENNOTMATCHEDTHENmerge_insert_clause;*//*我們還是以《sql中的case應(yīng)用》中的表為例。在創(chuàng)建另兩個(gè)表fzq1和fzq2*/--全部男生記錄createtablefzq1asselect*fromfzqwheresex=1;--全部女生記錄createtablefzq2asselect*fromfzqwheresex=0;/*涉及到兩個(gè)表關(guān)聯(lián)的例子*/--更新表fzq1使得id相同的記錄中chengji字段+1,并且更新name字段。--如果id不相同,則插入到表fzq1中.--

5、將fzq1表中男生記錄的成績(jī)+1,女生插入到表fzq1中mergeintofzq1aa????--fzq1表是需要更新的表usingfzqbb???????????--關(guān)聯(lián)表on(aa.id=bb.id)???????--關(guān)聯(lián)條件whenmatchedthen??????--匹配關(guān)聯(lián)條件,作更新處理updatesetaa.chengji=bb.chengji+1,aa.name=bb.name????????--此處只是說(shuō)明可以同時(shí)更新多個(gè)字段。whennotmatchedthen???--不匹配關(guān)聯(lián)條件,作插入處理。如果只是作更新,下面的語(yǔ)句可以省略。insertv

6、alues(bb.id,bb.name,bb.sex,bb.kecheng,bb.chengji);--可以自行查詢(xún)fzq1表。/*涉及到多個(gè)表關(guān)聯(lián)的例子,我們以三個(gè)表為例,只是作更新處理,不做插入處理。當(dāng)然也可以只做插入處理*/--將fzq1表中女生記錄的成績(jī)+1,沒(méi)有直接去sex字段。而是fzq和fzq2關(guān)聯(lián)。mergeintofzq1aa????--fzq1表是需要更新的表using(selectfzq.id,fzq.chengji??????fromfzqjoinfzq2??????onfzq.id=fzq2.id)bb--數(shù)據(jù)集on(aa.id=bb.id)

7、???????--關(guān)聯(lián)條件whenmatchedthen??????--匹配關(guān)聯(lián)條件,作更新處理updatesetaa.chengji=bb.chengji+1--可以自行查詢(xún)fzq1表。/*不能做的事情*/mergeintofzq1aa???usingfzqbb??????????on(aa.id=bb.id)???????whenmatchedthen??????updatesetaa.id=bb.id+1/*系統(tǒng)提示:ORA-38104:ColumnsreferencedintheONClausecannotbeupdated:"AA"."ID"我們不能更新on

8、(aa.id=bb.id)關(guān)聯(lián)條件中的字段*/updatefzq1setid=(selectid+1fromfzqwherefzq.id=fzq1.id)whereidin(selectidfromfzq)--使用update就可以更新,如果有更好的方法,謝謝反饋!fromthis:http://hi.baidu.com/rhuang666/blog/item/09bae812ce7a752add540120.htmlOracle9i引入了MERGE命令,你能夠在一個(gè)SQL語(yǔ)句中對(duì)一個(gè)表同時(shí)執(zhí)行inserts和updates操作.MERGE命令從一個(gè)或多個(gè)數(shù)據(jù)源中選擇

9、行來(lái)updating或inserting到一個(gè)或多個(gè)表.Oracle10g中MERGE有如下一些改進(jìn):1、UPDATE或INSERT子句是可選的2、UPDATE和INSERT子句可以加WHERE子句3、ON條件中使用常量過(guò)濾謂詞來(lái)insert所有的行到目標(biāo)表中,不需要連接源表和目標(biāo)表4、UPDATE子句后面可以跟DELETE子句來(lái)去除一些不需要的行?首先創(chuàng)建示例表:createtablePRODUCTS???(???PRODUCT_IDINTEGER,???PRODUCT_NAMEVARCHAR2(60),???CATEGORYVARCHAR2(60

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。