Merge语句是Oracle 9i新增的语法,用来归并Update和Insert语句。通过Merge语句,按照一张表或子查询的毗连前提对其它一张表举办查询,毗连前提匹配上的举办Update,无法匹配的执行Insert。这个语法仅必要一次全表扫描就完成了所有事变,执行服从要高于Insert+Update。
merge语句语法如下:
merge into table_name t using (subquery) s on (s.column = t.column) when matched then update ... when not matched then insert ...
?
?
on要害字声明白关联前提,当有记录匹配时执行Update语句,没有匹配时,执行Insert语句。
示例
建设一张student表:
create table student( sno varchar2(3) not null,-- 门生编号 sname varchar(9) not null,-- 门生姓名 ssex char(2) not null -- 性别 ); ? 表已建设。
?
插入一条门生标号为001的数据:
SQL> merge into student s using (select ‘001‘ sno,‘KangKang‘ sname,‘M‘ ssex from dual) t on (s.sno = t.sno) when matched then ? update set s.sname = t.sname,s.ssex = t.ssex when not matched then ? insert (s.sno,s.sname,s.ssex) values(t.sno,t.sname,t.ssex); ? 1 行已归并。 ? SQL> select * from student; ? SNO SNAME ? ? SS --- --------- -- 001 KangKang M
?
再次插入一条门生编号为001的数据,不外sname和ssex纷歧样:
SQL> merge into student s using (select ‘001‘ sno,‘Maria‘ sname,‘F‘ ssex from dual) t on (s.sno = t.sno) when matched then update set s.sname = t.sname,s.ssex = t.ssex when not matched then insert (s.sno,t.ssex);
1 行已归并。
SQL> select * from student;
SNO SNAME SS--- --------- --001 Maria F
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|