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 ...
随机推荐
- bootstrap select2 使用简单介绍
1. 基本属性配置: $("#select2-id").select2({ templateResult : formatState, // 列表带图片 templateSelec ...
- python3中time模块的用法及说明
python中,导入time模块使用的命令是 import time 可以使用以下命令查看time模块内置的能够使用的方法: dir(time) 可以使用以下命令查看time模块中每个内置方法的说明: ...
- bash启动加载过程
- xBIM 日志操作
目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 x ...
- 代理(Proxy)模式
代理模式的类图如下所示: 客户端想调用的是RealSubject,由于某种考虑或原因,只能直接访问到ProxySubject,再由ProxySubject去调用RealSubject,这就完成了一次代 ...
- C++ 关于字符串总结(持续更新)
1.find_first_of size_type find_first_of( const basic_string &str, size_type index = 0 ); size_ty ...
- 使用VS Code开发asp.net core (上)
本文是基于Windows10的. 下载地址: https://code.visualstudio.com/ insider 版下载地址: https://code.visualstudio.com/i ...
- window.open()被部分浏览器拦截问题
下面代码一切从简,大家理解即可 一.原因:1.因为在chrome的安全机制里面,非用户触发的window.open方法,是会被拦截的: 二.什么情况下不会被拦截或会被拦截? 1. $('#btn'). ...
- Java并发编程Semaphore
信号量 信号量类Semaphore,用来保护对唯一共享资源的访问.一个简单的打印队列,并发任务进行打印,加入信号量同时之能有一个线程进行打印任务 . import java.util.concurre ...
- CocosCreator游戏开发---菜鸟学习之路(二)SocketIO简易教程
请先参考教程司令部-SocketIO教程进行相关操作 开发完成后部分用户会出现持续输出 a userConnected的BUG 如下图所示 经过一段时间的BUG检查终于发现了问题所在.每个人碰到的情况 ...