临时表的创建与测试

临时表,顾名思义,是临时创建并存放数据的普通表,创建之后,表结构依然存在,
但是表中的记录会根据不同级别的临时表会保留不同在不同的场景。临时表有事务级临时表:
只要会话当中有事务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博客 ” ,链接:http://blog.itpub.net/31392094/viewspace-2128319/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31392094/viewspace-2128319/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值