一、 会话临时表

--创建会话临时表
create global temporary table tmp_user_session(user_id int, user_name varchar2(20),user_email varchar2(30))
--这句表示 当事务提交时 保留数据
on commit preserve rows

--向临时表中插入数据
insert into tmp_user_session(user_id,user_name,user_email) values(1,'孙业宝','948987600@qq.com')
insert into tmp_user_session(user_id,user_name,user_email) values(1,'王丽莎','934560@qq.com')
commit
--查询 有数据
select * from tmp_user_session
--重新打开 一个sql窗口 再次查询 则无数据了 select * from tmp_user_session 说明此插入的数据 只为本窗口会话存在

二、创建事务临时表
--创建事务临时表
create global temporary table tmp_users_transaction (user_id int,user_name varchar2(20),user_email varchar2(30))
--这句表示 当事务提交时 删除数据
 on commit delete rows
 
 --向临时表中插入数据
insert into tmp_users_transaction(user_id,user_name,user_email) values(1,'孙业宝','948987600@qq.com');
insert into tmp_users_transaction(user_id,user_name,user_email) values(1,'王丽莎','934560@qq.com')

--查询 有数据
select * from tmp_users_transaction
--提交下语句 或者回滚事务 rollback  再次查询   select * from tmp_users_transaction  就没有数据了 因为事务临时表 就是在事务提交时 就数据清空了
commit;rollback;

--查看临时表的表空间,其实他们的表空间为空
  select table_name, tablespace_name
    from user_tables
   where table_name = 'T_USERS'
      or table_name = 'TMP_USERS_SESSION'
      or table_name = 'TMP_USERS_TRANSACTION'

临时表的应用场景
  1.大表分割
         众所周知,为表创建合适的索引可以在很大程度上提高数据查询的速度。但是当某个表的数据量相当大,例如数据量为亿级时,那么创建索引将会花费大量的时间,而且,查询大的索引表,与直接查询数据表相比,在性能上几乎没有任何优势,此时,一个常用的方法就是分割大表,例如:将大表分割为多个小的临时表,然后对这些小表进行相应操作,最后对所有查询结果进行综合处理。
  2.解决并行问题
         当多个进程同时对某张表进行操作时,往往会出现并行问题。
 3.作为数据缓存
    在程序段,可能需要对若干数据进行复杂运算。此时,可以创建一个临时表,并将这些数据存储在临时表中。因为可以像操作普通表一样操作临时表,这样,许多函数和sql语句都可以用来处理这些数据。

三、特殊表 dual

特殊表 dual 该表是每个数据库创建时默认生成的。该表仅有一列一行,在数据库开发中有着非常特殊的作用。
    1.分析dual表 执行
                select * from dual可以看出dual 只有一行一列。
    2. dual表的应用场景
              在oracle数据库中,dual表实际上是作为一个虚表的概念存在的。也就是说dual表存在的意义并非为了存储数据。更多的时候,dual表用来作为 from的源表。因为oracle的查询语句必须满足 select * from table name 语法格式,其中的from所指向的表是必须的,所以即使某些数据不属于任何表,也必须有一个强制的表名。dual表即可用做这个强制的虚表。
--查看dual表结构
select * from dual
--查询数据当前日期
select sysdate from dual
--计算结果
select 3*4-3 as results ,8-9 as plus from dual

Oracle 学习系列之二(会话与事务级临时表和dual表 )的更多相关文章

  1. Oracle学习系列1-7

    Oracle学习系列1 两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 3 ...

  2. Oracle学习系列6

    Oracle学习系列6 ************************************************************************************ 删除约 ...

  3. Oracle学习系列4

    Oracle学习系列4 ************************************************************************************ 数据库 ...

  4. Java命令学习系列(二)——Jstack

    Java命令学习系列(二)——Jstack 2015-04-18 分类:Java 阅读(512) 评论(0) jstack是java虚拟机自带的一种堆栈跟踪工具. 功能 jstack用于生成java虚 ...

  5. SQL Sever 学习系列之二

    SQL Sever 学习系列之二 SQL Server 学习系列之一(薪酬方案+基础) 四.有关时间输出问题      select GETDATE() 日期时间    ----显示为:2013-07 ...

  6. Oracle学习系列7

    Oracle学习系列7 ************************************************************************************ 关联表 ...

  7. Oracle学习系列5

    Oracle学习系列5 ************************************************************************************ ,掌握 ...

  8. Oracle学习系列3

    Oracle学习系列3 ************************************************************************************ 多表查 ...

  9. CAN总线学习系列之二——CAN总线与RS485的比较

    CAN总线学习系列之二——CAN总线与RS485的比较 上 一节介绍了一下CAN总线的基本知识,那么有人会问,现在的总线格式很多,CAN相对于其他的总线有什么特点啊?这个问题问的好,所以我想与其它总线 ...

随机推荐

  1. MongoDB源码概述——内存管理和存储引擎

    原文地址:http://creator.cnblogs.com/ 数据存储: 之前在介绍Journal的时候有说到为什么MongoDB会先把数据放入内存,而不是直接持久化到数据库存储文件,这与Mong ...

  2. CSS图片垂直居中方法

    让div里面的多行文本垂直居中的方法: div{height:100px;width:100px;border:solid 1px red;text-align:center; display:tab ...

  3. Mysql游标的简明写法

    -- cursor 游标/*declare 声明; declare 游标名 cursor for select_statement;open 找开; open 游标名fetch 取值; fetch 游 ...

  4. SIP 状态码

    SIP应答消息状态码 与功能 类型 状态码 状态说明临时应答(1XX) 100 Trying 正在处理中180 Ringing 振铃181 call being forwarder 呼叫正在前向182 ...

  5. MyEclipse9中的不伤眼修改、FreeMarker插件、JQuery提示插件、全屏(FullScreen)插件的安装

    ============下载相关附件===================== http://files.cnblogs.com/fhtwins/eclipse-fullscreen_1.0.7.zi ...

  6. MyEclipse背景色不伤眼+字体大小调节+代码格式化不换行

  7. 手把手教你玩转Git分布式版本控制系统! (转载)

    目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 Git诞生历史 ...

  8. PLSQL_基础系列11_递归和层次查询CONNECT BY(案例)

    2015-05-31 Created By BaoXinjian

  9. db2删除数据库

    1.断开所有连接  db2 stop application all   force 2.停止数据库    db2stop 3.删除数据库(系统管理员权限下)db2 drop  数据库name

  10. Axis2的下载和安装

    Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物.Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebService,同时还支持S ...