一、标准update语法(常用、速度可能最慢)

当更新的表示单个或者被更新的字段不需要关联表带过来,此法是最好的选择。

update  a
set a.c2= (select b.c2from  b where a.c1=b.c1)
where exists   (select 1 from   b where a.c1=b.c1)

二、内联视图更新(关联主键字段,速度较快)

inline view更新法就是更新一个临时建立的视图。

方案:更新一个临时建立的视图。要求B表的主键字段必须在where条件中,并且是以=号来关联被更新表。

update (select a.c2 as ac2,b.c2 as bc2 from a, b where a.c1=b.c1 and a.c3=’2011’) as M
set ac2=bc2

三、merge更新法 (关联字段非主键时,速度较快)

merge是oracle特有的语句,语法如下:

MERGE INTO table_name alias1 --主表,即需要被修改的表
USING (table | view | sub_query) alias2 --从表,即来源表
ON (join condition) --连接条件
WHEN MATCHED THEN --在匹配的记录中进行UPDATE table_name SET col1 = col_val1, col2 = col2_val --更改主表信息
WHEN NOT MATCHED THEN --在不匹配的情况下,筛选从表记录插入到主表【可选】INSERT (column_list) VALUES (column_values);

原理分析:在alias2中Select出来的数据,每一条都跟alias1进行 ON (join condition)的比较,如果匹配,就对alias1表进行更新的操作(Update),如果不匹配,就对alias1表进行插入操作(Insert)。

执行merge不会返回影响的行数,最多只能两个表关联。

merge into a
using b on (a.c1=b.c1 and a.c3=’2011’)when matched then
update a.c2=b.c2

四、快速游标更新法(复杂逻辑时,效率很高)

语法:

begin
for cr in (查询语句) loop  --循环
update table_name set ...   --更新语句(根据查询出来的结果集合)
end loop;  --结束循环
end;
beginfor cur in (select a.rowid  ,b.c2 from  a, b where a.c1=b.c1 and a.c3=’2011’ )  loopUPDATE a  set c2=cur.c2  where rowid=cur.rowid;end loop;
end;

转载 :https://www.cnblogs.com/springsnow/p/9399281.html

Oracle Update语句的几种方式相关推荐

  1. Oracle update语句用法

    一.更新数据 1.更新一条数据 update table_name set column_name=value where somestations; 注意: ①不加where限制条件会更新全部数据 ...

  2. 批量插入数据库语句java_java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码)...

    java相关:MyBatis批量插入数据到Oracle数据库中的两种方式(实例代码) 发布于 2020-7-22| 复制链接 本文通过实例代码给大家分享了MyBatis批量插入数据到Oracle数据库 ...

  3. oracle迁移几种方式,Oracle数据库迁移的几种方式

    Oracle数据库迁移的几种方式 我们常常需要对数据进行迁移,迁移到更性能配置更高级的主机OS上.迁移到远程的机房.迁移到不同的平台下,以下介绍ORACLE的几种数据库迁移方案: 一.exp/imp逻 ...

  4. Oracle UPDATE 语句

    我估计,只要是知道SQL 语句的人都会用UPDATE 语句,可是大部分人不知道UPDATE 语句有两种写法,首先,考虑下面的情况: CREATE TABLE STUDENT ( ID NUMBER(1 ...

  5. oracle update语句提交,Oracle UPDATE语句使用示例

    本文概述 在Oracle中, UPDATE语句用于更新表中的现有记录.你可以通过两种方式更新表. 传统更新表方法 句法: UPDATE table SET column1 = expression1, ...

  6. perl mysql dml_MySQL Connector执行SQL语句的三种方式

    描述 当我们需要在Java程序中与数据库进行交互,可能首先想到的是使用某个ORM框架,因为ORM框架封装了一些实现细节,在使用上非常方便,并且一定程度上可以提升代码稳定性. 在ORM框架中,都会依赖M ...

  7. Oracle中drop_column的几种方式和风险

    墨墨导读:你是否足够了解在生产环境上执行drop column操作或者类似的DDL操作有多危险? 生产环境的一张大表上执行了一个drop column,导致业务停止运行几个小时,这样的事情发生任何一位 ...

  8. Oracle删除数据的三种方式

    Oracle删除数据的三种方法 删除表(记录和结构)的语句delete--truncate--drop drop命令 drop table 表名: 例如:删除学生表(student) drop tab ...

  9. oracle 转移是什么意思,Oracle数据库迁移的几种方式以及一些坑

    最近做了个oracle数据库迁移,有几种方式,我来列举几种:1.exp/imp         对象导出 2.expdp/impdp     数据泵导入导出 3.plsql的sql导出 4.navic ...

  10. oracle游标遍历的三种方式

    第一种:loop declarecursor c1 isselect sno,cno,grade from sc;v_sno sc.sno%type;v_cno sc.cno%type;v_grade ...

最新文章

  1. VC6.0 使用小结--让开发更加快捷的vc插件
  2. 自然语言处理期末复习(7)平行文本与机器翻译
  3. linux查找文件find
  4. java swing form_在java swing中创建表单最简单的方法是什么?
  5. 对Bootloader(引导加载程序)的几点理解
  6. Vue+Element导入导出Excel
  7. 笑谈ArcToolbox (5) 非我族类
  8. 华为交换机 tagged 与 untagged 的关系、H5C 开web管理、telnet管理
  9. 计算机怎么开启tftp服务器,Win7系统如何开启TFTP服务器?
  10. PHP搭建IDC网站,SWAPIDC系统完整移除云平台修改版 个人搭建idc空间商网站平台
  11. Canvas 输出位图
  12. 软件项目管理测试文档,软件项目管理具体方法体系示例
  13. 什么是tomcat?tomcat是干什么用的?下面带你们认识tomcat!通俗易懂!
  14. HTML——背景颜色设置
  15. 笔记本wifi共享出来能够连接但是没有网速
  16. matlab取第一列元素的值,MATLAB中怎么从excel中读取第一列的数据?(2010版office)【】...
  17. Java | PTA练习:伪随机数题解
  18. 荣耀x10和荣耀20pro哪个好?参数配置对比介绍
  19. ISO8583报文协议
  20. redis第三方软件medis

热门文章

  1. 卡巴斯基终于也免费了:功能太鸡肋
  2. 【H∞控制】H无穷控制器的matlab仿真
  3. php去掉省市区,省市区后面的字符隐藏的php代码
  4. 伺服步进控制程序西门子200PLC和昆仑通泰MCGS触摸屏控制伺服步进电机程序例子题】
  5. Arduino米思齐Mixly---旋转可调灯
  6. ISO27000系列标准
  7. android 截图root权限,为什么 Android 截屏需要 root 权限
  8. 同步回调与异步回调区别
  9. CRC校验工具----CRC8校验 (x8+x2+x+1)
  10. 前端主流IDE快捷语法