临时表,顾名思义,是临时创建并存放数据的普通表,创建之后,表结构依然存在,
但是表中的记录会根据不同级别的临时表会保留不同在不同的场景。临时表有事务级临时表:
只要会话当中有事务commit或者rollback操作,临时表中的记录就被删除。类似的,
会话级临时表就是当结束当前的会话在新会话查询时,表中的数据就被清空。
----创建临时表:
---创建事务级临时表:
suxing@PROD>create global temporary table t1(id int)
2 on commit delete rows;
Table created.
#事务级临时表创建成功。
--查看表结构:
suxing@PROD>desc t1
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER(38)
--插入一条数据并查询:
suxing@PROD>insert into t1 values(12);
1 row created.
suxing@PROD>select * from t1;
ID
----------
12
--插入另外一条数据:
suxing@PROD>select * from t1;
ID
----------
12
13
--提交事务后查看表结构并查询数据:
suxing@PROD>commit;
Commit complete.
suxing@PROD>desc t1
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER(38)
suxing@PROD>select * from t1;
no rows selected
#提交事务后,表依然还存在,只是表中的数据被清空了,
这就是事务级临时表。
--尝试使用CAST方式创建一个事务级临时表:
suxing@PROD>create global temporary table t2
2 on commit delete rows
3 as select * from yourtest;
Table created.
--查看表结构:
suxing@PROD>desc t2
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER(3)
NAME VARCHAR2(6)
CREATED DATE
--查看表数据:
suxing@PROD>select * from t2;
no rows selected
#查看表中没有数据,因为使用这种方式创建表的过程中有commit操作。
----创建会话级临时表:
--创建会话级临时表:
suxing@PROD>create global temporary table t3(y int)
2 on commit preserve rows;
Table created.
#临时表创建成功。
--查看表结构:
suxing@PROD>desc t3;
Name Null? Type
----------------------------------------- -------- ----------------------------
Y NUMBER(38)
--插入一条记录:
suxing@PROD>insert into t3 values(15);
1 row created.
--查看表数据:
suxing@PROD>select * from t3;
Y
----------
15
--提交事务并查看表数据:
suxing@PROD>commit;
Commit complete.
suxing@PROD>select * from t3;
Y
----------
15
#数据依然还保存着表中。
--关闭会话重新一个会话=登录suxing用户查看表t3的数据:
--查看表t3的表结构:
suxing@PROD>desc t3;
Name Null? Type
----------------------------------------- -------- ----------------------------
Y NUMBER(38)
--查看表t3的数据:
suxing@PROD>select * from t3;
no rows selected
#这样的表就是会话级临时表,当关闭当前的会话,创建新会话再次查询会话级临时表的
数据时,表中的数据已被清空,只剩下一张空表。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31392094/viewspace-2128319/ ,如需转载,请注明出处,否则将追究法律责任。