• 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)
  • 相关阅读:
    mongoDB看这篇就够了
    放不下
    jmeter连接不上MySQL数据库的原因以及解决方法
    SecureCRT自动断开连接的解决方法
    Linux及Windows查看占用端口的进程
    网络基础知识
    selenium中driver.close()和driver.quit()的不同点
    day2_窗口句柄切换
    day6_异常捕捉
    day6_logging模块
  • 原文地址:https://www.cnblogs.com/qianwen/p/3726332.html
Copyright © 2020-2023  润新知