近期参加OCP培训,讲师说的太快,之前一直是SQLSERVER,很多东西要恶补了。

UpSert功能:

MERGE <hint> INTO <table_name>
USING <table_view_or_query>
ON (<condition>)
WHEN MATCHED THEN <update_clause>
WHEN NOT MATCHED THEN <insert_clause>;

multiTable Inserts功能:

Multitable inserts allow a single INSERT INTO .. SELECT statement to conditionally, or non-conditionally, insert into multiple tables. This
statement reduces table scans and PL/SQL code necessary for performing multiple conditional inserts compared to previous versions. It's
main use is for the ETL process in data warehouses where it can be parallelized and/or convert non-relational data into a relational format:

-- Unconditional insert into ALL tables

INSERT ALL
INTO sal_history VALUES(empid,hiredate,sal)
INTO mgr_history VALUES(empid,mgr,sysdate)
SELECT employee_id EMPID, hire_date HIREDATE, salary SAL, manager_id MGR
FROM employees WHERE employee_id > 200;

-- Pivoting insert to split non-relational data

INSERT ALL
INTO Sales_info VALUES (employee_id,week_id,sales_MON)
INTO Sales_info VALUES (employee_id,week_id,sales_TUE)
INTO Sales_info VALUES (employee_id,week_id,sales_WED)
INTO Sales_info VALUES (employee_id,week_id,sales_THUR)
INTO Sales_info VALUES (employee_id,week_id, sales_FRI)
SELECT EMPLOYEE_ID, week_id, sales_MON, sales_TUE,
sales_WED, sales_THUR,sales_FRI
FROM Sales_source_data;

-- Conditionally insert into ALL tables

INSERT ALL
WHEN SAL>10000 THEN
INTO sal_history VALUES(EMPID,HIREDATE,SAL)
WHEN MGR>200 THEN
INTO mgr_history VALUES(EMPID,MGR,SYSDATE)
SELECT employee_id EMPID, hire_date HIREDATE, salary SAL, manager_id MGR
FROM employees WHERE employee_id > 200;

-- Insert into the FIRST table with a matching condition

INSERT FIRST
WHEN SAL > 25000THEN
INTO special_sal VALUES(DEPTID,SAL)
WHEN HIREDATE like ('%00%') THEN
INTO hiredate_history_00 VALUES(DEPTID,HIREDATE)
WHEN HIREDATE like ('%99%') THEN
INTO hiredate_history_99 VALUES(DEPTID,HIREDATE)
ELSE
INTO hiredate_history VALUES(DEPTID, HIREDATE)
SELECT department_id DEPTID, SUM(salary) SAL,
MAX(hire_date) HIREDATE
FROM employees GROUP BY department_id;

The restrictions on multitable INSERTs are:

Multitable inserts can only be performed on tables, not on views or materialized views.
You cannot perform a multitable insert via a DB link.
You cannot perform multitable inserts into nested tables.
The sum of all the INTO columns cannot exceed 999.
Sequences cannot be used in the subquery of the multitable insert statement.

Undrop功能

From Oracle 10g a table can be "undropped". Example:

SQL> FLASHBACK TABLE emp TO BEFORE DROP;

Flashback complete.

转载于:https://www.cnblogs.com/iImax/archive/2012/09/10/2678871.html

Oracle Sql技巧 - Upsert, Multitable Insert, Undrop相关推荐

  1. sqlserver拼接sql插入table_10个SQL技巧

    介 绍 为了理解这 10 个 SQL 技巧的价值,首先需要了解下 SQL 语言的上下文.为什么我要在 Java 会议上讨论 SQL 呢?(我可能是唯一一个在 Java 会议上讨论 SQL 的了)下面讲 ...

  2. sql如何取前几行_10 个不为人知的 SQL 技巧

    在 SQL 中,我们不关心数据库是如何检索信息的,就可以得到结果.本文介绍了使用声明式 SQL10 个不为人知的技巧. 从早期开始,编程语言设计者就有这样的愿望:设计一种语言,在这种语言中,告诉机器我 ...

  3. Oracle 实用技巧之不知道密码情况下 dblink 的迁移

    巩飞(网名Morinson) "大家好,我是巩飞,网名 Morinson,现在是服务于云和恩墨西北区的一名工程师,有14年在IT公司的技术类工作经验,特别是在 ORACLE 数据库管理领域方 ...

  4. oracle sql以及性能调优

    目 录 1.选用适合的ORACLE优化器 2 2.访问Table的方式 3 3.共享SQL语句 3 4.选择最有效率的表名顺序(只在基于规则的优化器中有效) 5 5.WHERE子句中的连接顺序. 6 ...

  5. 您认为不可能的10个SQL技巧

    这样的列表确实有用-它们不仅吸引了人们的注意,如果内容也很有价值(在这种情况下,请相信我),则文章格式可能会非常有趣. 本文将为您带来10条SQL技巧,其中许多人可能都认为不可能. 这篇文章是我在会议 ...

  6. sql技巧_您认为不可能的10个SQL技巧

    sql技巧 这样的列表确实有用-它们不仅吸引了人们的注意,如果内容也很有价值(在这种情况下,请相信我),则文章格式可能会非常有趣. 本文将为您带来10条SQL技巧,其中许多人可能都认为不可能. 这篇文 ...

  7. ORACLE SQL and SQL PLUS

    前言: 关系数据库的简单介绍 1970.Dr.E.F.codded 创建了关系数据库的模型(类似现在常用的二维表格) 关系数据库由许多数据对象组成, 被关系操作SQL命令管理着, 数据之间有完整性的约 ...

  8. ORACLE SQL and SQL*PLUS 学习

    前言: 关系数据库的简单介绍 1970.Dr.E.F.codded 创建了关系数据库的模型(类似现在常用的二维表格) 关系数据库由许多数据对象组成, 被关系操作 SQL命令管理着, 数据之间有完整性的 ...

  9. ORACLE SQL and SQL*PLUS

    ORACLE SQL and SQL*PLUS    余枫编写 2002.10 前言: 关系数据库的简单介绍 1970.Dr.E.F.codded 创建了关系数据库的模型(类似现在常用的二维表格) 关 ...

最新文章

  1. 如何优雅地退出python程序
  2. 酒店用机器学习,预测哪些客人会放鸽子
  3. 【嵌入式干货】hex、bin转换、以及hex合成工具(基于Python)
  4. 数据挖掘十大算法--K-均值聚类算法
  5. [Python3] 020 借函数,谈一谈变量的作用域
  6. resources.arsc格式(包-类型-资源项)
  7. ceres-solver学习笔记
  8. 快速对比UART、SPI、I2C通信的区别与应用
  9. EJB 开发环境与入门实例
  10. -------------初识----------动态规划。--------------------------------------------
  11. 三维点云数据处理软件-图像重建点云或LiDAR扫描点云
  12. 【学习】——提问的智慧
  13. 华为matebook键盘失灵
  14. ios 相机开发 自动对焦
  15. 微信php视频怎么变成mp4,缓存下来的视频如何变成mp4格式?
  16. LR-Web服务器和应用程序服务器区别(性能指标)
  17. tapestry mysql_tapestry与mybatis模块的结合
  18. 放大电路中的反馈-反馈的基本概念及判断方法
  19. React.createRef()
  20. 覆盖所有领域的 Python 工具库汇总!建议收藏!!!

热门文章

  1. 记录猫眼电影的自定义字体反爬
  2. 【quickhybrid】组件(自定义)API的实现
  3. 2017阿里云TECH INSIGHT干货分享第六届隆重回归
  4. 太晚睡不着的落寞与开心(记近况)
  5. Runtime应用(三)实现NSCoding的自动归档和自动解档
  6. 面对对象的程序设计初探总结
  7. 【ACM】杭电1022:Train Problem I
  8. Oracle中不同条件的日期查询
  9. 分布式通信框架 - rmi
  10. 2018-2019-1 20165212 20165313 2016522 实验一 开发环境的熟悉