首页 > 数据库 >Oracle 19C学习 - 20. 临时表

Oracle 19C学习 - 20. 临时表

时间:2022-11-12 18:44:14浏览次数:42  
标签:tmp 20 临时 depts CREATE SQL Oracle TABLE 19C

临时表是什么

临时表是用来暂时保存临时数据的一个数据库对象。
它只能保存在临时表空间,而无法保存在用户表空间。

Oracle中,临时表分为SESSION会话和TRANSACTION事务两种。

  1. SESSION级的临时表整个SESSION都存在,直到会话结束。
  2. TRANSACTION级的临时表在TRANSACTION结束后消失,即COMMIT/ROLLBACK或者会话断开。

临时表的特点

  1. 不支持主外键关系。
  2. 不能永久保存数据。
  3. 临时表的数据不会备份、恢复,对其修改会产生少量日志信息。
  4. 临时表不会有DML锁。
  5. 临时表可以创建临时的索引和视图。
  6. 如果要DROP会话级别的临时表,如果其中有数据,需要先截断其中数据,否则会报错。
  7. ORACLE 12C以后专门为临时表准备了临时UNDO,以再次减少REDO和UNDO产生的量。

创建session临时表

SQLPLUS中

CREATE GLOBAL TEMPORARY TABLE TMP_DEPTS
(
    department_id NUMBER,
    department_name VARCHAR2(40)
) ON COMMIT PRESERVE ROWS;

SQL> INSERT INTO tmp_depts SELECT 1, 'IT' FROM dual;

SQL> INSERT INTO tmp_depts SELECT 2, 'EO' FROM dual;

SQL> COMMIT;

Commit complete.

无法删除此表
SQL> DROP TABLE tmp_depts PURGE;
ERROR at line 1:
ORA-14452: attempt to create, alter or drop an index on temporary table already
in use


手工TRUNCATE,在删除就可以。
SQL> TRUNCATE TABLE tmp_depts;

Table truncated.

SQL> DROP TABLE tmp_depts PURGE;

Table dropped.


用户退出的时候,临时表还会在,只是数据没有了。

为临时表创建视图

CREATE VIEW 视图名 AS 临时表查询

SQL> CREATE VIEW v_tmp_depts AS SELECT department_name FROM tmp_depts;
View created.

为临时表创建索引

创建临时表索引,必须保证临时表是没有数据的。

SQL> CREATE INDEX TMP_DEPTS_DEPARTMENT_ID_IDX ON tmp_depts(department_id);
CREATE INDEX TMP_DEPTS_DEPARTMENT_ID_IDX ON tmp_depts(department_id)
                                            *
ERROR at line 1:
ORA-14452: attempt to create, alter or drop an index on temporary table already
in use

SQL> TRUNCATE TABLE tmp_depts;
Table truncated.

SQL> CREATE INDEX TMP_DEPTS_DEPARTMENT_ID_IDX ON tmp_depts(department_id);
Index created.

创建TRANSACTION级临时表

SQLPLUS中

SQL> CREATE GLOBAL TEMPORARY TABLE tmp_emp
  2  (
  3     employee_id number,
  4     employee_name varchar2(40)
  5  ) ON COMMIT DELETE ROWS;

Table created.

SQL> INSERT INTO tmp_emp VALUES (1, 'IT');
1 row created.

SQL> INSERT INTO tmp_emp VALUES (2, 'EO');
1 row created.

SQL> commit;
Commit complete.

SQL> SELECT * FROM tmp_emp;
no rows selected

标签:tmp,20,临时,depts,CREATE,SQL,Oracle,TABLE,19C
From: https://www.cnblogs.com/slqleozhang/p/16884398.html

相关文章

  • 020.Mybatis的二级缓存---(1)
    1.Mybatis的二级缓存  2.怎样开启Mybatis的二级缓存  3.怎样开启Mybatis的二级缓存3.1在MybatisTest.java中测试一级缓存/***测试一级缓存......
  • Oracle 19C学习 - 19. MERGE语句
    Merge语句的作用Merge语句可以根据不同条件,获取插入、更新、删除数据表中的行,然后从一个或者多个数据源头对表进行更新或向表中插入行。Merge语句的语法MERGEINTO表名......
  • [Ynoi2010] y-fast trie
    [Ynoi2010]y-fasttrie思路考虑在插入所有元素的时候对\(C\)取模。那么可以分类讨论了:\(0\leqx+y<C\)\(x+y\geqC\)考虑第二种情况等价于取集合中前两大的数,可......
  • 2022-2023-1学期 20221417 《计算机基础与程序设计》第11周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(如2022-2023-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2022-2023-1计算机基础与程序设计第十一......
  • 20. 数组去重方法
    1.使用ES6新增的set方法 2.双重for循环 3. sort排序后去重functionfn(arr){letnewArr=[]arr.sort((a,b)=>{returna-b})arr.f......
  • 第二章第2节: 2020.04.25 智能互联网之核心技术实践篇【二】
                     ......
  • 2022.11.11
    今天,全校都去秋游了,只有Oier还在训练。P5004专心OI-跳房子其实就是前一天那道P5059中国象棋的加强版。状态转移方程也就略有变动:\(f_i=\sum_{j=1}^{i-m-1}f......
  • MBR40200PT-ASEMI插件肖特基二极管MBR40200PT
    编辑-ZMBR40200PT在TO-247封装里采用的2个芯片,其尺寸都是130MIL,是一款插件肖特基二极管。MBR40200PT的浪涌电流Ifsm为350A,漏电流(Ir)为0.05mA,其工作时耐温度范围为-65~175摄......
  • ASEMI肖特基二极管MBR30200PT图片,MBR30200PT规格书
    编辑-ZASEMI肖特基二极管MBR30200PT参数:型号:MBR30200PT最大重复峰值反向电压(VRRM):200V最大平均正向整流输出电流(IF):30A峰值正向浪涌电流(IFSM):275A每个元件的典型热阻(ReJA):1.4℃/......
  • MBR40200PT-ASEMI插件肖特基二极管MBR40200PT
    编辑-ZMBR40200PT在TO-247封装里采用的2个芯片,其尺寸都是130MIL,是一款插件肖特基二极管。MBR40200PT的浪涌电流Ifsm为350A,漏电流(Ir)为0.05mA,其工作时耐温度范围为-65~175......