什么是临时表,用户做一个操作查询出几百几千条数据,我们可以把数据放在内存中。当有很多用户都这样做,内存空间不足,这个时候就需要把数据保存在磁盘上。对于 oracle 就提供了一种临时表用于存放这些数据。
 
事务级
会话级
 
on commit preserve rows --session 临时表
on commit delete rows --transaction 临时表
 
下面演示创建一个事务级别与会话级别的两个临时表
 
SQL> conn test/test
Connected.
SQL> desc test;
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER
NAME VARCHAR2(10)
在 sys 下创建 sessione 级别的临时表
SQL> conn / as sysdba
Connected.
SQL> create global temporary table session_test on commit preserve rows as select * from test.test;
Table created.
SQL> commit; Commit complete.

  

on commit preserve rows 表示创建的表是 session 级别,只要用户不退出,临时表一直有效。
 
SQL> select * from session_test;

        ID NAME
---------- ----------
0 orcl
1 orcl
3 orcl
2 orcl

  

退出并重新进入,并验证表内容是否存在。

SQL> exit
…… SQL> select * from session_test; no rows selected SQL>

  

查看 session 级别的临时表在断开连接后,重新登录查看变为空了。

接下来创建事务级别的临时表

SQL> create global temporary table transaction_test on commit delete rows as select * from test.test;

Table created.

  

on commit delete rows 表示创建的表是事务级别,这个临时表的作用范围只在一个事务内有效。

验证事务临时表的作用范围:
虽然是 copy 的 test.test 表,但是依然是没有数据。

SQL> select * from transaction_test;

no rows selected

  

接下来添加数据到事务临时表 transaction_test

SQL> insert into transaction_test select * from test.test; 

4 rows created.

SQL> select * from transaction_test;

        ID NAME
---------- ----------
0 orcl
1 orcl
3 orcl
2 orcl

  

如上我们将 test.test 表的内容插入到了 transaction_test 表中,然后直接查询,能查到刚刚插入的数据。

接下来提交,并查询。(提交相当于提交事务,也就是一个事务的结束)

SQL> select * from transaction_test;

        ID NAME
---------- ----------
0 orcl
1 orcl
3 orcl
2 orcl SQL> commit; Commit complete. SQL> select * from transaction_test; no rows selected

  

由此可见

会话级别的临时表,只要会话不断开,临时表一直有效,会话断开后,临时表内容清空;
事务级别的临时表,只在一个事务内有效,事务提交后,临时表内容清空。

Oracle临时表的功能与应用的更多相关文章

  1. ORACLE临时表总结

    临时表概念 临时表就是用来暂时保存临时数据(亦或叫中间数据)的一个数据库对象,它和普通表有些类似,然而又有很大区别.它只能存储在临时表空间,而非用户的表空间.ORACLE临时表是会话或事务级别的,只对 ...

  2. ORACLE临时表空间

    ORACLE临时表空间总结 2014-10-05 11:35 by 潇湘隐者, 临时表空间概念 临 时表空间用来管理数据库排序操作以及用于存储临时表.中间排序结果等临时对象,当ORACLE里需要用到S ...

  3. ORACLE临时表总结(转载)

    转载地址:http://www.cnblogs.com/kerrycode/p/3285936.html 临时表概念 临时表就是用来暂时保存临时数据(亦或叫中间数据)的一个数据库对象,它和普通表有些类 ...

  4. Oracle临时表GLOBAL TEMPORARY TABLE

    临时表:像普通表一样,有结构,但是对数据的管理上不一样,临时表存储事务或会话的中间结果集,临时表中保存的数据只对当前 会话可见,所有会话都看不到其他会话的数据,即使其他会话提交了,也看不到.临时表不存 ...

  5. 详解Oracle临时表的几种用法及意义

    Oracle临时表可以说是提高数据库处理性能的好方法,在没有必要存储时,只存储在Oracle临时表空间中.希望本文能对大家有所帮助. 1 .前言 Oracle Logo 目前所有使用 Oracle 作 ...

  6. ORACLE临时表总结[转]

    临时表概念 临时表就是用来暂时保存临时数据(亦或叫中间数据)的一个数据库对象,它和普通表有些类似,然而又有很大区别.它只能存储在临时表空间,而非用户的表空间.ORACLE临时表是会话或事务级别的,只对 ...

  7. oracle 临时表学习

    临时表概念 临时表就是用来暂时保存临时数据(亦或叫中间数据)的一个数据库对象,它和普通表有些类似,然而又有很大区别.它只能存储在临时表空间,而非用户的表空间.ORACLE临时表是会话或事务级别的,只对 ...

  8. oracle 临时表空间的增删改查

    oracle 临时表空间的增删改查 oracle 临时表空间的增删改查 1.查看临时表空间 (dba_temp_files视图)(v_$tempfile视图)select tablespace_nam ...

  9. Oracle临时表on commit preserver rows和on commit delete rows区别

    Oracle 临时表:在 Oracle 中创建一张表,这个表不用于其他的什么功能,主要用于自己的软件系统一些特有功能才用的,而当你用完之后表中的数据就没用了. Oracle 的临时表创建之后基本不占用 ...

随机推荐

  1. 路由器与交换机配置——交换机默认网关(实现跨网段telnet)

    一.实验目的:配置一台交换机,并配置默认网关,使不同网段的主机能够远程telnet登录连接到交换机 二.实验拓扑图如下: 二.实验步骤: 1.首先给PC1主机配置ip地址和网关(gateway) -- ...

  2. 51 Nod 1043 幸运号码(需重做好好体会)

    转自:http://www.cnblogs.com/geloutingyu/p/6329594.html 一道非常好的dp题目. 1043 幸运号码  基准时间限制:1 秒 空间限制:131072 K ...

  3. jQuery文档操作之删除操作

    remove() 语法: $(selector).remove(); 解释:删除节点后,事件也会删除(简言之,删除了整个标签) $("ul").remove(); detach() ...

  4. 统计mysql某个数据库的表数量以及表记录数

        统计MySQL中某个数据库中有多少张表 SELECT count(*) TABLES, table_schema FROM information_schema.TABLES    where ...

  5. Java实现字串统计

    对字符串的操作,无论再难的算法题,只要时间充足,相信每个同学都可以搞定. 但是浪费太多时间去搞一个逻辑算法没太大意义,学会学习,不但可以增长自己的知识,更可以节省时间,俗话说,一寸光阴一寸金,寸金难买 ...

  6. 【python / mxnet / gluoncv / jupyter notebook】基于mxnet和gluoncv的图像内容识别

    程序环境为高性能集群:CPU:Intel Xeon Gold 6140 Processor * 2(共36核心)内存:512GB RAMGPU:Tesla P100-PCIE-16GB * 2 In  ...

  7. 注意机制CBAM

    这是一种用于前馈卷积神经网络的简单而有效的注意模块. 给定一个中间特征图,我们的模块会沿着两个独立的维度(通道和空间)依次推断注意力图,然后将注意力图乘以输入特征图以进行自适应特征修饰. 由于CBAM ...

  8. 【原】vue-router中params和query的区别

    1.引入方式不同 query要用path来引入 this.$router.push({ path: 'test', query: { type: 2, detail: '哈哈' } }) params ...

  9. anroid学习笔记(1)

    大概是2个月前,报名了慕课的android就业班课程. 算是补全了当初博客分类的最初设计. 安卓和前端比较: 1,java在安卓开发中的作用,现在我的认识是和JavaScript在前端web开发中有很 ...

  10. 二、Spring Boot 中maven中dependencies所有的jar包都报红,install报错(https://repo.maven.apache.org/maven2): Not authorized , ReasonPhrase:Authorizatio

    问题一:现象:打开SpringBoot项目后,所有依赖包都报红色波浪线 1.install报错(https://repo.maven.apache.org/maven2): Not authorize ...