【转载】oracle更新语法
oracle更新语法:
1.一般语法
update tab set col = .... [where ...] =后可以有子查询,但是必须对于tab的每一列返回唯一一行与之对应,where是需要更新的表,部分更新必须加,否则相关子查询的更新会把没有匹配的更新为null,如
update tab a set a.col=(select b.col from b where a.id=b.id) where exists (select 1 from b where a.id=b.id) 类似地写了多遍
2.改进语法merge
merge into tab
using (表|视图|子查询等) --子查询需要加括号 on (条件)
when match then
do update
when no match then
do insert
insert语法和update语法有所不同,详细参考文档,10g还支持update,insert的有条件更新和插入,支持update的delete where,支持只有update或insert的
不能修改using里的关联列,同样,必须每一行有唯一与之对应的
上面两种语法如果找不到唯一对应的,需要改进语句,比如加rownum=1
3.update inline view的用法
update (select ...........关联查询) set 目标=源
如 update(select a.name,b.name from a,b where a.id=b.id) set a.name=b.name;
需要unique建保证唯一对应,比如上面的必须要b.id有唯一键,也就是preserved key,比如唯一索引什么的都可以,11g之前可以用hint: bypass_ujvc,这样不需要唯一键,但是可能有问题,一对多会更新多次,11g这个hint失效
delete (select ....) 也可以,有很多要求,可以看sql文档,insert (select ...)限制更多
第3种方法来源于可更新的视图
oracle更新基本有3种sql写法,后面两种往往优化中会使用到,特别第一种的更新关联子查询中源表不走索引,那么更新很多,相当于 nested loop,肯定慢,而且还有个where过滤,多次访问源表
【转载】oracle更新语法的更多相关文章
- ORACLE| ORACLE基础语法汇总
创 ORACLE| ORACLE基础语法汇总 2018-07-18 16:47:34 YvesHe 阅读数 9141更多 分类专栏: [数据库] 版权声明:本文为博主原创文章,遵循CC 4.0 B ...
- Oracle存储过程语法
原文链接:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 ...
- [转]Oracle 存储过程语法
转自:http://www.cnblogs.com/chuncn/archive/2009/04/29/1381282.html 存储过程 1 CREATE OR REPLACE PROCEDURE ...
- [SQL] Oracle基础语法
1.安装: oracle11g server 这里的口令为sys和system的密码.(10版本以前默认用户会有系统默认密码.) Oracle 11g 默认用户名和密码 oracle11g clien ...
- ORACLE基本语法
ORACLE基本语法 一.ORACLE的启动和关闭1.在单机环境下要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下su - oraclea.启动ORACLE系统oracle>s ...
- MySQL与Oracle的语法区别详细对比
MySQL与Oracle的语法区别详细对比 Oracle和mysql的一些简单命令对比在本文中将会涉及到很多的实例,感兴趣的你不妨学习一下,就当巩固自己的知识了 Oracle和mysql的一些简单 ...
- (转载)Oracle procedure 基本语法
转自:http://www.cnblogs.com/wolfplan/p/4004624.html 关键字: oracle 存储过程 1.基本结构 CREATE OR REPLACE PROCEDUR ...
- [转载]Oracle触发器详解
转载自http://blog.csdn.net/indexman/article/details/8023740/ 触发器是许多关系数据库系统都提供的一项技术.在oracle系统里,触发器类似过程和函 ...
- Oracle常用语法
Oracle常用语句语法汇总 Oracle10g 1 第一章Oracle命令 a) 系统管理员连接 conn */* as sysdba b) 查询当前用户 show user c) 创建新用户 cr ...
随机推荐
- python开发_tkinter_图片操作
在java的swing中,我们可以找到一些有关图片的操作,对于python的tkinter类似,也有对于图片的相关操作 下面是我做的demo 运行效果: ======================= ...
- ZeptoLab Code Rush 2015 A. King of Thieves 暴力
A. King of Thieves Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/526/pr ...
- opencv hog算子
梯度直方图特征(HOG) 是一种对图像局部重叠区域的密集型描述符, 它通过计算局部区域的梯度方向直方图来构成特征.Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功 ...
- css3实现卷页效果http://jingyan.baidu.com/article/73c3ce2806aef9e50343d93a.html
css3实现卷页效果 | 浏览:31 | 更新:2015-01-08 13:30 1 2 3 4 5 6 7 分步阅读 百度经验:jingyan.baidu.com 页面上经常会看到鼠标移动上去,对象 ...
- 使用Chrome快速实现数据的抓取(二)——协议
在前面的文章简单的介绍了一下Chrome调试模式的启动方式,但前面的API只能做到简单的打开,关闭标签操作,当我们需要对某个标签页进行详细的操作时,则需要用到页面管理API.首先我们还是来回顾下获取页 ...
- erlang 中文社区 下载
http://www.cnerlang.com/download/ erlang 下载 http://www.blogjava.net/killme2008/archive/2007/06/1 ...
- java基础学习总结——对象转型
一.对象转型介绍 对象转型分为两种:一种叫向上转型(父类对象的引用或者叫基类对象的引用指向子类对象,这就是向上转型),另一种叫向下转型.转型的意思是:如把float类型转成int类型,把double类 ...
- 用Qemu模拟vexpress-a9 (七) --- 嵌入式设备上安装telnet服务
转载: http://blog.csdn.net/liuqz2009/article/details/6921789 Telnet协议是登陆远程网 络主机最简单的方法之一,只是安全性非常低.对targ ...
- pytest文档15-使用自定义标记mark
前言 pytest可以支持自定义标记,自定义标记可以把一个web项目划分多个模块,然后指定模块名称执行.app自动化的时候,如果想android和ios公用一套代码时, 也可以使用标记功能,标明哪些是 ...
- shader内置变量
内置变量都在UnityShaderVariables.cginc文件中声明 变换矩阵 All these matrices arefloat4x4 type. Name Value UNITY_MAT ...