做服装搭配的流行趋势网站,wordpress分类目录网址优化,买流量平台,山西建设工程造价管理协会网站最近项目上使用Oracle的Merge#xff0c;所以找来一下资料学习了解。该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据. ORACLE 9i 中#xff0c;使用此命令必须同时指定UPDATE 和INSERT 关键词,ORACLE 10g 做了如下改动。特点#xff1a;1、insert 和upd…最近项目上使用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 或者insertMERGE INTO products p2 USING newproducts np3 ON (p.product_id np.product_id)4 WHEN MATCHED THEN5 UPDATE6 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 pUSING newproducts npON (p.product_id np.product_id)WHEN NOT MATCHED THENINSERTVALUES (np.product_id, np.product_name,np.category);3带条件的insert 和updateMERGE INTO products pUSING newproducts npON (p.product_id np.product_id)WHEN MATCHED THENUPDATESET p.product_name np.product_nameWHERE p.category np.category;insert 和update 都带有where 字句MERGE INTO products pUSING newproducts npON (p.product_id np.product_id)WHEN MATCHED THENUPDATESET p.product_name np.product_name,p.category np.categoryWHERE p.category DVDWHEN NOT MATCHED THENINSERTVALUES (np.product_id, np.product_name, np.category)WHERE np.category ! BOOKS4,无条件的insertMERGE INTO products pUSING newproducts npON (10)WHEN NOT MATCHED THENINSERTVALUES (np.product_id, np.product_name, np.category)WHERE np.category BOOKS5delete 子句 merge into products p2 using newproducts np3 on(p.product_id np.product_id)4 when matched then5 update6 set p.product_name np.product_name7 delete where category macle1_cate;select *from products;PRODUCT_ID PRODUCT_NAME CATEGORY--------------------------------------- -------------------- --------------------1502 macle22 macle2_cate1503 macle3 macle2_cate1504 macle macle1_cate1505 macle5 macle5_cate1504 中的macle1_cate 满足delete where但是不满足 on 中的条件所以没有被删除。在进行SQL语句编写时我们经常会遇到大量的同时进行Insert/Update的语句 也就是说当存在记录时就更新(Update)不存在数据时就插入(Insert)。MERGE INTO table_name alias1USING (table|view|sub_query) alias2ON (join condition)WHEN MATCHED THENUPDATE table_nameSET col1 col_val1,col2 col2_valWHEN NOT MATCHED THENINSERT (column_list) VALUES (column_values);用中文来解释Merge语法就是在alias2中Select出来的数据每一条都跟alias1进行 ON (join condition)的比较如果匹配就进行更新的操作(Update),如果不匹配就进行插入操作(Insert)。