oracle merge into 的例子
内容来自 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) not null primary key,
xM char(8) not null,
XB char(2) not null,
CSSJ date not null,
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 65536 NEXT 1048576 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;
Insert into SCOTT.XSB (学号,姓名,性别,出生时间,专业,总学分,备注) values ('','周何骏 ','男',to_date('25-9月 -98','DD-MON-RR'),'计算机 ',90,null);
Insert into SCOTT.XSB (学号,姓名,性别,出生时间,专业,总学分,备注) values ('','王林 ','男',to_date('02-10月-97','DD-MON-RR'),'计算机 ',50,null);
Insert into SCOTT.XSB (学号,姓名,性别,出生时间,专业,总学分,备注) values ('','王燕 ','女',to_date('10-6月 -96','DD-MON-RR'),'计算机 ',50,null);
Insert into SCOTT.XSB (学号,姓名,性别,出生时间,专业,总学分,备注) values ('','王林 ','男',to_date('29-1月 -96','DD-MON-RR'),'通信工程 ',40,'有一门课不及格,待补考');
Insert into SCOTT.XSB (学号,姓名,性别,出生时间,专业,总学分,备注) values ('','林一帆 ','男',to_date('08-5月 -96','DD-MON-RR'),'计算机 ',52,'已提前修完一门课');
Insert into SCOTT.XSB (学号,姓名,性别,出生时间,专业,总学分,备注) values ('','马琳琳 ','女',to_date('02-10月-96','DD-MON-RR'),'通信工程 ',42,null);
--------------------------------------------------------
-- DDL for Index SYS_C0011202
-------------------------------------------------------- CREATE UNIQUE INDEX "SCOTT"."SYS_C0011202" ON "SCOTT"."XSB" ("学号")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 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
-------------------------------------------------------- ALTER TABLE "SCOTT"."XSB" MODIFY ("学号" NOT NULL ENABLE); ALTER TABLE "SCOTT"."XSB" MODIFY ("姓名" NOT NULL ENABLE); ALTER TABLE "SCOTT"."XSB" MODIFY ("性别" NOT NULL ENABLE); ALTER TABLE "SCOTT"."XSB" MODIFY ("出生时间" NOT NULL ENABLE); ALTER TABLE "SCOTT"."XSB" ADD PRIMARY KEY ("学号")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ENABLE;
oracle merge into 的例子的更多相关文章
- Oracle Merge into 详细介绍
Oracle Merge into 详细介绍 /*Merge into 详细介绍MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句.通过MERGE语句,根据一张表或子查 ...
- Oracle merge
oracle merge 語法:
- Oracle merge合并更新函数
本博客介绍一下Oracle merge合并函数,业务场景:新增数据的时候要先查询数据库是否已经有改数据,有数据就更新数据,没数据才新增数据,这是很常见的业务场景,如果是用Oracle数据库的话,其实直 ...
- ORACLE MERGE INTO UPDATE DELETE 用法
ORACLE MERGE INTO UPDATE DELETE 用法 使用该MERGE语句从一个或多个源中选择行以进行更新或插入表或视图.您可以指定条件以确定是更新还是插入目标表或视图. 此语句是组合 ...
- oracle merge into与sqlserver merge into 比较
merge into: 在两个表之间,根据与源表联接的结果,对目标表执行插入.更新或删除操作. Oracle在9i引入了merge into命令,SQL Server 2008也引入merge int ...
- oracle regexp_like介绍和例子
oracle regexp_like介绍和例子 学习了:http://www.cnblogs.com/einyboy/archive/2012/08/01/2617606.html ORACLE中的支 ...
- Oracle merge into的优势
简介 Oracle merge into命令,顾名思义就是“有则更新,无则插入”,这个也是merge into 命令的核心思想,在实际开发过程中,我们会经常遇到这种通过两表互相关联匹配更新其中一个表的 ...
- Oracle—merge into语法
oracle的merge into语法,在这种情况下: 基于某些字段,存在就更新,不存在就插入: 不需要先去判断一下记录是否存在,直接使用merge into merge into 语法: MERGE ...
- Oracle Merge Into 用法详解
原文:http://blog.csdn.net/EdgenHuang/article/details/3587912 Oracle9i引入了MERGE命令,你能够在一个SQL语句中对一个表同时执行in ...
随机推荐
- Java Web开发Tomcat中三种部署项目的方法
第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加: <Context path="/hello" docBase ...
- Mysql LIMIT如何正确对其进行优化
Mysql LIMIT如何正确对其进行优化 2010-05-17 17:09 佚名 博客园 字号:T | T 我们今天主要和大家分享的是Mysql LIMIT简单介绍以及如何进行优化的相关内容的描述, ...
- github上传
创建全局的name和email 1.创建ssh(使用命令)$ssh-keygen -t rsa -C xxxxx@gmail.com(注册github时的email)2.在github中添加ssh 登 ...
- Ace - Responsive Admin Template
Ace简介: Ace 是一个轻量.功能丰富.HTML5.响应式.支持手机及平板电脑上浏览的管理后台模板,基于CSS框架Bootstrap制作,Bootstrap版本更新至 3.0,Ace – Resp ...
- .NET技术在中国为什么老被人嫌弃
这个话题有点自黑的意思,我从.NET 1.1开始玩.NET,到现在已经11年了,我是看着.NET成长起来,在中国壮大的,也见证了近几年.NET被各种嫌弃,其实说到底还是中国的架构师太少,我是说真正懂行 ...
- [HDOJ5439]Aggregated Counting(乱搞)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5439 题意:按规则构造一个数列a a(1)=1 a(2)=2 a(2)=2 -------> 写两个 ...
- 服务链(Service Chaining,or Service Function Chaining,SFC,功能服务链)
Software-configured service chaining provides the capability to dynamically include best-of-b ...
- 跨浏览器图像灰度(grayscale)解决方案
<style type="text/css"> .gray { -webkit-filter: grayscale(100%); /* CSS3 filter方式,we ...
- impdp导入时卡死分析方法
来源于: http://blog.csdn.net/yfleng2002/article/details/7973997 http://www.cnblogs.com/songling/archive ...
- 开发错误记录5-Failed to sync Gradle project ‘HideTitleDemo’
今天用Android Studio2.0创建的项目,到Android Studio1.5打开,直接报错: 意思就是内存空间不够,要在gradle.properties 文件中进行内存设置,因为是从高版 ...