Oracle 学习系列之二(会话与事务级临时表和dual表 )
一、 会话临时表
--创建会话临时表
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表 )的更多相关文章
- Oracle学习系列1-7
Oracle学习系列1 两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 3 ...
- Oracle学习系列6
Oracle学习系列6 ************************************************************************************ 删除约 ...
- Oracle学习系列4
Oracle学习系列4 ************************************************************************************ 数据库 ...
- Java命令学习系列(二)——Jstack
Java命令学习系列(二)——Jstack 2015-04-18 分类:Java 阅读(512) 评论(0) jstack是java虚拟机自带的一种堆栈跟踪工具. 功能 jstack用于生成java虚 ...
- SQL Sever 学习系列之二
SQL Sever 学习系列之二 SQL Server 学习系列之一(薪酬方案+基础) 四.有关时间输出问题 select GETDATE() 日期时间 ----显示为:2013-07 ...
- Oracle学习系列7
Oracle学习系列7 ************************************************************************************ 关联表 ...
- Oracle学习系列5
Oracle学习系列5 ************************************************************************************ ,掌握 ...
- Oracle学习系列3
Oracle学习系列3 ************************************************************************************ 多表查 ...
- CAN总线学习系列之二——CAN总线与RS485的比较
CAN总线学习系列之二——CAN总线与RS485的比较 上 一节介绍了一下CAN总线的基本知识,那么有人会问,现在的总线格式很多,CAN相对于其他的总线有什么特点啊?这个问题问的好,所以我想与其它总线 ...
随机推荐
- 【原】sql 查询结果合为一行
SELECT COUNT(*) AS AllCount,t.AssignedCount,(COUNT(*)-t.AssignedCount) AS UnassignedCountFROM 药品表jOI ...
- (MVVM) button enable 时,UI没有被刷新。
if (!this.CanExecuteSubmitButton) { this.CanExecuteSubmitButton = true; CommandManager.InvalidateReq ...
- DG_Oracle DataGuard Failover主备节点切换(案例)
2014-03-09 Created By BaoXinjian Thanks and Regards
- Win7+VMware Workstation环境下的CentOS-Linux网络连接设置
Win7+VMware Workstation环境下的CentOS-Linux网络连接设置 http://blog.sciencenet.cn/blog-430991-507041.html 近日 ...
- python(8) 自己制造异常让程序退出,把print的内容写入到文件
异常 也可以自己输出异常原因: raise Exception("404 404 404") import math import time #print 到文件的代码****** ...
- [物理学与PDEs]第3章习题参考解答
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场 [物理学与PDEs]第3章习题2 仅受重力作用的定常不可压流理想流体沿沿流线的一个守恒量 [物理学与PDEs]第3章习题3电磁场的矢势在 Lo ...
- 深入理解Javascript
http://www.cnblogs.com/TomXu/archive/2011/12/15/2288411.html 1.编写高质量JavaScript代码的基本要点 2.Javascript函数 ...
- Configuration problem: Only one AsyncAnnotationBeanPostProcessor may exist within the context.
去配置文件中找 , 某个配置文件被引用了两次以上.移除后保留一个即可.如下即可产生上述问题 <import resource="classpath:testContext-curren ...
- JQ获取当前是第几个元素,以及直接选取第几个元素的方法
一.获取当前是第几个元素的方法使用:$(this).index() 实例: $(function () { $('.menu li').mouseover(function () { alert($( ...
- linux中deb怎样安装
deb是Debian Linux的安装格式,跟Red Hat的rpm非常相似,最基本的安装命令是:dpkg -i file.debdpkg 是Debian Package的简写,是为Debian 专门 ...