1. 本次将用到的几个表,以及字段
    > emp
  2. empno, ename,job,mgr,hiredate,sal,comm,deptno
  3. > dept
  4. deptno,dname,loc
  5. > emp_bonus
  6. empno, received,type
    >new_sal
    demptno,sal
  1. /*----------------- INSERT 的使用 --------------------------------*/
  2. --1. 插入到一个表
  3. insert into dept
  4. (deptno,dname,loc)
  5. vaules(1,"A","C"),
  6. (2,"V","T")
  7.  
  8. insert into dept
  9. values(1,"lily","NEW YORK")
  10.  
  11. -- 2. 从一个表向另外一个表复制行
  12. insert into dept_east
  13. (deptno,dname,loc)
  14. select deptno,
  15. dname,
  16. loc
  17. from dept
  18. where loc in ("NEW YORK")
  19.  
  20. -- 3. 复制表定义(只复制表的结构,没有数据)
  21. -- In Mysql
  22. create table dept_2 like dept
  23.  
  24. --In MSSQL or oracle
  25. select *
  26. into dept_2
  27. from dept
  28. where 1=0 /*没有这个限制条件将连数据一起复制*/
  29.  
  30. create table dept_2
  31. as
  32. select *
  33. from dept
  34. where 1=0
  35.  
  36. --4. 一次向多个表中插入记录
  37. --In oracle
  38. insert all
  39. when loc in ("NEW YORK") then
  40. into dept_east(dept_no,dname,loc)
  41. vaules(dept_no,dname,loc)
  42. when loc in ("CHICAGO") then
  43. into dept_mid(dept_no,dname,loc)
  44. vaules(dept_no,dname,loc)
  45. else
  46. into dept_west(dept_no,dname,loc)
  47. vaules(dept_no,dname,loc)
  48. select dept_no,dname,loc
  49. from dept
  1. /*----------------------update 的使用------------------------------------*/
  2.  
  3. --5. 在表中更新记录
  4. update emp
  5. set sal=sal*1.1
  6. where deptno=20
  7.  
  8. update emp
  9. set sal=sal*1.2
  10. where empno in
  11. (select empno from emp_bonus)
  12.  
  13. update emp
  14. set sal=sal*1.2
  15. where exists(
  16. select null
  17. from emp_bonus as eb
  18. where emp.empno=eb.empno
  19. )
  20.  
  21. -- 6. 用其他表更新
  22. update emp
  23.  set sal=ns.sal
  24. comm=ns.sal/2
  25.    from emp e,
  26. new_sal ns
  27. where ns.deptno=e.deptno
  1. /*-----------------------------merge 函数的使用------------------------------------ */
    /*
  2. -- 简单来说就是 : 如果记录存在则更新,不存在则插入
  3. >emp_commission 表
  4. empno,sal,comm,deptno
  5. >emp表
  6. empno, ename,job,mgr,hiredate,sal,comm,deptno
  7. 1. 如果emp_commission 表员工也存在于emp表中,那么将emp_commission 的提成(comm)更新为1000
  8. 对于更新到1000的员工,SAL少于2000则删除
  9. 2. 否则,从emp表取出empno,sal,comm,deptno,插入到emp_commission
  10. */
  11. -- in oracle, MSSQL
  12.  
  13. merge into emp_commission ec
  14. using (select * from emp) emp
  15. on(ec.empno=emp.empno)
  16. when matched then
  17. update set ec.comm=1000
  18. delete where(sal<2000)
  19. when not matched then
  20. insert (ec.empno,ec.name,ec.comm)
  21. values(emp.empno,emp.name,emp.comm)

insert ,update 以及merge 的使用的更多相关文章

  1. 《oracle每天一练》Merge Into 语句代替Insert/Update在Oracle中的应用实战

    转载自窃破天道 动机: 想在Oracle中用一条SQL语句直接进行Insert/Update的操作. 说明: 在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也 ...

  2. 使用Merge Into 语句实现 Insert/Update

    网址: http://www.eygle.com/digest/2009/01/merge_into_insertupdate.html 动机: 想在Oracle中用一条SQL语句直接进行Insert ...

  3. Merge Into 语句代替Insert/Update在Oracle中的应用实战

    动机: 想在Oracle中用一条SQL语句直接进行Insert/Update的操作. 说明: 在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也就是说当存在记录 ...

  4. Oracle Merge Into Insert/Update

    出自:http://blog.csdn.net/yuzhic/article/details/1896878 动机: 想在Oracle中用一条SQL语句直接进行Insert/Update的操作. 说明 ...

  5. Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用 引自http://www.blogjava.net/TiGERTiAN/archive/2008/10/25/236519.html

    Hibernate的对象有3种状态,分别为:瞬时态(Transient). 持久态(Persistent).脱管态(Detached).处于持久态的对象也称为PO(Persistence Object ...

  6. hibernate的各种保存方式的区别 (save,persist,update,saveOrUpdte,merge,flush,lock)等

    hibernate的保存hibernate对于对象的保存提供了太多的方法,他们之间有很多不同,这里细说一下,以便区别:一.预备知识:在所有之前,说明一下,对于hibernate,它的对象有三种状态,t ...

  7. Hibernate各保存方法之间的差 (save,persist,update,saveOrUpdte,merge,flush,lock)等一下

    hibernate保存  hibernate要保存的目的是提供一个方法,多.它们之间有许多不同之处,点击此处详细说明.使得差: 一.预赛: 在所有.阐释.供hibernate,,transient.p ...

  8. Hibernate update 和 merge 、saveOrUpdate的区别

    this.getSession().update(obj); this.getSession().merge(obj); this.getSession().saveOrUpdate(obj); 1. ...

  9. Oracle 数据库实现数据更新:update、merge

    工作中遇到的数据更新,学习记录. 1.使用update进行数据更新 1)最简单的更新 update tablea a set a.price=1.00 2)带条件的数据更新 update tablea ...

随机推荐

  1. apr-util的安装

    下载软件 下载链接: http://pan.baidu.com/s/1o6sOwgM http://pan.baidu.com/s/1hqIdcA4 ########安装apr######### ta ...

  2. 使用webpack、babel、react、antdesign配置单页面应用开发环境

    这是Webpack+React系列配置过程记录的第一篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...

  3. POJ [P3660] Cow Contest

    传递闭包经典应用 奶牛的名次能确定当且仅当在它前面的牛数+在他后面的牛数==n-1 在他前面和后面的牛数可以转化成求完传递闭包后的出度和入度 #include <iostream> #in ...

  4. BZOJ 4195: [Noi2015]程序自动分析 [并查集 离散化 | 种类并查集WA]

    题意: 给出若干相等和不等关系,判断是否可行 woc NOI考这么傻逼的题飞快打了一个种类并查集交上了然后爆零... 发现相等和不等看错了异或一下再叫woc90分 然后发现md$a \neq b, a ...

  5. webrtc底层一对一连接过程探索(三)

    一.连接过程继续解读-----fun33-fun35解读 完整代码如下: //fun33-37 console.error('fun35-37==>2332==>2332'); var q ...

  6. Redis进阶实践之十一 Redis的Cluster集群搭建

    一.引言      本文档只对Redis的Cluster集群做简单的介绍,并没有对分布式系统的详细概念做深入的探讨.本文只是提供了有关如何设置集群.测试和操作集群的说明,而不涉及Redis集群规范中涵 ...

  7. Java DecimalFormat 用法

    Java 提供 DecimalFormat 类,帮你用最快的速度将数字格式化为你需要的样子.下面是一个例子: importjava.text.DecimalFormat; publicclassTes ...

  8. .NET Core使用swagger进行API接口文档管理

    一.问题背景 随着技术的发展,现在的开发模式已经更多的转向了前后端分离的模式,在前后端开发的过程中,联系的方式也变成了API接口,但是目前项目中对于API的管理很多时候还是通过手工编写文档,每次的需求 ...

  9. shell编程值之正则表达式与字符截取(6)

    正则表达式与通配符 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式 通配符用来匹配符合条件的文件名,通配符是完全匹配.ls.find.cp ...

  10. Redis Sentinel安装与部署,实现redis的高可用

    前言 对于生产环境,高可用是避免不了要面对的问题,无论什么环境.服务,只要用于生产,就需要满足高可用:此文针对的是redis的高可用. 接下来会有系列文章,该系列是对spring-session实现分 ...