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. git使用教程之git分支

    1 分支简介 让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流. 你将经历如下步骤: 开发某个网站. 为实现某个新的需求,创建一个分支. 在这个分支上开展工作. 正在此 ...

  2. PHP--最常用--必背函数总结!php学习者收藏必备!

    一.PHP系统函数 函数 功能 用法 var_dump() 打印变量结构信息,包括类型和值.数组将递归展开值 var_dump ( $arg1...); echo():是语法结构 输出一个或者多个字符 ...

  3. mac下安装HTMLTestRunner

    HTMLTestRunner是Python标准库unittest模块的一个扩展.它生成易于使用的HTML测试报告. 1.下载HTMLTestRunner.py模块地址 http://tungwaiyi ...

  4. 面试题:判断连个字符串是否互为回环变位(Circular Rotaion)

    题干:   如果字符串 s 中的字符循环移动任意位置之后能够得到另一个字符串 t,那么 s 就被称为 t 的回环变位(circular rotation).   例如,ACTGACG 就是 TGACG ...

  5. java二维码生成

    import java.io.File; import java.nio.file.Path; import java.util.HashMap; import com.google.zxing.Ba ...

  6. [转载] kill命令

    转载自http://www.cnblogs.com/peida/archive/2012/12/20/2825837.html Linux中的kill命令用来终止指定的进程(terminate a p ...

  7. Python学习一:序列基础详解

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7858473.html 邮箱:moyi@moyib ...

  8. invalid LOC header

    今天在SSM整合的时候,报错Failed to start component [StandardEngine[Catalina].StandardHost[localhost].但是就是不明白原因所 ...

  9. 准备冲锋 golang入坑系列

    史前摘要: 本来想写读前必读,但连续几篇博文都写读前必读,感觉就没有了新意. 所以换成史前摘要,反正是一个意思. 此摘要的目的仍然是提醒点击而来的同学,本系列最新文章在这里.放到博客园的目的是为了方便 ...

  10. Python 爬虫练习(三) 利用百度进行子域名收集

    不多介绍了,千篇一律的正则匹配..... import requests import re head = {'User-Agent': \ 'Mozilla/5.0 (Windows NT 6.3; ...