首页 > 代码库 > insert ,update 以及merge 的使用
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)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。