SQLServer临时表与Oracle临时表

计算机网络(国家电网) 1.局域网中NOS(网络操作系统)提供的通信服务有工作站与工作站之间的对等通信,工作站与服务器之间的通信2.ISP:Internet服务商应用层 APDU(应用层协议数据单元)表示层 PPDU(表示层协议数据单元)会话层 SPDU(会话层协议数据单元)传输层 segment(报文段)网络层 packet (数据包)数据链路层 frame(数据帧)物理层 bit (比特)4. 阅读详情
1.首先了解Transaction事务 / Session会话 Session会话 简单的说,是一个用户连接到数据库是就会创建一个Session,这个Session会在用户断开连接时被释放 在一个Session会话内可以执行多个Transaction事务,可以有以下语句组成一个或多个DML语句组成
一个DDL语句组成
一个DCL语句组成 以第一个可执行的SQL语句开始。当下列事件之一发生时结束。1.用户执行了COMMIT语句(提交)
2.用户执行了ROLLBACK语句(回滚)
3.用户执行了DDL语句(自动提交)
4.用户执行了DCL语句(自动提交)
5.用户正常退出SQL*PLUS(自动提交)
6.用户非正常退出SQL*PLUS(自动回滚)
7.系统崩溃,包括硬件或软件故障(自动回滚) 简单的理解就是,一个会话Session是由一到多个事务Transaction组成的当autoCommit为true时,几乎每条语句都是一个事务当autoCommit为false时,需要显示的执行commit或者rollback也可以显示的定义事务,例如 Transaction this_is_a_trans … Commit[Rollback] this_is_a_trans 2.SQL Server临时表 可以创建本地和全局临时表。本地临时表仅在当前会话中可见;全局临时表在所有会话中都可见。本地临时表的名称前面有一个编号符 (#table_name),而全局临时表的名称前面有两个编号符 (##table_name)。SQL 语句使用 CREATE TABLE 语句中为 table_name 指定的名称引用临时表:CREATE TABLE #MyTempTable (cola INT PRIMARY KEY)INSERT INTO #MyTempTable VALUES (1) 如果本地临时表由存储过程创建或由多个用户同时执行的应用程序创建,则 SQL Server 必须能够区分由不同用户创建的表。为此,SQL Server 在内部为每个本地临时表的表名追加一个数字后缀。存储在 tempdb 数据库的 sysobjects 表中的临时表,其全名由 CREATE TABLE 语句中指定的表名和系统生成的数字后缀组成。为了允许追加后缀,为本地临时表指定的表名 table_name 不能超过 116 个字符。 除非使用 DROP TABLE 语句显式除去临时表,否则临时表将在退出其作用域时由系统自动除去:

当存储过程完成时,将自动除去在存储过程中创建的本地临时表。由创建表的存储过程执行的所有嵌套存储过程都可以引用此表。但调用创建此表的存储过程的进程无法引用此表。

所有其它本地临时表在当前会话结束时自动除去。

全局临时表在创建此表的会话结束且其它任务停止对其引用时自动除去。任务与表之间的关联只在单个 Transact-SQL 语句的生存周期内保持。换言之,当创建全局临时表的会话结束时,最后一条引用此表的 Transact-SQL 语句完成后,将自动除去此表。

 在存储过程或触发器中创建的本地临时表与在调用存储过程或触发器之前创建的同名临时表不同。如果查询引用临时表,而同时有两个同名的临时表,则不定义针对哪个表解析该查询。嵌套存储过程同样可以创建与调用它的存储过程所创建的临时表同名的临时表。嵌套存储过程中对表名的所有引用都被解释为是针对该嵌套过程所创建的表,例如: CREATE PROCEDURE Test2 AS CREATE TABLE #t(x INT PRIMARY KEY) INSERT INTO #t VALUES (2) SELECT Test2Col = x FROM #t GO CREATE PROCEDURE Test1 AS CREATE TABLE #t(x INT PRIMARY KEY) INSERT INTO #t VALUES (1) SELECT Test1Col = x FROM #t EXEC Test2 GO CREATE TABLE #t(x INT PRIMARY KEY) INSERT INTO #t VALUES (99) GO EXEC Test1 GO 下面是结果集: (1 row(s) affected) Test1Col ----------- 1 (1 row(s) affected) Test2Col ----------- 2  当创建本地或全局临时表时,CREATE TABLE 语法支持除 FOREIGN KEY 约束以外的其它所有约束定义。如果在临时表中指定 FOREIGN KEY 约束,该语句将返回警告信息,指出此约束已被忽略,表仍会创建,但不具有 FOREIGN KEY 约束。在 FOREIGN KEY 约束中不能引用临时表。考虑使用表变量而不使用临时表。当需要在临时表上显式地创建索引时,或多个存储过程或函数需要使用表值时,临时表很有用。通常,表变量提供更有效的查询处理。 3.Oracle临时表8i以上版本。
  Oracle 的临时表与MSSQL的不同,临时表需要先创建,不建议在运行时使用DDL语句创建!
 临时表可以看作是一张普通的物理表,在其上可以建索引、建视图,建触发器等!但它的数据是会话隔离的。
区别之处:
·向表中插入数据只在会话或事务期间存在
·表中的数据只对插入数据的会话是可见的
·可用ON COMMIT指导定数据是会话专用还是事务专用
临时表的限定:
·临时表不能被分区
·不能指定约束
·不包括含嵌套表的列或VARRAY类型
·不能指定TABLESPACE, STORAGE_CLAUSE, LONGGING, NOLOGGING, MONITORING, LOB_INDEX_CLAUSE等
·不能指定SEGMENT_ATTRIBUTES_CLAUSE,NESTED_TABLE_COL_PROPERTIES或PARALLEL_CLAUSE
·分布事务不支持临时表

临时表的创建:
create global temporary table tablename(column list)
on commit preserve rows; --提交保留数据会话临时表
on commit delete rows; --提交删除数据事务临时表
临时表是相对于会话的,别的会话看不到该会话的数据。
  oracle的临时表和sql server不一样,在使用完成以后,oracle临时表中的纪录可以被定义为自动删除(分session方式和transaction方式),而表结构不会被自动删除;sql server中的临时表在使用后会被完全删除。
 所以,如果是常用的临时表,你不妨一开始就建好表。
 在使用的时候,不同对话之间的纪录互相不干扰,所以不会给使用带来任何问题。

对偶尔使用的临时表,也可以在过程中用动态SQL来建立(但不建议,DDL语句有较大的开销!): CREATE OR REPLACE PROCEDURE myProc(...) AUTHID current_user IS
...
BEGIN
EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY ....';
...
END;
建议:
不得已的情况下(比较复杂的数据处理)才使用临时表,否则尽可能使用子查询代替或使用游标。两种Oracle临时表• ON COMMIT DELETE ROWS to specify that rows are only visible within theTransaction为什么当commit的时候删除所有的纪录哪?因为当commit时就表示一个事务transaction结束了,这就是事务级的临时表• ON COMMIT PRESERVE ROWS to specify that rows are visible for the entire session 4.总结

1. 对于Mss的本地临时表#table 和oracle的临时表处理方式不是等价的

2. Mss的全局临时表##table和oracle的临时表处理方式也不是等价的

数据挖掘在人力资源分析中的实战案例 在当今竞争激烈的商业环境中,人力资源管理对于企业的成功至关重要。有效的人力资源管理能够提高员工绩效、降低员工流失率、优化人才招聘等。而数据挖掘技术为人力资源管理提供了强大的工具,通过对大量人力资源数据的分析,可以发现潜在的规律和模式,为企业的决策提供有力支持。本文的目的是通过实际案例展示数据挖掘在人力资源分析中的具体应用,涵盖员工绩效预测、人才招聘筛选、员工流失分析等多个方面。通过详细的案例分析,帮助读者理解数据挖掘技术在人力资源管理中的实际操作和应用价值。 阅读详情

相关推荐

软考29-上午题-【数据结构】-排序

数据结构7种排序

qq_31532983的博客 1579

Oracle临时表详解

临时表是一种特殊的表。当我们需要对某一(也可以是多个)表中的一批数据进行反复的操作时,通过对这批数据创建一个临时表,可能会简化操作并且有可能提高效率!

专注Java后端技术干货、项目源码总结分享,期待您的关注。 1万+

极验第四代滑块验证码破解(三):滑块轨迹构造

极验第四代滑块验证码破解(三):滑块轨迹构造声明 声明 原创文章,请勿转载! 本文内容仅限于安全研究,不公开具体源码。维护网络安全,人人有责。 本文关联文章超链接:

帯泪的鱼的博客 8624

SQLSERVER转ORACLE之临时表的运用

我们首先需要的是搞清楚的是两个数据库之间临时表的本质的区别.   1:SQLSERVER所使的临时表为内存表.而ORACLE所使用的表为实体表   2: 速度之前的比较就目前的读书速度而言,内存写与磁盘写的速度相差1W倍。显而以见SQLSERVER的速度明     显很就快得多   3:性能方面从2得之就临时表而言SQLSERVER的性能就明显高手ORACLE。   (网上也有很详细的介绍说明所以不做详细的说明) 从上述我们可以看出临时表而言SQLSERVER的优越性明显比ORACLE高。也许这个时候有人就

a35031630的专栏 630

Claude Code教程(二) | Claude Code 核心信息与使用指南

Claude Code 核心信息与使用指南

qq_20236937的博客 2185

Gamit10.71添加新的天线类型

添加新的天线类型需要涉及到四个文件:antmod.dat,rcvant.dat,guess_rcvant.dat,hi.dat。 注意:格式要一致!!! 举例说明,我要添加一个JCA229的天线(带JCAD天线罩),对应接收机使用的是南方的South Net-S9。

Penny的博客 2712

Oracle和SQLServer的“临时表”应用

Oracle中,      在复杂的业务逻辑中,我们经常会用到临时表,临时表生成很少的日志,每种数据库又都会对其进行特定的处理,使它很适合保存事务或会话期间的中间结果集。Oracle临时表保存的数据只对当前会话可见,所有会话都看不到其他会话的数据。即使当前会话已经提交了数据,别的会话也看不到。对于临时表,不存在多用户并发问题,因为一个会话不会因为使用一个临时表也阻塞另一个会话。     

IT学习 2430

反激电源RCD尖峰吸收电路的原理以及调试

反激电源RCD尖峰吸收电路的原理以及调试

mnmmnmn的博客 9251

SQL Server 临时表 与 Oracle 临时表

 SQL Server 临时表 与 Oracle 临时表1.首先了解Transaction事务 / Session会话Session会话 简单的说,是一个用户连接到数据库是就会创建一个Session,这个Session会在用户断开连接时被释放在一个Session会话内可以执行多个Transaction事务,可以有以下语句组成一个或多个DML语句组成一个DDL语句组成一个DCL语

olony的专栏 1846

华为OD机试 - 猴子吃桃 - 二分查找(Java 新系统 100分)

每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 3850

122、Android Camera HAL3 框架:Request、Result、Metadata 的异步管道模型

本文深入剖析了Android Camera HAL3框架中的异步管道模型,围绕Request、Result和Metadata三个核心要素展开。作者通过实际案例(黑屏闪退问题)切入,揭示了异步模型中常见的帧序错乱陷阱。文章详细阐释了三个角色的交互机制,指出HAL3采用生产者-消费者模式的关键特征:Request与Result一一对应但不保证顺序。针对开发实践,总结了三个必须加锁的场景和回调函数的锁使用禁忌,并给出解决帧序问题的具体方案(独立帧号生成器)。最后提出五项经验性建议,强调异步模型带来的灵活性与复杂性

sundong_81的博客 214

Oracle临时表和SQL Server临时表的…

本文我们主要介绍了Oracle数据库建立临时表的相关知识以及和SQL Server临时表的不同点的对比。 Oracle数据库创建临时表的过程以及和SQL Server临时表的不同点的对比的相关知识是本文我们主要要介绍的内容,接下来就让我们一起来了解一下这部分内容吧,希望能够对您有所帮助。 1.简介 Oracle数据库除了可以保存永久表外,还可以建立临时表temporary tables。这些临

javazilu的专栏 470

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

sql 临时表 oracle,临时表在sqlserver和oracle中的异同点

1、 在创建时的异同。SQL SERVER数据库的临时表,是在实际需要时创建的。具体的来说,可以利用SELECT语句与CREAT语句创建临时表。如可以利用SELECT *INTO #USER_TEMP FROMUSER;通过这条语句就可以在需要的时间创建一张临时表。除此之外,还可以利用CREATE语句,在需要的时候创建临时表。而ORACLE数据库,是在数据库系统初始化的过程中,就需要建立临时表。也...

weixin_39729840的博客 251

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Oracle视图和临时表的区别,[转]SQL Server 临时表 与 Oracle 临时表的区别

SQL Server 临时表 与 Oracle 临时表的区别1.首先了解Transaction事务 / Session会话Session会话 简单的说,是一个用户连接到数据库是就会创建一个Session,这个Session会在用户断开连接时被释放在一个Session会话内可以执行多个Transaction事务,可以有以下语句组成一个或多个DML语句组成一个DDL语句组成一个DCL语句组成以第一个可...

weixin_34107049的博客 359

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Oracle视图和临时表的区别,ORACLE临时表和SQLSERVER临时表异同

SQL SERVER临时表临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。有本地和全局两种类型的临时表,二者在名称、可见性和可用性上均不相同。[@more@]本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 Microsoft® SQL Server™ 2000 实例断开连接时被删除。全局临时表的名称以数学符号 (##) 打头,创...

weixin_31363631的博客 376

SqlServer和Oracle临时表生命周期

SqlServer: 局部临时表#temp_table: 只在当前会话结有效。会话终止则生存终止。 根据session不同开辟不一样的内存存放数据。 相同session的用户可以使用同一张临时表,只能create table 一次。 不同session建的临时表,即使表名相同,指向的内存也是不一样的,互相内容不可见。 全局临时表##temp_table: 顾名思义,不同的ses...

weixin_33922672的博客 196

Oracle视图和临时表的区别,对比Oracle临时表和SQL Server临时表的不同点

Oracle数据库创建临时表的过程以及和SQL Server临时表的不同点的对比的相关知识是本文我们主要要介绍的内容,接下来就让我们一起来了解一下这部分内容吧,希望能够对您有所帮助。1.简介Oracle数据库除了可以保存永久表外,还可以建立临时表temporary tables。这些临时表用来保存一个会话SESSION的数据,或者保存在一个事务中需要的数据。当会话退出或者用户提交commit和回滚...

weixin_29006187的博客 530

ORACLE临时表和SQLSERVER临时表异同

SQL SERVER临时表也可以创建临时表。临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。有本地和全局两种类型的临时表,二者在名称、可见性和可用性上均不相同。本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 Microsoft? SQL Server? 2000 实例断开连接时被删除。全局临时表的名称以数学符号 (##) 打头,

思源领航 862

[转]SQL Server 临时表 与 Oracle 临时表的区别

SQL Server 临时表 与 Oracle 临时表的区别1.首先了解Transaction事务 / Session会话 Session会话 简单的说,是一个用户连接到数据库是就会创建一个Session,这个Session会在...

cuanpiaozhi9344的博客 292

exec sql oracle临时表,SQLServer临时表与Oracle临时表

1.首先了解Transaction事务 / Session会话 Session会话 简单的说,是一个用户连接到数据库是就会创建一个Session,这个Session会在用户断开连接时被释放 在一个Session会话内可以执行多个Transaction事务,可以有以下语句组成一个或多个DML语句组成一个DDL语句组成一个DCL语句组成 以第一个可执行的SQL语句开始。当下列事件之一发生时结束。1.用...

weixin_33925126的博客 293

sqlserver,oracle和DB2的临时表概述

MS SQLSERVERSQL Server 支持临时表。临时表就是那些名称以井号 (#) 开头的表。如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表。临时表不存储在当前数据库内,而是存储在系统数据库 tempdb 内。临时表有两种类型: 本地临时表:本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 Microsoft S

2445

sql+临时表+oracle,SQL Server 临时表 与 Oracle 临时表

1.首先了解Transaction事务 / Session会话Session会话 简单的说,是一个用户连接到数据库是就会创建一个Session,这个Session会在用户断开连接时被释放在一个Session会话内可以执行多个Transaction事务,可以有以下语句组成一个或多个DML语句组成一个DDL语句组成一个DCL语句组成以第一个可执行的SQL语句开始。当下列事件之一发生时结束。1.用户执行...

weixin_36091268的博客 193

Oracle、SqlServer、MySql临时表小结

  1、Oracle临时表 Oracle临时表分为两种,且使用前必须先创建好结构。 会话级: 会话间数据不能共享;数据在当前会话有效(无视事物),只有断开链接才会删除数据;断开时只清空数据不删除表结构; create global temporary table temp_tbl(col_a varchar2(30)) on commit preserve rows; 事务级: ...

万丈阳光 279

全局临时表生命周期oracle,SqlServer和Oracle临时表生命周期

SqlServer:局部临时表#temp_table:只在当前会话结有效。会话终止则生存终止。根据session不同开辟不一样的内存存放数据。相同session的用户可以使用同一张临时表,只能create table 一次。不同session建的临时表,即使表名相同,指向的内存也是不一样的,互相内容不可见。全局临时表##temp_table:顾名思义,不同的session可以使用同一块内存。但是其...

weixin_42136477的博客 747
上一篇: Oracle 中 SQLCODE/SQLERRM
下一篇: Oracle临时表 优化查询速度
常飞梦
常飞梦 领域专家: 数据库技术领域 领域专家: 数据库技术领域
博客等级 码龄21年 403粉丝 314原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值