oracle merge into 的例子
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了oracle merge into 的例子,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3455字,纯文字阅读大概需要5分钟。
内容图文
![oracle merge into 的例子](/upload/InfoBanner/zyjiaocheng/1081/6110d683349941dda93d9847b65b753a.jpg)
内容来自 oracle 11g 实用教程 郑阿奇等编
在 oracle 11g中有merge语句,用于根据与原表连接的结果,对目标表执行插入,更新,或者删除操作。例如,根据在一个表中找到的差异在另一个表中插入,更新或者删除行,这种方法可以对两个表进行信息同步。语法格式如下
merge into <目标表名>
using <原表名>on <条件表达式>
when matched then {update set ...|delete}
when not matched then insert(...) values()
merge into a
using xsb on (a.xh=xsb.学号)
when matched then update set a.xm = xsb.姓名,a.xb=xsb.性别,a.cssj = xsb.出生时间,a.zy=xsb.专业,a.zxf=xsb.总学分,a.bz=xsb.备注
when not matched then insert values(xsb.学号,xsb.姓名,xsb.性别,xsb.出生时间,xsb.专业,xsb.总学分,xsb.备注)
数据库
create table a ( XH char(6) notnullprimarykey, xM char(8) notnull, XB char(2) notnull, CSSJ date notnull, ZY char(24) null, ZXF number(2) null, BZ varchar(200) null );
-- ------------------------------------------------------ -- 文件已创建 - 星期日-七月-24-2016 -- ------------------------------------------------------ -- ------------------------------------------------------ -- DDL for Table XSB -- ------------------------------------------------------ CREATE TABLE "SCOTT"."XSB" ( "学号" CHAR(6 BYTE), "姓名" CHAR(8 BYTE), "性别" CHAR(2 BYTE) DEFAULT‘男‘, "出生时间" DATE, "专业" CHAR(12 BYTE), "总学分" NUMBER(2,0), "备注" VARCHAR2(200 BYTE) ) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536NEXT1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" ; REM INSERTING into SCOTT.XSB SET DEFINE OFF; Insertinto SCOTT.XSB (学号,姓名,性别,出生时间,专业,总学分,备注) values (‘151114‘,‘周何骏 ‘,‘男‘,to_date(‘25-9月 -98‘,‘DD-MON-RR‘),‘计算机 ‘,90,null); Insertinto SCOTT.XSB (学号,姓名,性别,出生时间,专业,总学分,备注) values (‘151101‘,‘王林 ‘,‘男‘,to_date(‘02-10月-97‘,‘DD-MON-RR‘),‘计算机 ‘,50,null); Insertinto SCOTT.XSB (学号,姓名,性别,出生时间,专业,总学分,备注) values (‘151103‘,‘王燕 ‘,‘女‘,to_date(‘10-6月 -96‘,‘DD-MON-RR‘),‘计算机 ‘,50,null); Insertinto SCOTT.XSB (学号,姓名,性别,出生时间,专业,总学分,备注) values (‘151202‘,‘王林 ‘,‘男‘,to_date(‘29-1月 -96‘,‘DD-MON-RR‘),‘通信工程 ‘,40,‘有一门课不及格,待补考‘); Insertinto SCOTT.XSB (学号,姓名,性别,出生时间,专业,总学分,备注) values (‘151108‘,‘林一帆 ‘,‘男‘,to_date(‘08-5月 -96‘,‘DD-MON-RR‘),‘计算机 ‘,52,‘已提前修完一门课‘); Insertinto SCOTT.XSB (学号,姓名,性别,出生时间,专业,总学分,备注) values (‘151204‘,‘马琳琳 ‘,‘女‘,to_date(‘02-10月-96‘,‘DD-MON-RR‘),‘通信工程 ‘,42,null); -------------------------------------------------------- -- DDL for Index SYS_C0011202 --------------------------------------------------------CREATEUNIQUEINDEX "SCOTT"."SYS_C0011202" ON "SCOTT"."XSB" ("学号") PCTFREE 10 INITRANS 2 MAXTRANS 255COMPUTESTATISTICS STORAGE(INITIAL 65536NEXT1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" ; -------------------------------------------------------- -- Constraints for Table XSB --------------------------------------------------------ALTERTABLE "SCOTT"."XSB" MODIFY ("学号" NOTNULL ENABLE); ALTERTABLE "SCOTT"."XSB" MODIFY ("姓名" NOTNULL ENABLE); ALTERTABLE "SCOTT"."XSB" MODIFY ("性别" NOTNULL ENABLE); ALTERTABLE "SCOTT"."XSB" MODIFY ("出生时间" NOTNULL ENABLE); ALTERTABLE "SCOTT"."XSB" ADDPRIMARYKEY ("学号") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255COMPUTESTATISTICS STORAGE(INITIAL 65536NEXT1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" ENABLE;
原文:http://www.cnblogs.com/rocky-AGE-24/p/5699949.html
内容总结
以上是互联网集市为您收集整理的oracle merge into 的例子全部内容,希望文章能够帮你解决oracle merge into 的例子所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。