Oracle中Merge into的用法实例讲解
最近在做一个需求,就是涉及到表的问题,前端传过来一条数据,根据主键,查询数据库,如果不存在,那么久插入到数据库中一条,如果存在的话,就是以主键的方式,对数据库中的数据,进行更新。
拿到这个需求的时候,想的就是直接用if…else…代码进行判断,首先就是查询,查到了记录,就更新,没有查到,就进行数据的直接插入。
这种方法,本来是没有什么问题的,毕竟都能够完成要求,只是,因为数据库中这张表的记录,实在是太大,通过代码的方式,进行查询判断的话,实在是太消耗时间了,后来查询了一下,这才是找到Oracle数据库的merge into的方法完成。
首先,来看看merge into的基本语法(Oracle 9i引入的功能):
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 = col_val2 WHEN NOT MATCHED THEN INSERT (column_list) VALUES (column_values);
可能对于这个语法,不是太了解,那么咱们现在看一个简单的例子:
merge into Students st using newStudents nst on (st.id = nst.id) when matched then update set st.name = nst.name when not matched then insert values(nst.id, nst.name, nst.sex)
这段sql的意思,就是代表着新的学生的id已经存在了数据库中的话,就是 when matched的时候,就执行update操作;when not matched的时候,执行插入操作。
相比起用代码的判断再执行更新或者插入操作,sql语句的执行,在效率上面来说,无疑是得到了一定的提高,所以使用merge into,还是一个不错的选择。
因为对数据库,不太熟悉,没有在第一时间,想到这种操作,这次用到了,也算是学习了,记录一下,以后说不定就是会有用到的时候。
Oracle中Merge into的用法实例讲解的更多相关文章
- oracle中 merge into 的用法
很多时候我们需要通过筛选条件同时对表进行 更新,插入,删除 等操作.这样如果我们单一的去操作表会显得很麻烦,下面会说到这个merge into 的用法会极大的优化我们操作表的时间和代码量. 举例,先 ...
- Oracle中CASE WHEN的用法实例
实例演示: (1)查询表users中的数据. select u.id,u.realname,U.SEX from users u; 查询结果如下 ID REALNAME SEX 1 10082 ...
- Oracle 中MERGE语句的用法
原文章出处(http://blog.csdn.net/lichkui/article/details/4306299) MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语 ...
- Oracle中merge into的使用
http://blog.csdn.net/yuzhic/article/details/1896878 http://blog.csdn.net/macle2010/article/details/5 ...
- Oracle中merge into的使用 (转)
该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据. ORACLE 9i 中,使用此命令必须同时指定UPDATE 和INSERT 关键词,ORACLE 10g 做了如下改动. 1.ins ...
- Oracle中merge into的使用 (转)
http://blog.csdn.net/yuzhic/article/details/1896878 http://blog.csdn.net/macle2010/article/details/5 ...
- Oracle中rownum的基本用法
Oracle中rownum的基本用法 对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且r ...
- Oracle 中 CONTAINS 函数的用法
Oracle 中 CONTAINS 函数的用法 1. 查询住址在北京的学生 SELECT student_id,student_name FROM students WHERE CONTAINS( a ...
- 基于Python中numpy数组的合并实例讲解
基于Python中numpy数组的合并实例讲解 下面小编就为大家分享一篇基于Python中numpy数组的合并实例讲解,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 Python中n ...
随机推荐
- 《Think in Java》17~18
chapter 17 容器深入研究 填充容器 package cn.test; import java.util.ArrayList; import java.util.Collections; im ...
- [Flex] 组件Tree系列 —— 利用firstVisibleItem属性,设置或取得第一个显示节点
mxml: <?xml version="1.0" encoding="utf-8"?> <!--功能描述: 利用firstVisibleIt ...
- ArchLinux 下 VirtualBox 增强设置
0.前言: 其实这个标题本来不是我的本意,因为我的ArchLinux开机启动报错了!. 原本是一个服务报错,解决就行了对不对.后来我各种搜索大法发现了一个常识错误. 1.报错: 2.过程(赶时间的朋友 ...
- CentOS 下安装 Hexo 博客
前言: 之前一直使用Wordpress架构作为博客网站架构,但是现在频频爆出漏洞.实在是不敢用也不想用了,然后群里面有小伙伴用的是 Github 搭建 Hexo 架构博客.就写了这个教程,给自己做个参 ...
- TCP的成块数据流
TCP使用滑动窗口协议的另一种方式来实现流量控制.该协议允许发送方在停止并等待确认之前可以连续发送多个分组.由于发送方不必每发送一个分组就停下来等确认,因此该协议可以加速数据的传输. 一.滑动窗口  ...
- 高德地图API获取天气
1.建立行政区规划清单表 use edw; drop table if exists dim_prov_city_adcode; create table if not exists dim_prov ...
- nginx windows 安装为服务.
安装Nginx 下载windows版nginx (http://nginx.org/download/nginx-1.10.0.zip),之后解压到需要放置的位置(D:\xampp\nginx) 将N ...
- python学习,day1作业:设计一个三级菜单
设计一个三级菜单,要求能够下钻,能够推出,比较笨的方法 # coding=utf-8 # Author: RyAn Bi data = { 'beijing':{ 'changping':{ 'wud ...
- Entity Framework添加记录时获取自增ID值
与Entity Framework相伴的日子痛并快乐着.今天和大家分享一下一个快乐,两个痛苦. 先说快乐的吧.Entity Framework在将数据插入数据库时,如果主键字段是自增标识列,会将该自增 ...
- HTML基础信息笔记
HTML 是什么 HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 标签(tag) HTML 标签是由尖括号包围的关键词,比如 <html> ...