当前位置: 首页 > news >正文

oracle insert和update,INSERTUPDATE和MERGE (转)

/*用COURSE表为模板,创建一张新表COURSE_NEW,并且包括COURSE表的所有记录 */

CREATE TABLE COURSE_NEW AS SELECT * FROM COURSE;

/*清空COURSE_NEW表中的所有记录*/

TRUNCATE

TABLE COURSE_NEW;

/*往COURSE_NEW表中增加以下记录:

NO COURSE_NAME

A001 ORACLE数据库管理

A002 SQLSERVER安全指南

A003 Hibernate全攻略

A004 .NET

*/

INSERT

INTO COURSE_NEW(NO,COURSE_NAME)

SELECT 'A001','ORACLE数据库管理' FROM

DUAL

UNION

SELECT 'A002','SQLSERVER安全指南' FROM DUAL

UNION

SELECT

'A003','Hibernate全攻略' FROM DUAL

UNION

SELECT 'A004','.NET' FROM

DUAL;

COMMIT;

/*根据COURSE表中的NO字段,用COURSE_NEW更新COURSE表*/

UPDATE (SELECT /*+ BYPASS_UJVC */ A.NO,A.COURSE_NAME,B.NO AS

BNO,B.COURSE_NAME AS BNAME

FROM COURSE A,COURSE_NEW

B

WHERE A.NO=B.NO)

SET

NO=BNO,COURSE_NAME=BNAME

COMMIT;

/*分别使用INSERTUPDATE和MERGE命令实现,用COURSE_NEW更新COURSE表中的记录,如果存在,则更新,不存在则INSERT*/

--用MERGE实现如下:

INSERT INTO COURSE_NEW(NO,COURSE_NAME)

--为了便于操作,先在COURSE_NEW中插入一条记录

SELECT 'A005','HCNE网络工程师' FROM

DUAL;

COMMIT;

MERGE INTO COURSE A

USING COURSE_NEW B

ON(A.NO=B.NO)

WHEN MATCHED THEN

UPDATE SET

A.COURSE_NAME=B.COURSE_NAME

WHEN NOT MATCHED THEN

INSERT(A.NO,A.COURSE_NAME)

VALUES(B.NO,B.COURSE_NAME);

COMMIT;

--用INSERTUPDATE实现如下

INSERT INTO

COURSE_NEW(NO,COURSE_NAME)--为了便于操作,再在COURSE_NEW中插入一条记录

SELECT

'A006','CCNA网络工程师' FROM DUAL;

COMMIT;

--利用UPDATE对于编号相同的字段进行更新

UPDATE

COURSE A SET(NO,COURSE_NAME)=

(SELECT B.NO,B.COURSE_NAME

FROM COURSE_NEW B

WHERE A.NO=B.NO )

WHERE EXISTS

(SELECT

1 FROM COURSE_NEW B

WHERE A.NO=B.NO);

COMMIT;

--利用INSERT对于原表中没有的进行添加

INSERT INTO COURSE

SELECT *

FROM COURSE_NEW A

WHERE NOT EXISTS(SELECT 1 FROM COURSE B WHERE

A.NO=B.NO);

COMMIT;

/*用一组语句代替对实现对全表的更新操作*/

--先用COURSE_TEST记录COURSE表的状态,以便在删除COURSE之后记录相关字段

CREATE

TABLE COURSE_TEST AS SELECT * FROM COURSE WHERE ROWNUM<1;

INSERT /*+

APPEND */ INTO COURSE_TEST

SELECT * FROM COURSE WHERE

ROWNUM<5;

COMMIT;

--删除COURSE表

TRUNCATE

TABLE COURSE;

--更新COURSE表

INSERT /*+APPEND*/

INTO COURSE

SELECT A.NO,A.COURSE_NAME FROM COURSE_NEW A,COURSE_TEST B WHERE

A.NO=B.NO;

COMMIT;

相关文章:

  • 有关oracle的论文,Oracle数据库研究论文有关Oracle数据库的论文
  • linux rocketmq 命令,Linux下安装RocketMQ(单Master)
  • linux 查看 文件夹代销,速达常见问题集
  • 斑马打印机linux驱动安装教程,热敏打印机安装驱动教程
  • linux串口设置1843200波特率,串口通信程序设计
  • linux安装sw软件,Linux 下安装python软件包(pip、nose、virtualenv、distribute )
  • linux绕过时间检测,使用linux的clockdiff命令检测两台linux主机的时间差
  • linux思源黑体乱码,deepin终端使用思源黑体做中文字体
  • linux保存python,python中import this 编程之禅的结果我想用一个变量保存,如何做
  • redhat linux yum仓库,RedHat 6.6 yum仓库的使用
  • linux spf13 vim安装,spf13-vim - Vim编辑器的终极版本
  • 大学C语言系统作业,c语言大作业_学生成绩管理系统v5.0.doc
  • 英文字母哈夫曼编码c语言,C语言哈夫曼编码代码
  • c语言内怎么更改环境变量,C语言中使用环境变量的技巧
  • 太原理工大学c语言课程设计报告,太原理工大学程序设计技术实验报告
  • [译] React v16.8: 含有Hooks的版本
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • CSS相对定位
  • Docker下部署自己的LNMP工作环境
  • java中具有继承关系的类及其对象初始化顺序
  • Mybatis初体验
  • PHP的Ev教程三(Periodic watcher)
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • Vue UI框架库开发介绍
  • webpack+react项目初体验——记录我的webpack环境配置
  • web标准化(下)
  • 初识MongoDB分片
  • 将 Measurements 和 Units 应用到物理学
  • 坑!为什么View.startAnimation不起作用?
  • 力扣(LeetCode)965
  • 两列自适应布局方案整理
  • 前嗅ForeSpider教程:创建模板
  • 区块链共识机制优缺点对比都是什么
  • 使用Swoole加速Laravel(正式环境中)
  • 找一份好的前端工作,起点很重要
  • ​Linux·i2c驱动架构​
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (二)springcloud实战之config配置中心
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (离散数学)逻辑连接词
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (三)c52学习之旅-点亮LED灯
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (算法)Game
  • .NET 5种线程安全集合
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • @NoArgsConstructor和@AllArgsConstructor,@Builder