临时表:像普通表同样,有结构,可是对数据的管理上不同,临时表存储事务或会话的中间结果集,临时表中保存的数据只对当前 会话可见,全部会话都看不到其余会话的数据,即便其余会话提交了,也看不到。临时表不存在并发行为,由于他们对于当前会话都是独立的。(它默认是事务级别的)并发
在oracle中临时表可分为会话级临时表和事务级别临时表。oracle
临时表的做用:对于庞大的数据咱们只要查询其中一小部分结果集这样咱们能够借助临时表。spa
1.会话级别临时表生命周期
会话级临时表是指临时表中的数据只在会话生命周期之中存在,当用户退出会话结束的时候,Oracle自动清除临时表中数据。事务
create global temporary table aaa(id number) on commit oreserve rows;get
insert into aaa values(100);it
select * from aaa;table
这是当你在打开另外一个会话窗口的时候再次查询,表内的数据就查询不到了。class
2.事务级别的临时表object
create global temporary table bbb(id number) on commit delete rows;
insert into bbb values(200);
select * from bbb;
这时当你执行了commit和rollback操做的话,再次查询表内的数据就查不到了。
默认下的:
SQL> create global temporary table aaa as select * from dba_objects;Table created.SQL> select * from aaa;--没有数据,由于省掉了on commit delete rows