日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java merge into_Oracle merge into的使用

發布時間:2023/12/2 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java merge into_Oracle merge into的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近項目上使用Oracle的Merge,所以找來一下資料學習了解。

該命令使用一條語句從一個或者多個數據源中完成對表的更新和插入數據. ORACLE 9i 中,使用此命令必須同時指定UPDATE 和INSERT 關鍵詞,ORACLE 10g 做了如下改動。

特點:

1、insert 和update是可選的 ;

2、UPDATE 和INSERT 后面可以跟WHERE 子句 ;

3、在ON條件中可以使用常量來insert 所有的行到目標表中,不需要連接到源表和目標表 ;

4、UPDATE 子句后面可以跟delete 來去除一些不需要的行。

create table PRODUCTS

(

PRODUCT_ID INTEGER,

PRODUCT_NAME VARCHAR2(60),

CATEGORY VARCHAR2(60)

);

insert into PRODUCTS values (1501, 'VIVITAR 35MM', 'ELECTRNCS');

insert into PRODUCTS values (1502, 'OLYMPUS IS50', 'ELECTRNCS');

insert into PRODUCTS values (1600, 'PLAY GYM', 'TOYS');

insert into PRODUCTS values (1601, 'LAMAZE', 'TOYS');

insert into PRODUCTS values (1666, 'HARRY POTTER', 'DVD');

commit;

create table NEWPRODUCTS

(

PRODUCT_ID INTEGER,

PRODUCT_NAME VARCHAR2(60),

CATEGORY VARCHAR2(60)

);

insert into NEWPRODUCTS values (1502, 'OLYMPUS CAMERA', 'ELECTRNCS');

insert into NEWPRODUCTS values (1601, 'LAMAZE', 'TOYS');

insert into NEWPRODUCTS values (1666, 'HARRY POTTER', 'TOYS');

insert into NEWPRODUCTS values (1700, 'WAIT INTERFACE', 'BOOKS');

commit;

1,可省略的update 或者insert

MERGE INTO products p

2 USING newproducts np

3 ON (p.product_id = np.product_id)

4 WHEN MATCHED THEN

5 UPDATE

6 SET p.product_name = np.product_name,

7 p.category = np.category;

使用表newproducts中的product_name 和category字段來更新表products 中相同product_id的product_name 和category.

2,當條件不滿足的時候把newproducts表中的數據INSERT 到表products中。

MERGE INTO products p

USING newproducts np

ON (p.product_id = np.product_id)

WHEN NOT MATCHED THEN

INSERT

VALUES (np.product_id, np.product_name,

np.category);

3,帶條件的insert 和update

MERGE INTO products p

USING newproducts np

ON (p.product_id = np.product_id)

WHEN MATCHED THEN

UPDATE

SET p.product_name = np.product_name

WHERE p.category = np.category;

insert 和update 都帶有where 字句

MERGE INTO products p

USING newproducts np

ON (p.product_id = np.product_id)

WHEN MATCHED THEN

UPDATE

SET p.product_name = np.product_name,

p.category = np.category

WHERE p.category = 'DVD'

WHEN NOT MATCHED THEN

INSERT

VALUES (np.product_id, np.product_name, np.category)

WHERE np.category != 'BOOKS'

4,無條件的insert

MERGE INTO products p

USING newproducts np

ON (1=0)

WHEN NOT MATCHED THEN

INSERT

VALUES (np.product_id, np.product_name, np.category)

WHERE np.category = 'BOOKS'

5,delete 子句

1? merge into products p

2? using newproducts np

3? on(p.product_id = np.product_id)

4? when matched then

5? update

6? set p.product_name = np.product_name

7? delete where category = 'macle1_cate';

select *

from products;

PRODUCT_ID PRODUCT_NAME???????? CATEGORY

--------------------------------------- -------------------- --------------------

1502 macle22????????????? macle2_cate

1503 macle3??????????????? macle2_cate

1504 macle????????????????? macle1_cate

1505 macle5??????????????? macle5_cate

1504 中的macle1_cate 滿足delete where,但是不滿足 on 中的條件,所以沒有被刪除。!!!!!!

在進行SQL語句編寫時,我們經常會遇到大量的同時進行Insert/Update的語句?,也就是說當存在記錄時,就更新(Update),不存在數據時,就插入(Insert)。

MERGE INTO table_name alias1

USING (table|view|sub_query) alias2

ON (join condition)

WHEN MATCHED THEN

UPDATE table_name

SET col1 = col_val1,

col2???? = col2_val

WHEN NOT MATCHED THEN

INSERT (column_list) VALUES (column_values);

用中文來解釋Merge語法,就是:

在alias2中Select出來的數據,每一條都跟alias1進行 ON (join condition)的比較,如果匹配,就進行更新的操作(Update),如果不匹配,就進行插入操作(Insert)。

總結

以上是生活随笔為你收集整理的java merge into_Oracle merge into的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。