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 ...
随机推荐
- 02_Python基本数据类型
一.什么是数据 数据是描述客观事物的字符(比如95,不同的语义可表示成绩或体重),是计算机可以操作的对象,能够被计算机识别并输入给计算机处理的符号集合. 数据不仅仅包含整形,还包括图像.音乐.视频等非 ...
- 基于redis的cas实现
cas是我们常用的一种解决并发问题的手段,小到CPU指令集,大到分布式存储,都能看到cas的影子.本文假定你已经充分理解一般的cas方案,如果你还不知道cas是什么,请自行百度 我们在进行关系型数据库 ...
- python学习交流 - 内置函数使用方法和应用举例
内置函数 python提供了68个内置函数,在使用过程中用户不再需要定义函数来实现内置函数支持的功能.更重要的是内置函数的算法是经过python作者优化的,并且部分是使用c语言实现,通常来说使用内置函 ...
- Oracle的一些简单语句
drop后的表被放在回收站(user_recyclebin)里,而不是直接删除掉.这样,回收站里的表信息就可以被恢复,或彻底清除. 1.通过查询回收站user_recyclebin获取被删除的表信息, ...
- Java设计模式——装饰模式
转载自:http://blog.csdn.net/xu__cg/article/details/53024490 抽象构件 public interface CarInterface { void m ...
- BZOJ 3512: DZY Loves Math IV [杜教筛]
3512: DZY Loves Math IV 题意:求\(\sum_{i=1}^n \sum_{j=1}^m \varphi(ij)\),\(n \le 10^5, m \le 10^9\) n较小 ...
- SPSS 批量添加标签
- Orleans之EventSourcing
Orleans之EventSourcing 这是Orleans系列文章中的一篇.首篇文章在此 引入: 如果没有意外,我再这篇文章中用ES代替EventSourcing,如果碰到"事件回溯&q ...
- CentOS安装JDK 8
准备工作 首先,更新包: yum update 检查服务器上是否已安装旧版本的Java: java -version 如果有旧版本的Java则移除: yum remove java-1.6.0-ope ...
- 获取对象属性类型、属性名称、属性值的研究:反射和JEXL解析引擎
同步发布:http://www.yuanrengu.com/index.php/20170511.html 先简单介绍下反射的概念:java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所 ...