臨時表:像普通表同樣,有結構,可是對數據的管理上不同,臨時表存儲事務或會話的中間結果集,臨時表中保存的數據只對當前 會話可見,全部會話都看不到其餘會話的數據,即便其餘會話提交了,也看不到。臨時表不存在併發行爲,由於他們對於當前會話都是獨立的。(它默認是事務級別的)併發
在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