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

2023-11-24--oracle--实验--[Merge 语句]

 

oracle--实验---Merge语句

1.认知Merge  语句

merge 语句是 sql 语句的一种。在 SQL server Oracle 数据库中可用, MySQL 中不可用。
merge 用来合并 update insert 语句。目的:通过 merge 语句,根据一张表( 原数据表, source table 对另外一张( 目标表, target table 表进行查询,连接条件 匹配上 的进行 update 无法匹配 的执行 INSERT 。这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于 insert+update
何为匹配,何为不匹配?

 

/*示例程序块2   重要*/

/*示例程序块2   重要*/DECLAREv_xm varchar2(8):='Jame';v_zym varchar2(10):='计算机';v_zxf number(2):=45;    /*定义变量类型*/BEGINUPDATE XS  SET zxf=v_zxfWHERE xm=v_xm;IF SQL%NOTFOUND THENDBMS_OUTPUT.PUT_LINE('没有该人,需要插入该人');INSERT INTO XS(XH,XM,ZYM,ZXF)          VALUES('007',v_xm,v_zym,v_zxf);END IF;
end;      

Merge应用场合

构建平台
create table PRODUCTS(PRODUCT_ID             INTEGER,PRODUCT_NAME      VARCHAR2(60),CATEGORY                VARCHAR2(60));create table NEWPRODUCTS(PRODUCT_ID                 INTEGER,PRODUCT_NAME          VARCHAR2(60),CATEGORY                    VARCHAR2(60));

构建平台

insert into PRODUCTS values (1501, 'VIVITAR 35MM', 'ELECTRNCS');    insert into PRODUCTS values (1502, 'OLYMPUS IS50', 'ELECTRNCS');    insert into PRODUCTS values (1600, 'PLAY GYM', 'TOYS');    insert into PRODUCTS values (1601, 'LAMAZE', 'TOYS');    insert into PRODUCTS values (1666, 'HARRY POTTER', 'DVD');    commit;Insert into NEWPRODUCTS values (1502, 'OLYMPUS CAMERA', 'ELECTRNCS');    insert into NEWPRODUCTS values (1601, 'LAMAZE', 'TOYS');    insert into NEWPRODUCTS values (1666, 'HARRY POTTER', 'TOYS');    insert into NEWPRODUCTS values (1700, 'WAIT INTERFACE', 'BOOKS');    commit;

Merge 用法--1

Merge 根据对 源表 联接的结果对 目标表 执行修改操作 ( 插入,更新,删除 )
应用场合:对于特定的数据,在 一次批量操作 过程中 ,如果数据已经 存在 ,则对存在的数据按照现有情况进行 更新 ,如果不存在,则需要将数据添加到数据库的表中。
具体操作: - 根据与 源表 联接的结果,对 目标表 执行插入、更新或删除操作。

 

Merge 语句:

Merge 插入记录、更新记录的语法格式:•MERGE INTO tdest dUSING  tsrc  sON  (s.srckey = d.destkey)WHEN NOT MATCHED THENINSERT  (destkey, destdata) VALUES  (srckey, srcdata)
•        WHEN MATCHED THENUPDATE SET   d.destdata = d.destdata + s.srcdata;
•--  USING 子句用于指定要与目标联接的数据源。
•--  ON 子句用于指定决定目标与源的匹配位置的联接条件。
•--  WHEN 子句用于根据ON 子句的结果指定要执行的操作。

注意:当数据不匹配时,执行insert 语句的不同(省略了into 和

目标 表的名称);

当数据匹配时,执行update 语句的不同(省略了update之后的

目标表名称)。

使用表时必须使用表的别名。

Merge 用法--2

 考虑有可能的情况是:

1. 原表 xs_s中有该学生,但是目的表xs_d中没有该学生,则需要将原表中的学生insert 到目的表

2. 原表xs_s有该学生,而且xs_d中也有该学生,则需要根据原表中的学生信息 update 目的表,或者删除目的表中的部分记录

检查表XS_JSJ中的数据是否和表XS的数据相匹配,

如果匹配则使用INSERT子句执行插入数据行。

搭建平台:create table xs1 as select * from xs;

 

•INSERT INTO XS1(XH,XM,ZYM,XB,CSSJ,ZXF)
• VALUES(007' ,'test', '计算机','男', TO_DATE('19900130','YYYYMMDD'),36);
•   已知条件: 存在两个表 xs_s xs_d , 两个表的结构一致,内容

不统一。目前的想法是,合并两个表中所有的记录到xs_d中。

-- 使用MERGE语句XS_JSJ表中新增的数据插入表XS中:MERGE INTO XS aUSING XS1  bON(a.XH=b.XH)WHEN NOT MATCHED THEN             INSERT(a.xh,a.xm,a.zym,a.xb,a.cssj,a.zxf)Values(b.xh,b.xm,b.zym,b.xb,b.cssj,b.zxf);

4418888b9c2243f89e276a8de9c80eb1.png

Merge 用法--3

构建平台

-- 构建平台
create table PRODUCTS(PRODUCT_ID             INTEGER,PRODUCT_NAME      VARCHAR2(60),CATEGORY                VARCHAR2(60));create table NEWPRODUCTS(PRODUCT_ID                 INTEGER,PRODUCT_NAME          VARCHAR2(60),CATEGORY                    VARCHAR2(60));

构建平台

-- 构建平台insert into PRODUCTS values (1501, 'VIVITAR 35MM', 'ELECTRNCS');    insert into PRODUCTS values (1502, 'OLYMPUS IS50', 'ELECTRNCS');    insert into PRODUCTS values (1600, 'PLAY GYM', 'TOYS');    insert into PRODUCTS values (1601, 'LAMAZE', 'TOYS');    insert into PRODUCTS values (1666, 'HARRY POTTER', 'DVD');    commit;Insert into NEWPRODUCTS values (1502, 'OLYMPUS CAMERA', 'ELECTRNCS');    insert into NEWPRODUCTS values (1601, 'LAMAZE', 'TOYS');    insert into NEWPRODUCTS values (1666, 'HARRY POTTER', 'TOYS');    insert into NEWPRODUCTS values (1700, 'WAIT INTERFACE', 'BOOKS');    commit;

具体实现:

-- 具体实现: 
begininsert into PRODUCTS values (1501, 'VIVITAR 35MM', 'ELECTRNCS');insert into PRODUCTS values (1502, 'OLYMPUS IS50', 'ELECTRNCS');insert into PRODUCTS values (1600, 'PLAY GYM', 'TOYS');insert into PRODUCTS values (1601, 'LAMAZE', 'TOYS');insert into PRODUCTS values (1666, 'HARRY POTTER', 'DVD');commit;Insert into NEWPRODUCTS values (1502, 'OLYMPUS CAMERA', 'ELECTRNCS');insert into NEWPRODUCTS values (1601, 'LAMAZE', 'TOYS');insert into NEWPRODUCTS values (1666, 'HARRY POTTER', 'TOYS');insert into NEWPRODUCTS values (1700, 'WAIT INTERFACE', 'BOOKS');commit;end;

0dd1b45345824e52b4d8de68f46eb4d9.png

Merge 用法--4

   说明:products为目标表,newproducts为源表,则若产品号相匹配,根据源表信息修改目标表的产品名(product_name)和产品类别(category)

merge into products pusing newproducts npon (p.product_id=np.product_id)
when matched thenupdate setp.product_name=np.product_name,p.category=np.category;

346962e3c0b54ab9a346b7946eca4af8.png

•加结果图和表原始数据图
•强调目标表

说明:products为目标表,newproducts为源表,则若产品号不匹配,则根据源表将新的纪录添加到目标表。

Merge into products pusing newproducts npon (p.product_id = np.product_id)when  not matched theninsert values (np.product_id,np.product_name,np.category);

6a3bd5d6517747619ba4974c6b2b316c.png

Merge 用法--5

-- 一个merge例子带update,delete 和insert 三种操作。
MERGE INTO products pUSING newproducts npON (p.product_id = np.product_id)WHEN MATCHED THENUPDATESET p.product_name = np.product_name,p.category = np.categoryDELETE WHERE (p.category = 'ELECTRNCS')WHEN NOT MATCHED THENINSERTVALUES (np.product_id, np.product_name, np.category)

 

2.实验--实战 

首先导入xskc.dmp文件

导入xskc.dmp文件:

输入命令:

SQL> $imp system/test tables=(xs,kc,xs_kc) file=C:\xskc.dmp

1c60a0c75b604afaa9d89b9efc34f048.png

测试是否成功:

输入查询语句:

SQL> select * from xs;

ad6755e68b8045488571b7449f2f768b.png 

 

 

 

 

d294915ed0f54e079c0a6b93dabb4372.png

 

相关文章:

2023-11-24--oracle--实验--[Merge 语句]

oracle--实验---Merge语句 1.认知Merge 语句 • merge 语句是 sql 语句的一种。在 SQL server 、 Oracle 数据库中可用, MySQL 中不可用。 • merge 用来合并 update 和 insert 语句。目的:通过 merge 语句,根据一张表( 原数据表…...

2023亚太杯C题30页高质量word成品论文+五小问py代码+数据集+运行结果图

迈向绿色未来:中国新能源电动汽车综合分析 摘要 (完整版获取在文末!!!) 这项深入研究探讨了中国新能源电动汽车 (NEEV) 的新兴领域,涵盖从市场动态到生 态影响等广泛方面。问题一深入探讨新能…...

【docker】安装redis和mysql生产实战

docker安装诸如redis,mysql等程序非常方便,但是如果不是为了学习,生产环境的部署还是要注意很多问题的 mysql docker pull mysql:5.7mkdir -p /usr/docker/mysql/{conf,logs,data}docker run -d -p 3306:3306 --privilege...

【nlp】3.1 Transformer背景介绍及架构

Transformer背景介绍 1 Transformer的诞生2 Transformer的优势3 Transformer的市场4 Transformer架构4.1 Transformer模型的作用4.2 Transformer总体架构图4.2.1 输入部分4.2.2 输出部分包含4.2.3 编码器部分4.2.4 解码器部分1 Transformer的诞生 2018年10月,Google发出一篇论…...

喜报!美格智能连续五年荣获物联网100强企业

近日,由中国科学院主管、科学出版社主办的《互联网周刊》联合eNet研究院发布了“2023物联网企业100强”榜单,美格智能凭借在技术创新、市场表现、综合实力等多方面的健稳表现连续五年入选榜单。 《互联网周刊》创办于1998年,是最为权威的商业…...

『Confetti 喜庆散花插件の使用』

以下用 VUE3 语法 举例使用&#xff1a; npm install js-confetti<script setup lang"ts"> import JSConfetti from js-confetticonst confetti new JSConfetti()function showConfetti() {confetti.addConfetti() } </script><template><h1 …...

Axios 通过a标签下载文件 跨域下载

<!-- a标签占位 --><a ref"down" ></a>getTest() {this.$axios.request({url: https://cnv13.55.la/download?file_key3695fa9461a0ae59cf3148581e4fe339&handle_typeexcel2pdf,method: get,responseType: blob, // 切记类型 blob}).then(re…...

VR全景展示,“超前点播”打开娱乐行业线上营销门户

如今&#xff0c;人们的生活水平正在逐步提高&#xff0c;这种提高不仅仅是体现在衣食住行上&#xff0c;更多方面是体现在大众的娱乐活动上。我们可以看到&#xff0c;相比于过去娱乐种类的匮乏&#xff0c;现如今&#xff0c;各种娱乐活动可谓是百家争鸣&#xff0c;例如温泉…...

Mac安装配置typescript及在VSCode上运行ts

一、Mac上安装typescript sudo npm install -g typescript 测试一下&#xff1a;出现Version则证明安装成功 tsc -v 二、在VSCode上运行 新建一个xxx.ts文件&#xff0c;测试能否运行 console.log("helloworld") 运行报错&#xff1a;ts-node: command not…...

举个栗子!Tableau 技巧(260):文本表中省市县数据的灵活逐级下钻「方法二」

之前&#xff0c;我们分享过 &#x1f330;&#xff1a;实现地图中的省市县逐级下钻。有数据粉提出问题&#xff1a;如果不是地图&#xff0c;而是文本表&#xff0c;有什么办法可以像这样&#xff0c;实现地理位置逐级下钻呢&#xff1f; 文本表也是可以的。但是&#xff0c;…...

软著项目推荐 深度学习 opencv python 实现中国交通标志识别

文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 &#x1f525; 优质…...

【Java基础】Java导Excel攻略

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

maven打包可执行jar含依赖lib

修改pom.xml <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!-- jdk8可用&#xff0c;其他jdk版本可能需改插件版本 --><version>2.3.7.RE…...

虾皮知虾数据分析软件:优化您的电商经营

在当今竞争激烈的电商市场&#xff0c;了解市场动态、分析竞争对手和产品趋势是成功经营的关键。虾皮知虾数据分析软件是一款强大的工具&#xff0c;为电商卖家提供了全面的数据采集和分析功能。本文将介绍虾皮知虾数据分析软件的特点和功能&#xff0c;以及如何利用它来优化您…...

uniapp开发小程序-如何判断小程序是在手机端还是pc端打开

官方说明 https://developers.weixin.qq.com/miniprogram/dev/devtools/pc-dev.html 小程序如何判断是 PC 平台&#xff1f; 通过 getSystemInfo 官方接口&#xff08;platform 是 windows&#xff09; 通过 UA&#xff08;PC UA 包含 MiniProgramEnv/Windows&#xff09; …...

7-tcp 三次握手和四次挥手、osi七层协议,哪七层,每层有哪些?tcp和udp的区别?udp用在哪里了?

1 tcp 三次握手和四次挥手 2 osi七层协议&#xff0c;哪七层&#xff0c;每层有哪些 3 tcp和udp的区别&#xff1f;udp用在哪里了&#xff1f; 1 tcp 三次握手和四次挥手 # tcp协议---》处于osi7层协议的传输层&#xff0c;可靠连接&#xff0c;使用三次握手&#xff0c;四次挥…...

DELPHI开发APP回忆录二安卓与pc端路径的选择

路径方法WinAndroidGetHomePathC:\Users\ggggcexx\AppData\Roaming/data/user/0/com.stella.scan/files/GetDocumentsPathC:\Users\ggggcexx\Documents/data/user/0/com.embarcadero.FirstAidExpert_FMX_D11/filesGetSharedDocumentsPathC:\Users\Public\Documents/storage/emu…...

井盖位移传感器怎么监测井盖安全

井盖在城市基础设施建设中扮演着不可或缺的角色&#xff0c;虽然看似并不起眼但确实是城市规划中一个重要的组成部分。在城市规划建设之初都需要首先考虑排水系统的设计&#xff0c;而井盖作为排水系统的一个重要组成部分&#xff0c;一旦出现问题便会造成交通中断或者环境受影…...

从零开始,用Docker-compose打造SkyWalking、Elasticsearch和Spring Cloud的完美融合

&#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 "从零开始&#xff0c;用Docker-compose打造SkyWalking、Elasticsearch和Spring Cloud的完美融合 前言准备工作编写docker-compose.yml文件为什么使用本机ip为什么skywa…...

设计模式——状态模式介绍

状态模式是一种行为设计模式&#xff0c;它允许对象在内部状态改变时改变它的行为。它基于对象的内部状态而改变其行为&#xff0c;看起来好像修改了对象的类。 状态模式的关键组件有三个&#xff1a;上下文(Context)、状态(State)和具体状态(Concrete State)。 下面是一个例…...

北京GEO优化公司对比

在AI搜索成为用户获取信息新入口的今天&#xff0c;你的品牌是否还在搜索引擎的“红海”里挣扎&#xff0c;却忽视了生成式AI这片“蓝海”&#xff1f;当用户习惯向豆包、文心一言、Kimi提问时&#xff0c;你的专业内容却石沉大海&#xff0c;这无疑是巨大的流量与商机流失。今…...

B站会员购抢票神器:新手也能快速上手的终极购票指南

B站会员购抢票神器&#xff1a;新手也能快速上手的终极购票指南 【免费下载链接】biliTickerBuy b站会员购购票辅助工具 项目地址: https://gitcode.com/GitHub_Trending/bi/biliTickerBuy 还在为抢不到B站会员购的漫展门票而烦恼吗&#xff1f;biliTickerBuy是一款开源…...

JavaScript中函数声明位置对解析器预编译的影响

函数声明会被完整提升&#xff0c;包括函数名和函数体&#xff1b;函数表达式仅变量名提升&#xff0c;赋值不提升&#xff1b;块级函数声明行为不统一&#xff0c;严格模式下受TDZ约束&#xff1b;箭头函数和class声明不享受函数声明式提升。JavaScript中函数声明会被提升&…...

告别Conda依赖!用Docker一键部署SMC++ v1.15.4,搞定全基因组有效种群历史分析

告别Conda依赖&#xff01;用Docker一键部署SMC v1.15.4&#xff0c;搞定全基因组有效种群历史分析 在基因组学研究中&#xff0c;有效种群大小的历史分析是理解物种演化历程的关键工具。SMC作为这一领域的明星软件&#xff0c;以其高效的多样本处理能力和对VCF文件的直接支持而…...

5个深度优化方案:专业级tts-vue离线语音合成配置实践

5个深度优化方案&#xff1a;专业级tts-vue离线语音合成配置实践 【免费下载链接】tts-vue &#x1f3a4; 微软语音合成工具&#xff0c;使用 Electron Vue ElementPlus Vite 构建。 项目地址: https://gitcode.com/gh_mirrors/tt/tts-vue tts-vue是一款基于微软语音…...

Keras模型转Web应用:TensorFlow.js实战指南

1. 项目概述最近在做一个机器学习项目时&#xff0c;我发现很多开发者训练完Keras模型后&#xff0c;往往只停留在本地测试阶段。实际上&#xff0c;将训练好的SavedModel格式模型部署为浏览器可运行的Web应用&#xff0c;能够极大提升模型的实用性和可访问性。本文将完整演示如…...

泡泡玛特王宁:我们想成为树一样的企业 把根扎得足够深

2010年&#xff0c;北京中关村一家名为“泡泡玛特”的潮流杂货铺悄然开业。彼时&#xff0c;没有人会想到&#xff0c;这家藏在地下一层角落的小店&#xff0c;有朝一日会成长为营收超370亿、IP遍布全球近百个国家和地区的潮玩巨头。而缔造这一切的&#xff0c;正是85后泡泡玛特…...

嵌入式Linux开发实战:基于Orange Pi的U-Boot、内核与设备树配置指南

1. 项目概述&#xff1a;一个面向嵌入式开发者的开源硬件仓库最近在折腾Orange Pi、香橙派这类ARM开发板时&#xff0c;经常需要找一些适配的U-Boot引导程序、Linux内核源码或者设备树文件。官方仓库的代码有时更新不及时&#xff0c;或者缺少针对特定外设的补丁&#xff0c;这…...

Zig之数值运算与操作

Zig 追求的是显式性(Explicitness)和对硬件行为的精确控制。 类型 整数 Zig 支持任意位宽的整数。通过在 u(无符号)或 i(有符号)后加上数字即可定义,例如 i7 代表有符号的 7 位整数。整数类型允许的最大位宽为 65535。 硬件对齐:当需要操作非标准硬件(如网络协议中…...

零基础算法打卡第 11 天|LeetCode 80 删除有序数组中的重复项 II + 滑动窗口 / 双指针巩固

今天是算法学习第 11 天&#xff01;今天任务&#xff1a;LeetCode 80 删除有序数组中的重复项 II&#xff0c;在昨天去重的基础上升级&#xff0c;允许最多出现两次&#xff0c;超过两次才删掉&#xff0c;顺便巩固滑动窗口 / 双指针&#xff0c;并完成第二周学习小结。 一、今…...