oracle多表做updateinsert語句_第1頁
oracle多表做updateinsert語句_第2頁
oracle多表做updateinsert語句_第3頁
oracle多表做updateinsert語句_第4頁
oracle多表做updateinsert語句_第5頁
免費預覽已結束,剩余2頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、update 語法最常用的 update 語法是:UPDATESET=,SET=如果我的更新值 Value 是從一條 select 語句拿出來,而且有很多列的話,用這種語法就很麻煩第一,要 select 出來放在臨時變量上,有很多個哦第二,再將變量進行賦值。列多起來非常麻煩,能不能像 Insert 那樣,把整個 Select 語句的結果進行插入呢?就好象下面insertintotable1(c1,c2,c3)(selectv1,v2,v3fromtable2)答案是可以的,具體的語法如下:UPDATESET(,)=(SELECT(,)FROMWHERE=)WHERE;F面是這樣一個例子:表 a

2、:id,name1 王2 李3 張表 b:id,ClientName12(MSSQLServer)語句:updatebsetClientNameerea.id=b.id(Oralce)語句:updatebset(ClientName)Eb.id=a.id)updatesetfrom 語句格式當 where和 set都需要關聯一個表進行查詢時, 整個 update執行時,就需要對被關聯的表進行兩次掃描,顯然效率比較低。對于這種情況,Sybase 和 SQLSERVER 的解決辦法是使用 UPDATESETFROMWHERE的語法,實際上就是從源表獲取更新數據。在 SQL 中,表連接(leftjo

3、in、rightjoin、innerjoin 等)常常用于 select 語句,其實在 SQL 語法中,這些連接也是可以用于 update 和 delete 語句的,在這些語句中使用 join 還常常得到事半功倍的效果。UpdateT_OrderFormSETT_OrderForm.SellerID=B.L_TUserIDFROMT_OrderFormALEFTJOINT_ProductInfoBONB.L_ID=A.ProductID用來同步兩個表的數據Oralce 和 DB2 都支持的語法:兩個表 a、b,想使 b 中的 memo字段值等于 a 表中對應 id 的 name 值=a.nam

4、efroma,bwh(SELECTnameFROMaWHERUPDATEASET(A1,A2,A3)=(SELECTB1,B2,B3FROMBWHEREA.ID=B.ID)MSSQLServer 不支持這樣的語法,相對應的寫法為:UPDATEASETA1=B1,A2=B2,A3=B3FROMALEFTJOINBONA.ID=B.ID個人感覺 MSSQLServer 的 Update 語法功能更為強大。MSSQLSERVER 的寫法:UPDATEASETA1=B1,A2=B2,A3=B3FROMA,BWHEREA.ID=B.ID在 Oracle 和 DB2 中的寫法就比較麻煩了,如下:UPDAT

5、EASET(A1,A2,A3)=(SELECTB1,B2,B3FROMBWHEREA.ID=B.ID)WHEREIDIN(SELECTB.IDFROMBWHEREA.ID=B.ID)SELECT 兩種表復制語句SELECTINTO和INSERTINTOSELECT兩種表復制語句Insert是T-sql中常用語句,InsertINTOtable(field1,field2,.)values(value1,value2,.)這種形式的在應用程序開發中必不可少。但我們在開發、測試過程中,經常會遇到需要表復制的情況,如將一個table1的數據的部分字段復制到table2SELECTINTO 和INSE

6、RTINTO中,或者將整個table1復制到table2中,這時候我們就要使用SELECTINTO和INSERTINTOSELECT表復制語句了。語句形式為:InsertintoTable2(field1,field2,.)selectvalue1,value2,.fromTablel要求目標表Table2必須存在,由于目標表Table2已經存在,所以我們除了插入源表Table1的字段外,還可以插入常量。示例如下:EH-1.創建測試表 createTABLETable1(avarchar(10),bvarchar(10),cvarchar(10),CONSTRAINTPK_Table1PRIM

7、ARYKEYCLUSTERED(aASC)ONPRIMARYcreateTABLETable2(avarchar(10),cvarchar(10),dint,CONSTRAINTPK_Table2PRIMARYKEYCLUSTERED(aASC)ONPRIMARY1.INSERTINTOSELECT語句GO-2.創建測試數據InsertintoTable1values(趙.,asds,90)InsertintoTable1values(,錢,asds,100)InsertintoTable1values(孫,asds,80)InsertintoTable1GOselect*fromTable2

8、-3.INSERTINTOSELECTvalues(李,asds,語句復制表數據null)InsertintoTable2(a,c,d)selecta,c,5 fromTable1GO-4.顯不更新后的結果select*fromTable2GO-5.刪除測試表dropTABLETableldropTABLETable22.SELECTINTOFROM語句語句形式為:SELECTvale1,value2intoTable2fromTable1要求目標表Table2不存在,因為在插入時會自動創建表Table2,并將Table1定字段數據復制到Table2中。示例如下:00中指createTABLETablelavarchar(10),bvarchar(10),cvarchar(10),ASCONPRIMARYGOselecta,cINTOTable2fromTable1GO-4.顯不更新后的結果select*fromTable2GOCONSTRAINTPK_Table1PRIMARYKEYCLUSTERED-2.創建測試數據InsertintoTable1values(趙,asds,90)InsertintoTable1values(錢,asds,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論