FREE教程
目录
  • 主页
  • Oracle教程
  • redis教程
  • hadoop
  • ODI教程
  • BIEE教程
Oracle基础教程
Oracle基础教程 Oracle介绍 Oracle安装 Oracle客户端工具 Oracle服务 Oracle用户 SQL语句介绍 案例所需表结构 Oracle建表(create table) Oracle查询(select) Oracle插入(insert into) Oracle更新(update) Oracle删除(delete) Oracle运算符 Oracle字符串连接符|| Oracle DISTINCT Oracle 条件查询 =、IN、LIKE、BETWEEN...AND Oracle集合运算 Oracle连接查询 Oracle的伪列 Oracle 函数 Oracle字符型函数 Oracle日期型函数 Oracle数值型函数 Oracle转换函数 Oracle聚合函数 Oracle子查询 Oracle synonym 同义词 Oracle序列 Oracle视图 Oracle索引 Oracle分区详解和创建 Oracle如何在分区表上创建索引 oracle merge into命令 oracle物化视图 oracle分析函数_开窗函数详解 Oracle行转列(PIVOT) Oracle列转行_unpivot Oracle创建物化视图
分类导航
Oracle基础教程 PL/SQL教程 Oracle管理 Oracle备份和恢复 Oracle RAC Oracle优化 Oracle技术 redis基础教程 hadoop教程
    首页->Oracle教程->Oracle基础教程->oracle merge into命令
Oracle如何在分区表上创建索引
oracle物化视图

oracle merge into命令

Oracle merge into命令,顾名思义就是“有则更新,无则插入”,这个也是merge into 命令的核心思想,在实际开发过程中,我们会经常遇到这种通过两表互相关联匹配更新其中一个表的某些字段的业务,有时还要处理不匹配的情况下的业务。这个时候你会发现随着表的数据量增加,类似这种业务场景的执行效率会比较慢,那是因为你需要多次重复查询两表中的数据,而通过merge into命令,只需要一次关联即可完成“有则更新,无则插入”的业务场景,大大提高语句的执行效率。

merge into命令的语法结构如下:

merge into A 
using B 
on (A.id = B.id)
when matched then
  update set A.col=B.col
when not matched then
  insert 语句;

语法解析:利用B表通过A.id=B.id的条件来匹配A表,当满足条件时,可以对A表进行更新,当不满足条件时,可以利用inert语句插入相关数据。

例子:利用merge into命令从学生表(stuinfo)更新学生备份表(stuinfo_2018)的年龄,当备份表中找不到学生信息时插入新的学生信息,先看下两张表的数据:

1559657319134_148449.png

1559657356223_997813.png

具体代码如下:

merge into student.stuinfo_2018 A --
using student.stuinfo B 
on (A.stuid = B.stuid)
when matched then
  update set A.age=B.age
when not matched then
  insert (a.STUID,a.STUNAME,a.SEX,a.AGE,a.CLASSNO,a.STUADDRESS,a.GRADE,a.ENROLDATE,a.IDNUMBER
) values(b.STUID,b.STUNAME,b.SEX,b.AGE,b.CLASSNO,b.STUADDRESS,b.GRADE,b.ENROLDATE,b.IDNUMBER);

再看下备份表的数据,发现已经按照我们意愿添加了新的学生和变更了学生的年龄。如下:

1559657843342_637185.png

Oracle如何在分区表上创建索引
oracle物化视图
关于我们 | 免责声明 | Copyright ? 2018 FREE教程 | 备案号:闽ICP备18020855号-1
公安备案

闽公网安备 35020602001245号