UPDATE/INSERT用法研究
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用法研究的更多相关文章
- MyBatis从入门到精通(第2章):MyBatis XML方式的基本用法【insert用法、update用法、delete用法】
2.4 insert 用法 2.4.1 简单的 insert方法 在接口 UserMapper.java 中添加如下方法. /** * 新增用户 * @param sysUser * @retur ...
- ORACLE MERGE INTO UPDATE DELETE 用法
ORACLE MERGE INTO UPDATE DELETE 用法 使用该MERGE语句从一个或多个源中选择行以进行更新或插入表或视图.您可以指定条件以确定是更新还是插入目标表或视图. 此语句是组合 ...
- 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 ...
- system.Data.Entity.Infrastructure.DbUpdateConcurrencyException: Store update, insert, or delete statement affected an unexpected number of rows (0) 问题
页面控件没有做限制.提交后还可以继续点击,造成了在短时间内的多次请求.查看日志两次错误在200ms之内. 错误信息 system.Data.Entity.Infrastructure.DbUpdate ...
- 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 ...
- oracle insert用法总结
总结下Oracle 中的Insert用法 1.标准Insert --单表单行插入 语法: INSERT INTO table [(column1,column2,...)] VALUE ...
- SQL server触发器中 update insert delete 分别给写个例子被。
SQL server触发器中 update insert delete 分别给写个例子以及解释下例子的作用和意思被, 万分感谢!!!! 主要想知道下各个语句的书写规范. INSERT: 表1 (ID, ...
- 执行update, insert,delete 语句, 不返回结果集,(类型化参数)
/// <summary> /// 执行update, insert,delete 语句, 不返回结果集,(类型化参数) /// </summary> /// <para ...
- vector中erase()与insert()用法
erase()用法:https://blog.csdn.net/duan19920101/article/details/50717748 注:erase是删除指定位置的元素,不能删除给定元素值.若要 ...
随机推荐
- lvs学习笔记
本人身为一个网工,最近一直在工作中学习linux的相关知识.前短时间通过自查资料学习了lvs的相关内容,摘录部分整理后和大家分享,内容较多,较琐碎,望见谅!!! LVS 从Linux内核版本2.6起, ...
- [转]彻底弄懂css中单位px和em,rem的区别
难怪会问我 rem 和 em, 这俩或在移动端还是很有必要学习的. root em OK? 国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? P ...
- php正则表达式,在抓取内容进行匹配的时候表现不稳定
最近做了一个 抓取内容的程序,使用php的正则表达式对抓取的内容进行匹配,当进行大量匹配运算的时候,发现偶尔会出现匹配失败的情况.检查不出任何原因. 匹配失败导致匹配结果为空,最终导致写入数据库失败. ...
- JavaScript系列----事件机制
1.事件流 1.1.标准事件流 所谓的标准事件流指的的:EMCAScript标准规定事件流包含三个阶段,分别为事件捕获阶段,处于目标阶段,事件冒泡阶段. 下面是一段html代码,根据代码来说明标准事件 ...
- PLSQL锁表之后改如何操作
(1)查看哪个表被锁select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects ...
- 菜鸟谈谈C#中的构造函数和析构函数
本节说明对象的创建.初始化和销毁过程.本节介绍下列主题: l 类构造函数 l 结构构造函数 l 析构函数 类构造函数 本节将讨论三种类构造函数: 类构造 ...
- 重新绘制TabControl的Tabpage标签,添加图片及关闭按钮
1 }
- python进阶---Python中的socket编程
初识socket编程 一.前言 socket基于C\S架构(客户端\服务端)的编程模型,在Python中是以socket模块存在的. Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是 ...
- 查看Page结构
SQL Server存储数据的基本单元是Page,每一个Page的大小是8KB,数据文件是由Page构成的.在同一个数据库上,每一个Page都有一个唯一的资源标识,标识符由三部分组成:db_id,fi ...
- android studio 目录结构讲解
android studio 目录结构讲解 src 毫无疑问,src目录是放置我们所有 Java代码的地方,它在这里的含义和普通 Java 项目下的 src目录是完全一样的,展开之后你将看到我们刚才创 ...