insert ,update 以及merge 的使用
- 本次将用到的几个表,以及字段
> emp表- empno, ename,job,mgr,hiredate,sal,comm,deptno
- > dept表
- deptno,dname,loc
- > emp_bonus表
- empno, received,type
>new_sal表
demptno,sal
- /*----------------- INSERT 的使用 --------------------------------*/
- --1. 插入到一个表
- insert into dept
- (deptno,dname,loc)
- vaules(1,"A","C"),
- (2,"V","T")
- insert into dept
- values(1,"lily","NEW YORK")
- -- 2. 从一个表向另外一个表复制行
- insert into dept_east
- (deptno,dname,loc)
- select deptno,
- dname,
- loc
- from dept
- where loc in ("NEW YORK")
- -- 3. 复制表定义(只复制表的结构,没有数据)
- -- In Mysql
- create table dept_2 like dept
- --In MSSQL or oracle
- select *
- into dept_2
- from dept
- where 1=0 /*没有这个限制条件将连数据一起复制*/
- create table dept_2
- as
- select *
- from dept
- where 1=0
- --4. 一次向多个表中插入记录
- --In oracle
- insert all
- when loc in ("NEW YORK") then
- into dept_east(dept_no,dname,loc)
- vaules(dept_no,dname,loc)
- when loc in ("CHICAGO") then
- into dept_mid(dept_no,dname,loc)
- vaules(dept_no,dname,loc)
- else
- into dept_west(dept_no,dname,loc)
- vaules(dept_no,dname,loc)
- select dept_no,dname,loc
- from dept
- /*----------------------update 的使用------------------------------------*/
- --5. 在表中更新记录
- update emp
- set sal=sal*1.1
- where deptno=20
- update emp
- set sal=sal*1.2
- where empno in
- (select empno from emp_bonus)
- update emp
- set sal=sal*1.2
- where exists(
- select null
- from emp_bonus as eb
- where emp.empno=eb.empno
- )
- -- 6. 用其他表更新
- update emp
- set sal=ns.sal
- comm=ns.sal/2
- from emp e,
- new_sal ns
- where ns.deptno=e.deptno
- /*-----------------------------merge 函数的使用------------------------------------ */
/*- -- 简单来说就是 : 如果记录存在则更新,不存在则插入
- >emp_commission 表
- empno,sal,comm,deptno
- >emp表
- empno, ename,job,mgr,hiredate,sal,comm,deptno
- 1. 如果emp_commission 表员工也存在于emp表中,那么将emp_commission 的提成(comm)更新为1000
- 对于更新到1000的员工,SAL少于2000则删除
- 2. 否则,从emp表取出empno,sal,comm,deptno,插入到emp_commission
- */
- -- in oracle, MSSQL
- merge into emp_commission ec
- using (select * from emp) emp
- on(ec.empno=emp.empno)
- when matched then
- update set ec.comm=1000
- delete where(sal<2000)
- when not matched then
- insert (ec.empno,ec.name,ec.comm)
- values(emp.empno,emp.name,emp.comm)
insert ,update 以及merge 的使用的更多相关文章
- 《oracle每天一练》Merge Into 语句代替Insert/Update在Oracle中的应用实战
转载自窃破天道 动机: 想在Oracle中用一条SQL语句直接进行Insert/Update的操作. 说明: 在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也 ...
- 使用Merge Into 语句实现 Insert/Update
网址: http://www.eygle.com/digest/2009/01/merge_into_insertupdate.html 动机: 想在Oracle中用一条SQL语句直接进行Insert ...
- Merge Into 语句代替Insert/Update在Oracle中的应用实战
动机: 想在Oracle中用一条SQL语句直接进行Insert/Update的操作. 说明: 在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也就是说当存在记录 ...
- Oracle Merge Into Insert/Update
出自:http://blog.csdn.net/yuzhic/article/details/1896878 动机: 想在Oracle中用一条SQL语句直接进行Insert/Update的操作. 说明 ...
- Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用 引自http://www.blogjava.net/TiGERTiAN/archive/2008/10/25/236519.html
Hibernate的对象有3种状态,分别为:瞬时态(Transient). 持久态(Persistent).脱管态(Detached).处于持久态的对象也称为PO(Persistence Object ...
- hibernate的各种保存方式的区别 (save,persist,update,saveOrUpdte,merge,flush,lock)等
hibernate的保存hibernate对于对象的保存提供了太多的方法,他们之间有很多不同,这里细说一下,以便区别:一.预备知识:在所有之前,说明一下,对于hibernate,它的对象有三种状态,t ...
- Hibernate各保存方法之间的差 (save,persist,update,saveOrUpdte,merge,flush,lock)等一下
hibernate保存 hibernate要保存的目的是提供一个方法,多.它们之间有许多不同之处,点击此处详细说明.使得差: 一.预赛: 在所有.阐释.供hibernate,,transient.p ...
- Hibernate update 和 merge 、saveOrUpdate的区别
this.getSession().update(obj); this.getSession().merge(obj); this.getSession().saveOrUpdate(obj); 1. ...
- Oracle 数据库实现数据更新:update、merge
工作中遇到的数据更新,学习记录. 1.使用update进行数据更新 1)最简单的更新 update tablea a set a.price=1.00 2)带条件的数据更新 update tablea ...
随机推荐
- apr-util的安装
下载软件 下载链接: http://pan.baidu.com/s/1o6sOwgM http://pan.baidu.com/s/1hqIdcA4 ########安装apr######### ta ...
- 使用webpack、babel、react、antdesign配置单页面应用开发环境
这是Webpack+React系列配置过程记录的第一篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...
- POJ [P3660] Cow Contest
传递闭包经典应用 奶牛的名次能确定当且仅当在它前面的牛数+在他后面的牛数==n-1 在他前面和后面的牛数可以转化成求完传递闭包后的出度和入度 #include <iostream> #in ...
- BZOJ 4195: [Noi2015]程序自动分析 [并查集 离散化 | 种类并查集WA]
题意: 给出若干相等和不等关系,判断是否可行 woc NOI考这么傻逼的题飞快打了一个种类并查集交上了然后爆零... 发现相等和不等看错了异或一下再叫woc90分 然后发现md$a \neq b, a ...
- webrtc底层一对一连接过程探索(三)
一.连接过程继续解读-----fun33-fun35解读 完整代码如下: //fun33-37 console.error('fun35-37==>2332==>2332'); var q ...
- Redis进阶实践之十一 Redis的Cluster集群搭建
一.引言 本文档只对Redis的Cluster集群做简单的介绍,并没有对分布式系统的详细概念做深入的探讨.本文只是提供了有关如何设置集群.测试和操作集群的说明,而不涉及Redis集群规范中涵 ...
- Java DecimalFormat 用法
Java 提供 DecimalFormat 类,帮你用最快的速度将数字格式化为你需要的样子.下面是一个例子: importjava.text.DecimalFormat; publicclassTes ...
- .NET Core使用swagger进行API接口文档管理
一.问题背景 随着技术的发展,现在的开发模式已经更多的转向了前后端分离的模式,在前后端开发的过程中,联系的方式也变成了API接口,但是目前项目中对于API的管理很多时候还是通过手工编写文档,每次的需求 ...
- shell编程值之正则表达式与字符截取(6)
正则表达式与通配符 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式 通配符用来匹配符合条件的文件名,通配符是完全匹配.ls.find.cp ...
- Redis Sentinel安装与部署,实现redis的高可用
前言 对于生产环境,高可用是避免不了要面对的问题,无论什么环境.服务,只要用于生产,就需要满足高可用:此文针对的是redis的高可用. 接下来会有系列文章,该系列是对spring-session实现分 ...