MERGE的简单用法和稍复杂用法(9i和10g的异同)
来源:互联网 发布:闲鱼在淘宝哪里 编辑:程序博客网 时间:2024/06/14 00:37
按我的理解,MERGE命令是update和insert的结合。看网上的文章,效率要比单独判断来更新和插入要高。
参考:http://www.linuxidc.com/Linux/2014-07/104695.htm
MERGE INTO 是Oracle 9i新增的语法,在10g时得到补充,用来合并UPDATE和INSERT语句,根据一张表或子查询与另一张表进行连接查询,连接条件匹配就进行UPDATE,不匹配就进行INSERT,这个语法仅需要一次全表扫描就可以完成全部工作,执行效率会比单纯的UPDATE+INSERT高,具体应用可用于表之间的同步。
我理解的语法:
MERGE INTO 目标表
USING 源表/视图/查询
ON 连接条件
--更新可选 WHEN MATCHED THEN
UPDATE SET 目标表.列=源表/视图/查询.列
--10g功能 WHERE 源表/视图/查询.列=条件
--10g功能 DELETE WHERE 源表/视图/查询.列=条件 (删除的是目标表的记录)
--插入可选 WHEN NOT MATCHED THEN
INSERT [列] VALUES(值)
--10g功能 WHERE 源表/视图/查询.列=条件
10g中增强一:条件操作
10g中增强二:删除操作
An optional DELETE WHERE clause can be used to clean up after a merge operation. Only those rows which match both the ON clause and the DELETE WHERE clause are deleted.
注: 匹配时 更新能否使用目标表条件未知,删除能否使用目标表条件未知
不匹配时 插入时使用目标表条件无意义,删除能否使用 源表条件删除源表未知
参考 http://tomszrp.itpub.net/post/11835/263865
http://tomszrp.itpub.net/post/11835/263865
- MERGE的简单用法和稍复杂用法(9i和10g的异同)
- 简单而又复杂的++i和i++
- i++和i++的用法
- ORACLE 10 g的 merge into 用法
- Bitmap和Drawable的用法异同?
- Oracle 10g和Oracle 9i中merge into的区别
- MySQL笔记-\g和\G的用法
- g++和gcc的异同
- SQLSERVER merge的简单用法
- hibernate的merge和limit用法
- String、StringBuffer和StringBuilder的异同和用法
- such as, for example, e. g. , i. e. , etc. 和et al. 的用法
- Scanner 与Console的用法和异同点
- 在C和C++里const的用法异同总结
- 操作符new 和函数malloc()的异同及其用法
- oracle 8i,9i和10g 的区别
- 简单区分“/”和“\”的用法
- oracle merge从9i到10g的增强
- 【C++面向对象】C++的类型成员指针
- Linux命令之"head"
- Unity协程(Coroutine)之yield和迭代原理分析
- java 调用.bat 创建文件
- 第一个作业(计算器)
- MERGE的简单用法和稍复杂用法(9i和10g的异同)
- cocos(一) 点击事件响应--回调函数
- eclipse ctrl+鼠标左键不好使 和eclipse复制粘贴卡
- 怎样从DOS的telnet中退出
- 浅谈点检在企业设备管理中的运用
- Mybatis使用pageHelper分页插件原理
- OutOfMemoryError(内存溢出)
- ViewPager嵌套(内层ViewPager直接实现类继承了兼容ListView滑动的父类)
- 基本的 HTML 学习笔记