暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

oracle中merge into的用法是什么

原创 亂了乱了 2023-04-05
1318

在oracle中,“merge into”用于更新表中的数据,可以将一个表中的数据插入另一个表中,若被插入的表中已经有该数据则更新该数据,若没有该数据则会在被插入的表中新增数据。

本教程操作环境:Windows10系统、Oracle 11g版、Dell G3电脑。

oracle中merge into的用法是什么

Oracle9g引入了MERGE命令,你能够在一个SQL语句中对一个表同时执行inserts和update操作. MERGE命令从一个或多个数据源中选择行来update或insert到一个或多个表.在Oracle 10g中MERGE有如下一些改进:

1、UPDATE或INSERT子句是可选的

2、UPDATE和INSERT子句可以加WHERE子句

3、在ON条件中使用常量过滤谓词来insert所有的行到目标表中,不需要连接源表和目标表

4、UPDATE子句后面可以跟DELETE子句来去除一些不需要的行

5、源表就是using关键字后面跟的表,目标表就是将要被merge into的表

6、merge into 中所有的update、insert、delete都是针对目标表来操作的。由于merge into已经制定了操作的表,所以update、insert、delete都不需要再显示指出表名

7、总之,merge into的作用就是 解决用B表跟新A表数据,如果A表中没有,则把B表的数据插入A表或向一个表中插入数据,如果该表已有该数据则更新,反之新增数据。
语法:

1

2

3

4

5

MERGE INTO [your table-name] [rename your table here] 

  USING ( [write your query here] )[rename your query-sql and using just like a table] 

  ON ([conditional expression here] AND [...]...) 

  WHEN MATHED THEN [here you can execute some update sql or something else

  WHEN NOT MATHED THEN [execute something else here ! ]

接下来我们来直接进行测试:

需求一:向一个表中插入一条数据,如果该表中已经有该数据则更新,反之新增

首先创建一个表TEST_ONE

1

2

3

4

5

6

create table TEST_ONE(

  ID   NUMBER not null

    primary key,

  NAME VARCHAR2(255),

  IP   VARCHAR2(255),

  MEMO VARCHAR2(255))commit;

随便添加几条数据作为测试数据

1

2

3

4

INSERT INTO TEST_ONE (ID, NAME, IP, MEMO) VALUES (1, '2', '3', '周文军');

INSERT INTO TEST_ONE (ID, NAME, IP, MEMO) VALUES (2, '66', '366', '2656');

INSERT INTO TEST_ONE (ID, NAME, IP, MEMO) VALUES (3, '5656', '626', '2626');

INSERT INTO TEST_ONE (ID, NAME, IP, MEMO) VALUES (4, '5656', '2626', '626');

好了,我们的数据表已经建成

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论