首页 > 其他 > 详细

大数据BI学习之子查询临时表

时间:2020-10-02 13:32:16      阅读:52      评论:0      收藏:0      [点我收藏+]

临时表

ORACLE 临时表,可以有两种类型的临时表:会话级临时表、事务级临时表。

 

会话级临时表:

因为这个临时表中的数据和你的当前会话有关系,当你当前 SESSION 不退出的情况下,临时表中的数据就还存在,而当你退出当前 SESSION 的时候,临时表中的数据就全部没有了,这个时候如果以另外一个 SESSION 登陆的时候是看不到另外一个 SESSION 中的插入到临时表中的数据的。即两个不同的 SESSION 所插入的数据是互不相干的,当某一个 SESSION 退出之后临时表中的数据就会被清空。

--创建会话级临时表
CREATE GLOBAL TEMPORARY TABLE TMP_TABLE(
       ID NUMBER
) ON COMMIT PRESERVE ROWS;

 

事务级临时表:

是指该临时表与事务相关,当进行事务提交或者事务回滚的时候,临时表中的数据将自行被截断,其他的内容和会话级的临时表是一致的(包括退出 SESSION 的时候,事务级的临时表也会被自动截断)。

--创建事务级临时表
CREATE GLOBAL TEMPORARY TABLE TRANSACTION_TABLE(ID NUMBER) ON COMMIT DELETE ROWS;

--进行事务提交COMMIT 或者事务回滚ROLLBACK 时,数据会被自动截断(清除事务操作的数据)
INSERT INTO TRANSACTION_TABLE(ID) VALUES(1111);
COMMIT;
ROLLBACK;

 

临时表

-- 语法结构:WITH... AS..语法结构
/*
  WITH 临时表名1 AS
  (SELECT 查询语句),
  临时表2 AS
  (SELECT 查询语句),
  临时表3 AS
  (SELECT 查询语句)
  ...
  SELECT 查询语句;
*/

WITH TMP_A AS
(SELECT MAX(T.SAL) MAX_SAL FROM EMP T) --把查询结构当作临时表
SELECT B.*
  FROM EMP B,TMP_A C
 WHERE B.SAL = C.MAX_SAL;

 

 

总结:

1、两种临时表的异同:
相同点:
两种表都不能永久的保存记录,都是用临时表空间。
不同点:
会话级临时表只有当会话结束时,临时表中的数据才会被截断;而事务级临时表则不管是COMMIT、ROLLBACK 或者是会话结束,临时表中的数据都将被截断。

2、临时表的使用场景:
把复杂的逻辑拆分开来,用临时表储存中间结果,以方便后面的逻辑处理。程序执行过程中可能需要存放一些临时的数据,这些数据在整个程序的会话过程中都需要用到等。

大数据BI学习之子查询临时表

原文:https://www.cnblogs.com/ZeroITStudy/p/13760654.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!