Oracle创建临时表

Oracle临时表

临时表是一种特殊的表。当需要对某一(也可以是多个)表中的一批数据进行反复的操作时,通过为这批数据创建一个临时表,可能会简化操作并且有可能提高效率。

语法:
CREATE GLOBAL TEMPORARY TABLE 临时表空间名
ON COMMIT DELETE ROWS 
ON COMMIT PRESERVE ROWS
(colum,colum,);

子句说明:

  • ON COMMIT DELETE ROWS
    (说明数据行只有在当前事务中可见,也是默认值,事务提交后数据行将消失)
  • ON COMMIT PRESERVE ROWS :(说明数据行仅在当前会话中可见)

实例:
使用ON COMMIT PRESERVE ROWS根据emp_tran表创建一个仅当前会话可见的临时表

CREATE GLOBAL TEMPORARY TABLE 
emp_temp
ON COMMIT PRESERVE ROWS
AS SELECT * FROM emp_tran;
Table created.

查询验证:

SQL> select * from emp_temp;
     EMPNO ENAME				JOB 	        SAL
---------------- ------------------ --------------------
      7369 SMITH		      CLERK            3500
      7876 ADAMS			  CLERK   	   	   3500
      7900 JAMES		      CLERK            2000
3 rows selected.

查询验证临时表是否使用表空间:

SELECT table_name, tablespace_name, temporary FROM dba_tables WHERE owner = 'NICE';

TABLE_NAME		       TABLESPACE_NAME	      TEMPORARY
---------- --------------------------- ------------------
……
EMP_TEMP						                    Y
CLASSINFO		       DATA_TABLEONE		        N
8 rows selected.
SQL>

结果显示:表emp_temp为临时表,因为最后一列值为Y,而该表也没有放在该用户默认表空间USERS中,所以该临时表表使用的是临时段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值