UPDATE和INSERT语法相信大家都很熟悉,UPDATE的基本语法结构是 :

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

INSERT的基本语法是:

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

测试环境如下: 

数据库版本:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

CREATE TABLE DEPT
(
DEPT_NAME VARCHAR2(20 BYTE),
DEPT_ID NUMBER(2)
);

CREATE TABLE EMP
(
EMP_NAME VARCHAR2(20 BYTE),
EMP_ID NUMBER(3),
DEPT_ID NUMBER(2)
);

①多表联合update:现在我们在emp表内增加了一个dept_name字段,并且从dept表将dept_name同步到emp表内。

UPDATE EMP A SET DEPT_NAME=(SELECT DEPT_NAME FROM DEPT B WHERE A.DEPT_ID=B.DEPT_ID)
WHERE EXISTS (
SELECT DEPT_NAME FROM DEPT B WHERE A.DEPT_ID=B.DEPT_ID
)

使用merge语法:

MERGE INTO EMP A
USING DEPT B
ON(A.DEPT_ID=B.DEPT_ID)
WHEN MATCHED THEN UPDATE SET A.DEPT_NAME=B.DEPT_NAME

效果如图:

建议:使用merge语法,效率更高

②多表insert:同样是以上环境,现在要求有一部emp表EMP_dept_1(表结构同emp),二部emp表EMP_dept_2(表结构同emp),要求将emp内dept_id为1的插入emp_dept_1表,dept_id为2的插入EMP_dept_2(也就是对职工表进行分类)

INSERT FIRST
WHEN (DEPT_ID='1')
THEN INTO EMP_DEPT_1
WHEN (DEPT_ID='2')
THEN INTO EMP_DEPT_2
SELECT * FROM EMP

这里的INSERT FIRST 是指当满足第一条插入条件的数据,不会继续进行随后的判断;而如果是insert all则是会继续判断,若是满足后续的条件,也仍然会继续插入;

 

UPDATE/INSERT用法研究的更多相关文章

  1. MyBatis从入门到精通(第2章):MyBatis XML方式的基本用法【insert用法、update用法、delete用法】

    2.4  insert 用法 2.4.1  简单的 insert方法 在接口 UserMapper.java 中添加如下方法. /** * 新增用户 * @param sysUser * @retur ...

  2. ORACLE MERGE INTO UPDATE DELETE 用法

    ORACLE MERGE INTO UPDATE DELETE 用法 使用该MERGE语句从一个或多个源中选择行以进行更新或插入表或视图.您可以指定条件以确定是更新还是插入目标表或视图. 此语句是组合 ...

  3. Store update, insert, or delete statement affected an unexpected number of rows ({0}).

    问题描述 Store update, insert, or delete statement affected an unexpected number of rows ({0}). Entities ...

  4. system.Data.Entity.Infrastructure.DbUpdateConcurrencyException: Store update, insert, or delete statement affected an unexpected number of rows (0) 问题

    页面控件没有做限制.提交后还可以继续点击,造成了在短时间内的多次请求.查看日志两次错误在200ms之内. 错误信息 system.Data.Entity.Infrastructure.DbUpdate ...

  5. Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded.

    EF6进行Insert操作的时候提示错误 Store update, insert, or delete statement affected an unexpected number of rows ...

  6. oracle insert用法总结

    总结下Oracle 中的Insert用法   1.标准Insert --单表单行插入   语法:     INSERT INTO table [(column1,column2,...)] VALUE ...

  7. SQL server触发器中 update insert delete 分别给写个例子被。

    SQL server触发器中 update insert delete 分别给写个例子以及解释下例子的作用和意思被, 万分感谢!!!! 主要想知道下各个语句的书写规范. INSERT: 表1 (ID, ...

  8. 执行update, insert,delete 语句, 不返回结果集,(类型化参数)

    /// <summary> /// 执行update, insert,delete 语句, 不返回结果集,(类型化参数) /// </summary> /// <para ...

  9. vector中erase()与insert()用法

    erase()用法:https://blog.csdn.net/duan19920101/article/details/50717748 注:erase是删除指定位置的元素,不能删除给定元素值.若要 ...

随机推荐

  1. Bridging signals(NlogN最长上升子序列)

    Bridging signals Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. 微信小程序语音识别服务搭建全过程解析(https api开放,支持新接口mp3录音、老接口silk录音)

    silk v3(或新录音接口mp3)录音转olami语音识别和语义处理的api服务(ubuntu16.04服务器上实现) 重要的写在前面 重要事项一: 所有相关更新,我优先更新到我个人博客中,其它地方 ...

  3. 数据结构--汉诺塔递归Java实现

    /*汉诺塔递归 * 1.将编号0-N-1个圆盘,从A塔座移动到B上面 * 2.将编号N的1个圆盘,从A移动到C上面 * 3.最后将B上面的N-1个圆盘移动到C上面 * 注意:盘子的编号从上到下1-N ...

  4. java 中 针对数组进行的工具类

    1.遍历数组的方法: public static void printfArray(int[] arr)  2. 获取数组中最大值: public static int getMax(int[] ar ...

  5. DNA序列对齐问题

    问题描述: 该问题在算法导论中引申自求解两个DNA序列相似度的问题. 可以从很多角度定义两个DNA序列的相似度,其中有一种定义方法就是通过序列对齐的方式来定义其相似度. 给定两个DNA序列A和B,对齐 ...

  6. mapreduce解析执行sql流程

    样例准备 编号 姓名 性别 班级编号 1 name_1 male 1 2 name_2 female 2 3 name_3 male 3 4 name_4 female 4 5 name_5 male ...

  7. C#移位运算(左移和右移)

    C#是用<<(左移) 和 >>(右移) 运算符是用来执行移位运算. 左移 (<<) 将第一个操作数向左移动第二个操作数指定的位数,空出的位置补0.  左移相当于乘. ...

  8. CodeRush Xpress的菜单在VS2008SP1中不显示的解决方法

    将HKEY_LOCAL_MACHINE\SOFTWARE\Developer Express\CodeRush for VS\9.1中的HideMenu设置为0.若HideMenu不存在就创建个DWO ...

  9. web前端-----JAVA Script(一)

      JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase ...

  10. List实现

    1.元素添加 #include <stdio.h> #include <stdlib.h> struct ListNode{ struct ListNode* next; in ...