DB2 ORACLE 临时表创建「终于解决」

DB2 ORACLE 临时表创建「终于解决」DB2——临时表 一、临时表 临时表(TEMPORARY TABLE)通常应用在需要定义临时集合的场合。但是,在大部分需要临时集合的时候,我们根本就不需要定义临时表。当我们在一条SQL语句中只使用一…

DB2 ORACLE 临时表创建

一、临时表

    临时表(TEMPORARY TABLE)通常应用在需要定义临时集合的场合。但是,在大部分需要临时集合的时候,我们根本就不需要定义临时表。当我们在一条SQL语句中只使用一次临时集合时,我们可以使用嵌套表表达式来定义临时集合;当我们在一条SQL语句中需要多次使用同一临时集合时,我们可以使用公共表表达式;只有当我们在一个工作单元中的多条SQL语句中使用同一临时集合时,我们才需要定义临时表。

 

方法1:  
    DECLARE GLOBAL TEMPORARY TABLE SESSION.EMP  
    (  
        NAME VARCHAR(10),—姓名  
        DEPT SMALLINT,—部门  
        SALARY DEC(7,2)—工资  
    )  
    ON COMMIT DELETE ROWS;  
       
    方法2:  
    DECLARE GLOBAL TEMPORARY TABLE session.emp  
    LIKE staff INCLUDING COLUMN DEFAULTS  
    WITH REPLACE  
    ON COMMIT PRESERVE ROWS;  
       
    方法3:  
    DECLARE GLOBAL TEMPORARY TABLE session.emp AS  
    (  
        SELECT * FROM staff WHERE <condition>  
    )  
    DEFINITION ONLY  
    WITH REPLACE;

方法4:

DECLARE GLOBAL TEMPORARY TABLE session.emp    (  
        NAME VARCHAR(10),---姓名  
        DEPT SMALLINT,---部门  
        SALARY DEC(7,2)---工资  
    )  
   ON COMMIT PRESERVE ROWS NOT LOGGED WITH REPLACE;  

代码100分

二、全局声明式临时表

ON COMMIT PRESERVE ROWS定义声明式全局临时表 定义声明式全局临时表的每个会话拥有自己的独特的临时表描述。当会话终止时,表行和临时表描述均会被删除。 有如下选项,可控制commit后临时表的状态: 
ON COMMIT DELETE ROWS:在执行 COMMIT 操作时,如果表上没有打开 WITH HOLD 游标,就删除表中的所有行。这是默认设置。 
ON COMMIT PRESERVE ROWS:在执行 COMMIT语句指定所创建的临时表是会话级临时表,当我们断开连接或手动执行DELETE或TRUNCATE之前,临时表中的数据一直存在,并且只有当前会话可以看到,其他会话看不到。
ON ROLLBACK DELETE ROWS:在执行 ROLLBACK(或 ROLLBACK to SAVEPOINT)操作时,语句指定所创建的临时表是事务级临时表,当COMMIT或ROLLBACK之前,这些数据一直存在,当事务提交之后,表中数据自动清除。这是默认设置。
ON ROLLBACK PRESERVE ROWS:在执行 ROLLBACK(或 ROLLBACK to SAVEPOINT)操作时,保留表中的所有行。
delete rows用于事务相关,也就在事务结束后truncate data in the temporary table
with replace 指在程序结束后自动删除该临时表
as 指字段从另外一个表来的意思
definition only 指创建表的时候不同时进行数据插入。关键字就是指“只定义无数据”只创建表
1.在建表语句中使用NOT LOGGED INITIALLY,只是在建表事务中不记日记,并不能关闭这张表的日志。2.如果需要不记录事务日志,需要在每个事务的开头使用 db2 alter table  dbname activate NOT LOGGED INITIALLY 然后做commit.这里的不记日志操作,仅仅在同一个事务内有效,也就是说,这个事务结束(发出了commit命令)之后,后续操作会重新记录日志3.可以使用NOT LOGGED INITIALLY 做清空表的操作。  用法:      alter  table nolog_tab activate not logged initially with empty table       commit
preserve rows表示在会话结束后清除临时表的数据
前者在事务提交后数据就已经清除了.
后者在会话中止时或者导常退出时数据都会被清除掉

 

ORACLE——临时表

CREATE GLOBAL TEMPORARY TABLE session.emp   (  
        NAME VARCHAR(10),—姓名  
        DEPT SMALLINT,—部门  
        SALARY DEC(7,2)—工资  
    )  
   ON COMMIT PRESERVE ROWS;  

创建索引:

DB2:

 CREATE INDEX  idxName  ON  tabName  (cols) COLLECT STATISTICS

ORACLE:

代码100分CREATE INDEX idxName  ON   tabName  (cols)

 

 定义了临时表后,我们可以像使用普通表一样使用临时表。临时表只对定义它的用户有效,不同用户可以在同一时间定义同名的临时表,他们之间互不影响。临时表的生命周期是SESSION,当SESSION关闭时,临时表将自动删除,这也是临时表的模式名只能为SESSION的原因。此外,我们还可以给临时表定义索引。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7634.html

(0)
上一篇 2023-03-17
下一篇 2023-03-17

相关推荐

  • 【赵强老师】什么是Spark SQL?[通俗易懂]

    【赵强老师】什么是Spark SQL?[通俗易懂]一、Spark SQL简介 Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用。 为什么要学习Spark SQL?

    2023-03-17
    148
  • 换了网线异常了,CRS无法正常启动,clssnmSendingThread: sending status msg to all nodes[通俗易懂]

    换了网线异常了,CRS无法正常启动,clssnmSendingThread: sending status msg to all nodes[通俗易懂]换了网线异常了,CRS无法正常启动,clssnmSendingThread: sending status msg to all nodes同事换网线前我将节点2正常关闭了,换完网线告诉我,发现节点2

    2022-12-27
    126
  • 企业级数据治理工作怎么开展?Datahub这样做[亲测有效]

    企业级数据治理工作怎么开展?Datahub这样做[亲测有效]大数据发展到今天,扮演了越来越重要的作用。数据可以为各种组织和企业提供关键决策的支持,也可以通过数据分析帮助发现更多的有价值的东西,如商机、风险等等。 在数据治理工作开展的时候,往往会有一个专门负责数

    2023-05-29
    141
  • Pycharm 添加解释器全攻略

    Pycharm 添加解释器全攻略Pycharm 是 Python 开发人员最喜欢的 IDE 之一,它提供了许多有用的功能,如集成的调试器、版本控制、语法突出显示等。在 Pycharm 中,解释器是非常关键的,因为它是与你的项目互动并运行代码的基础。解释器是一个 Python 程序,它能够理解并运行你编写的 Python 代码。Pycharm 支持使用本地或远程解释器。它提供了多种类型的解释器,例如基础解释器、虚拟环境解释器、anaconda 等。在 Pycharm 中,你可以轻松地添加、删除或设置解释器。

    2024-09-07
    5
  • rds mysql区别_mysql中decimal

    rds mysql区别_mysql中decimalRDBMS即关系数据库管理系统(Relational Database Management System)的特点: 数据以表格的形式出现 每行为各种记录名称 每列为记录名称所对应的数据域 许多的行…

    2023-02-06
    151
  • mongodb使用案例_mongodb使用场景

    mongodb使用案例_mongodb使用场景mongodb安装完成后一直无法使用IP连接: 如果MongoDB服务未安装,则直接执行下面命令安装,无法自动创建的文件需要手动去创建。 mongod –dbpath=E:mongodbdatad…

    2023-04-04
    140
  • Python Tkinter GUI布局方案

    Python Tkinter GUI布局方案Python Tkinter是一种Python的标准GUI库,它提供了丰富的图形用户界面组件和功能,让开发者能够方便地创建漂亮、可靠的用户界面。布局(Layout)是Tkinter GUI开发中一个非常重要的环节,它决定了每个组件在屏幕上的位置、大小以及与其他组件之间的关系。在本文中,我们将探讨Python Tkinter中常用的布局方案及其优缺点,并提供相应的代码示例。

    2024-01-22
    102
  • 麒麟820 荣耀30s_麒麟可以随便买吗

    麒麟820 荣耀30s_麒麟可以随便买吗 荣耀30S发布已经有一段时间,自始至终这款手机的焦点都是在麒麟820处理器上,那么这款处理器对荣耀30S和荣耀手机在哪些方面有影响呢?   首先从时间节点上看,荣耀30S是荣耀2020的开年之作,…

    2023-02-22
    133

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注