当前位置: 首页 > news >正文

oracle 不同用户 关联表_【DB笔试面试517】在Oracle中,什么是临时表?它有哪些分类?有关临时表需要注意什么?...

4f5fa1f6138e5ea12a21a1da9a6f3232.gif

题目 部分

在Oracle中,什么是临时表?它有哪些分类?有关临时表需要注意什么?

      答案部分

目前所有使用Oracle作为数据库支撑平台的应用,大部分是数据量比较庞大的系统,即表的数据量级一般情况下都是在百万级以上。当然,在Oracle中创建分区是一种不错的选择,但是当发现应用有多张表关联的时候,并且这些表大部分都比较庞大,而关联的时候发现其中的某一张或者某几张表关联之后得到的结果集非常小,并且查询得到这个结果集的速度非常快,那么这个时候考虑在Oracle中创建“临时表”。

在创建数据表的时候,如果没有特殊地指明,那么创建的表是一个永久的关系型表,也就是说,这个表中对应的数据,除非是显式地删除,否则表中的数据是永远都存在的。相对应的,在Oracle数据库中,还有一种类型的表,叫做临时表。这个临时表跟永久表最大的区别就是表中的数据不会永远地存在。当一个会话结束或者事务结束的时候,这个临时表中的数据,不用用户自己删除,数据库自己会自动清除。

Oracle的临时表创建之后基本不占用表空间,如果没有指定临时表(包括临时表的索引)存放的表空间,那么插入到临时表的数据是存放在Oracle系统的默认临时表空间中(TEMP),一个系统可能有多个临时表空间。临时表的数据只能存放在临时表空间中。

临时表的数据只是在事务期间存在,对于会话类型的临时表,数据在会话期间存在,会话的数据对于当前会话私有,每个会话只能看到并修改自己的数据。DML锁不会加到临时表的数据上。可以对临时表创建索引、视图、触发器,可以用exp和imp工具导入导出表的定义,但是不能导出数据。

(一)临时表的特点

① 多用户操作的独立性:对于使用同一张临时表的不同用户,Oracle都会分配一个独立的TEMP SEGMENT,这样就避免了多个用户在对同一张临时表操作时发生交叉,从而保证了多个用户操作的并发性和独立性。

② 数据的临时性:既然是临时表,顾名思义,存放在该表中的数据是临时性的。Oracle根据创建临时表时指定的参数(ON COMMIT DELETE ROWS / ON COMMIT PRESERVE ROWS),自动将数据TRUNCATE掉。

(二)临时表的分类

Oracle数据库根据临时表的性质不同,可以分为事务临时表(ON COMMIT DELETE ROWS)与会话临时表(ON COMMIT PRESERVE ROWS)。

1、事务临时表

事务临时表是指数据只有在当前事务内有效,该临时表与事务相关,当进行事务提交或者事务回滚的时候,临时表中的数据将自动被清空,其它的内容和会话级的临时表的一致(包括退出SESSION的时候,事务级的临时表的数据也会被清空)。一般情况下,如果在创建数据表的时候,没有特殊指明表是会话临时表的话,那么该表默认为事务临时表。

以下三种情况下,事务临时表中的数据就会被清空:

① 提交事务(COMMIT)

② 回滚事务(ROLLBACK)

③ 退出SESSION

创建事务临时表的语法如下所示:

CREATE GLOBAL TEMPORARY TABLE  TABLE_NAME

(COL1 TYPE1,COL2 TYPE2...)

[ON COMMIT DELETE ROWS];

事务临时表示例如下所示:

 1SYS@lhrdb> CREATE GLOBAL TEMPORARY TABLE CGTT_DELETE_LHR AS SELECT * FROM SCOTT.EMP WHERE 1=2;
2Table created.
3SYS@lhrdb> INSERT INTO CGTT_DELETE_LHR SELECT * FROM SCOTT.EMP WHERE ROWNUM<=5;
45 rows created.
5SYS@lhrdb> SELECT * FROM CGTT_DELETE_LHR;
6     EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO
7---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
8      7369 SMITH      CLERK           7902 1980-12-17 00:00:00        800                    20
9      7499 ALLEN      SALESMAN        7698 1981-02-20 00:00:00       1600        300         30
10      7521 WARD       SALESMAN        7698 1981-02-22 00:00:00       1250        500         30
11      7566 JONES      MANAGER         7839 1981-04-02 00:00:00       2975                    20
12      7654 MARTIN     SALESMAN        7698 1981-09-28 00:00:00       1250       1400         30
13SYS@lhrdb> COMMIT;
14Commit complete.
15SYS@lhrdb>  SELECT * FROM CGTT_DELETE_LHR;
16no rows selected
从示例中可以看到,当执行完COMMIT后,当前会话就看不到数据了。

相关文章:

  • small用于不连续数组_左神直通BAT算法之找出B中不属于A的数
  • python接口自动化测试报告_python接口自动化(二十八)--html测试 报告——下(详解)...
  • python对键和值有没有类型限制_python基础之-数据类型
  • python编程小白变大神_零基础Python,从小白到大神的方法全在这了!
  • 如果表不存在则创建_当创建一个文件的时候,操作系统发生了什么
  • 胖终端和瘦终端的区别_企业级无线覆盖与家庭级无线覆盖的区别与发展趋势
  • pythonnode js结合_Node js 和 python 混合编程之JSON入参的区别 如何转换js对象使其能在python脚本中作为python 字典直接使用...
  • sql 统计每月入职离职人数_说离职就离职,他们就不害怕失业吗,为什么90后的离职率那么高...
  • redis 端口_基础架构之Redis
  • python check module_Python 的 module 机制(重要)
  • springboot技术架构图_阿里技术专家告诉你:如何画出优秀的架构图
  • python嗅探m3u8_python通过m3u8下载视频
  • 安装python3.6.1的步骤_在Linux上安装Python3.6.1
  • python单词按字典序输出_python – 我可以通过匹配键作为前缀在字典中保留新单词...
  • 后台页面需要设置登录过期时间吗_电商后台优惠券设计
  • [case10]使用RSQL实现端到端的动态查询
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【Linux系统编程】快速查找errno错误码信息
  • Brief introduction of how to 'Call, Apply and Bind'
  • classpath对获取配置文件的影响
  • CODING 缺陷管理功能正式开始公测
  • ComponentOne 2017 V2版本正式发布
  • iOS 颜色设置看我就够了
  • JavaScript DOM 10 - 滚动
  • java中的hashCode
  • linux学习笔记
  • Mocha测试初探
  • spring + angular 实现导出excel
  • spring boot下thymeleaf全局静态变量配置
  • Spring Cloud Feign的两种使用姿势
  • v-if和v-for连用出现的问题
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 诡异!React stopPropagation失灵
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 批量截取pdf文件
  • 扑朔迷离的属性和特性【彻底弄清】
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 微信小程序实战练习(仿五洲到家微信版)
  • 译有关态射的一切
  • 进程与线程(三)——进程/线程间通信
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • $jQuery 重写Alert样式方法
  • (003)SlickEdit Unity的补全
  • (arch)linux 转换文件编码格式
  • (C++)八皇后问题
  • (Ruby)Ubuntu12.04安装Rails环境
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (附源码)ssm高校实验室 毕业设计 800008
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (转)菜鸟学数据库(三)——存储过程