首页 > 数据库 >Oracle 19C学习 - 19. MERGE语句

Oracle 19C学习 - 19. MERGE语句

时间:2022-11-12 17:46:18浏览次数:43  
标签:salary INSERT bonus 19 INTO MERGE Oracle WHERE id

Merge语句的作用

Merge语句可以根据不同条件,获取插入、更新、删除数据表中的行,然后从一个或者多个数据源头对表进行更新或向表中插入行。

Merge语句的语法

MERGE INTO 表名
USING 表名/视图/子查询 ON 匹配条件
WHEN MATCHED THEN
更新、删除操作(UPDATE / DELETE)
WHEN NOT MATCHED THEN
更新、删除、插入操作(UPDATE / DELETE / INSERT)

语句结束后,根据需要确定事务情况:
COMMIT 或者 ROLLBACK

CREATE TABLE DEPTS_EMP
(
    employee_id NUMBER,
    bonus NUMBER
);

INSERT INTO DEPTS_EMP VALUES (103, 0);
INSERT INTO DEPTS_EMP VALUES (104, 100);
INSERT INTO DEPTS_EMP VALUES (105, 0);

SELECT EMPLOYEE_ID, LAST_NAME, SALARY FROM EMPLOYEES WHERE DEPARTMENT_ID = 60;

MERGE INTO depts_emp d
USING (SELECT EMPLOYEE_ID, LAST_NAME, SALARY FROM EMPLOYEES WHERE DEPARTMENT_ID = 60) e
ON (d.employee_id = e.employee_id)

WHEN MATCHED THEN
    -- 将depts_emp的bonus为0的记录,更新为employees的salary * 0.2
    UPDATE 
    SET d.bonus = e.salary * 0.2
    WHERE d.bonus = 0
    
    -- depts_emp中工资大于7500的记录删除
    DELETE WHERE (e.salary > 7500)
    
WHEN NOT MATCHED THEN 
    -- 将employees中salary小于等于7500的记录插入到表depts_emp
    INSERT (d.employee_id, d.bonus) VALUES (e.employee_id, e.salary * 0.1 ) WHERE (e.salary <= 7500);
    
COMMIT;

标签:salary,INSERT,bonus,19,INTO,MERGE,Oracle,WHERE,id
From: https://www.cnblogs.com/slqleozhang/p/16884241.html

相关文章

  • 麒麟V10_SP1_4.19.71-9-KR990 root用户运行qt程序,提示需要授权,请问如何授权?
    麒麟V10_SP1_4.19.71-9-KR990root用户运行qt程序,提示需要授权,但未指定授权协议,普通用户运行同一个qt程序正常。请问如何授权?请麒麟系统技术老师解惑。例子如下:在系统自带qt......
  • Oracle 19C学习 - 18. 索引
    什么是索引索引的主要作用就是加速表的查询。索引可以显示创建,执行索引命令创建。索引也可以隐式创建,主键和唯一键都是隐式创建索引。索引的特征索引是模式SchemaOb......
  • Win10无法登录微软账号错误代码0x80190001的解决方法
    和控制面板内的“Internet选项”设置有关。进入“Internet选项”的“高级”选项卡。检查“HTTP”设置,不要勾选使用代理使用http;检查“安全”设置,勾选使用TLS1.2。如果仍......
  • 19. 数组的排序方式
    1.使用sort函数 格式:arr.sort((a,b)=>{a-b})2.封装函数,使用冒泡排序;vararr=[123,203,23,13,34,65,65,45,89,13,1];for(vari=0;i<arr.length......
  • OpenJDK和OracleJDK的区别说明
    转自:​​http://www.java265.com/JavaJingYan/202206/16565108803835.html​​下文笔者将讲述OpenJDK和OracleJDK的区别说明,如下所示:OpenJDK由来在2006年11月13日的JavaOn......
  • OpenEuler2203使用rpm方式安装Oracle19c的过程
    OpenEuler2203使用rpm方式安装Oracle19c的过程安装介质oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpmoracle-database-ee-19c-1.0-1.x86_64.rpmcompat-libstd......
  • 198 - Docker+Kubernetes(k8s)微服务容器化实践
                生成md5代码  生成token代码 ......
  • 第六章19
    【题目描述】在数学上,矩阵是指纵横排列的二维数据表格,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。矩阵概念在生产实践中也有许......
  • Oracle SQL窗口实现上下翻页
    1.root用户安装rlwraprpm-Uvhhttps://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmyuminstall-yrlwrap2.配置环境变量su-oraclevim.ba......
  • starctf_2019_girlfriend 使用realloc函数调栈帧
    starctf_2019_girlfriend这道题怎么说呢,我好菜,竟然做了快一下午><,本来是不想发这个博客的,因为以前做了一个这样的题,(由于那个题是zikh师傅出的题,还没有发布,就不再写了)......