本次将用到的几个表,以及字段
> 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 ...
随机推荐
-
jquery.extend
经常在插件中看到jquery.extend 方法,最近在尝试写一些简单的插件,顺便研究一下这个方法. 原文:http://www.cnblogs.com/RascallySnake/archive/2 ...
-
Android APK瘦身之Android Studio Lint (代码审查)
******** ******** 第一部分: 瘦身内容介绍 ******** ******** 项目新版本的迭代接近尾声, 因为历史累积问题, 导致有很多无效的资源让已经臃肿的APK变得更肿, 因此 ...
-
myhandle
#ifndef my_handle_h #define my_handle_h #include <stdint.h> #include "mydef.h" #incl ...
-
去掉mac终端里面hostname提示处的bogon
打开终端,如果在命令提示$前面显示的主机名变成了bogon,则可以通过命令行修改: sudo scutil --set hostname 新主机名
-
system verilog中的类型转换(type casting)、位宽转换(size casting)和符号转换(sign casting)
类型转换 verilog中,任何类型的任何数值都用来给任何类型赋值.verilog使用赋值语句自动将一种类型的数值转换为另一种类型. 例如,当一个wire类型赋值给一个reg类型的变量时,wire类型 ...
-
BZOJ3189 : [Coci2011]Slika
通过离线将操作建树,即可得到最终存在的操作. 然后逆着操作的顺序,倒着进行染色,对于每行维护一个并查集即可. 时间复杂度$O(n(n+m))$. #include<cstdio> cons ...
-
CardView官方教程
Create Cards CardView extends the FrameLayout class and lets you show information inside cards that ...
-
html5 canvas 实现简单的画图
今天早上看了一下 canvas 前端画图,数据可视化, 百度的 echart.js , d3等 js 库都已经提供了强大的绘制各种图形的 API. 下面记录一下 有关canvas 绘图的基本知识: ...
-
利用宏定义实现C++程序在Unix和Win32环境下的通用性
[转] 1.1. 宏定义软件的代码,从跨平台的角度来看,可以分为平台相关的和平台无关的.采用C/C++编写的软件,在进行移植时,平台无关的的代码基本上不需要做大的改动,但平台相关的代码需要做很大的调整 ...
-
2018-2019-20175315 实验一 《Java开发环境的熟悉》实验报告
2018-2019-20175315实验一 <Java开发环境的熟悉>实验报告 一.实验内容及步骤 实验1 1.用mkdir建立“20175303exp1”的目录 2.在“20175303 ...