有兩種型別的臨時表:
會話級的臨時表
事務級的臨時表
1) 會話級的臨時表因為這這個臨時表中的資料和你的當前會話有關係,當你當前session 不退出的情況下,臨時表中的資料就還存在,而當你退出當前session 的時候,臨時表中的資料就全部沒有了,當然這個時候你如果以另外乙個session 登陸的時候是看不到另外乙個session 中插入到臨時表中的資料的。即兩個不同的session 所插入的資料是互不相干的。當某乙個session 退出之後臨時表中的資料就被截斷(truncate table ,即資料清空)了。會話級的臨時表建立方法:
create global temporary table table_name
(col1 type1,col2 type2...) on commit preserve rows ;
舉例:
create global temporary table student
(stu_id number(5),
class_id number(5),
stu_name varchar2(8),
stu_memo varchar2(200)) on commit preserve rows ;
2) 事務級臨時表是指該臨時表與事務相關,當進行事務提交或者事務回滾的時候,臨時表中的資料將自行被截斷,其他的內容和會話級的臨時表的一致(包括退出session 的時候,事務級的臨時表也會被自動截斷)。事務級臨時表的建立方法:
create global temporary table table_name
(col1 type1,col2 type2...) on commit delete rows ;
舉例:
create global temporary table classes
(class_id number(5),
class_name varchar2(8),
class_memo varchar2(200)) on commit delete rows ;
3) 兩中型別臨時表的區別
會話級臨時表採用 on commit preserve rows ;而事務級則採用 on commit delete rows ;用法上,會話級別只有當會話結束臨時表中的資料才會被截斷,而且事務級臨時表則不管是 commit 、 rollback 或者是會話結束,臨時表中的資料都將被截斷
4 )什麼時候使用臨時表
1 )、當某乙個 sql 語句關聯的表在 2 張及以上,並且和一些小表關聯。可以採用將大表進行分拆並且得到比較小的結果集合存放在臨時表中
2 )、程式執行過程中可能需要存放一些臨時的資料,這些資料在整個程式的會話過程中都需要用的等等。
3 .臨時表的不足之處
1 )不支援 lob 物件,這也許是設計者基於執行效率的考慮,但實際應用中確實需要此功能時就無法使用臨時表了。
2 )不支援主外來鍵關係
Oracle 建表語句
create table table name id numner 12 text verchar2 255char not null char型別,乙個漢字佔乙個長度 pid varchar2 32 byte notnull byte型別,utf8乙個漢字佔大約兩個長度 status number...
oracle刪除表語句
刪除表 記錄和結構 的語名delete truncate drop delete 刪除資料表裡記錄的語句 delete from表名 where 條件 注意 刪除記錄並不能釋放oracle裡被占用的資料塊表空間.它只把那些被刪除的資料塊標成unused.如果確實要刪除乙個大表裡的全部記錄,可以用 t...
oracle經典建表語句 scott建表
oracle經典建表語句 scott建表 複製 create table emp empno number 4 primary key,ename varchar2 10 job varchar2 9 mgr number 4 hiredate date,sal number 7,2 comm nu...