浅析SQL server 临时表

创建临时表,#代表局部临时表,##代表全局临时表。局部临时表和全局临时表的具体含义是什么呢?

举例说明一下比较清晰些,先来看下局部临时表,【新建查询】,在里面输入如下文本:


运行后,我们在此文件执行输入: select * from #tempTable, 执行后可以查询出如下的数据:

我们另外打开一个【新建查询】,就给其命名为新建查询2,在新建查询2中执行输入: select * from #tempTable,提示如下:

修改Sql 语句中的#tempTable 为 ##tempTable, 依照上述方法再次执行,会发现新建查询2中不再提示错误,能查出和新建查询1中同样的结果。Why?=>局部临时表仅在当前会话中可见;全局临时表在所有会话中都可见。

请注意,使用全局临时表后,不要忘记drop table 掉它。但是使用局部临时表,可以不进行此操作,在当前会话结束时,系统会自动回收创建的局部临时表。

临时表具体用法请参考 http://www.jb51.net/article/23952.htm

(0)

相关推荐

  • SQL Server 向临时表插入数据示例

    复制代码 代码如下: INSERT INTO #DirtyOldWIPBOM SELECT TOP (100) PERCENT dbo.WIP_BOM.Model, dbo.WIP_BOM.PartNumber,WIP_BOM.WIP FROM dbo.WIP_BOM left OUTER JOIN dbo.BOM_CHINA ON LTRIM(dbo.WIP_BOM.Model) = LTRIM(dbo.BOM_CHINA.Model) AND LTRIM(dbo.WIP_BOM.PartNu

  • mysql复制中临时表的运用技巧

    我们知道,临时表有以下特性: 1. SESSION 级别,SESSION 一旦断掉,就被自动DROP 了. 2. 和默认引擎有关.如果默认引擎是INNODB,而你又疯狂的使用临时表.那么,你的IBDATA会被无限的增大. 3. 和磁盘表一样,默认写入到binlog, 而且被动的加入了rollback 计划. 幻想如下场景: 数据库损坏,也没有备份.刚好二进制日志全部保存完好,幸福了.导入二进制日志到MYSQL. 有两种方法: 1) mysqlbinlog ..... *.log | mysql

  • 根据多条件查询临时表 想得到不同结果集的方法

    当我写下如下sql语句时,我得到了输入@c参数时想得到的结果集.select * from @tb t where t.id in (select id from tb where f = @c) 但如果有@a,@b,@c,而它们分别想从@tb中得到不同的结果集,例如 复制代码 代码如下: if @a is not null begin --得到@a想得到的 end if @b is not null begin --得到@b想得到的 end if @c is not null begin --

  • MySQL使用临时表加速查询的方法

    本文实例讲述了MySQL使用临时表加速查询的方法.分享给大家供大家参考.具体分析如下: 使用MySQL临时表,有时是可以加速查询的,下面就为您详细介绍使用MySQL临时表加速查询的方法. 把表的一个子集进行排序并创建MySQL临时表,有时能加速查询.它有助于避免多重排序操作,而且在其他方面还能简化优化器的工作.例如: 复制代码 代码如下: SELECT cust.name,rcVBles.balance,--other columns  SELECT cust.name,rcVBles.bala

  • sqlserver 临时表 Vs 表变量 详细介绍

    这里我们在SQL Server 2005\SQL Server 2008版本上通过举例子,说明临时表和表变量两者的一些特征,让我们对临时表和表变量有进一步的认识.在本章中,我们将从下面几个方面去进行描述,对其中的一些特征举例子说明: 约束(Constraint) 索引(Index) I/0开销 作用域(scope) 存儲位置 其他 例子描述 约束(Constraint) 在临时表和表变量,都可以创建Constraint.针对表变量,只有定义时能加Constraint. e.g.在Microsof

  • sqlserver 临时表的用法

    用法: 用于复杂查询时可以用临时表来暂存相关记录,能够提高效率.提高程序的可读性,类似于游标中的 my_cursor declare my_cursor cursor scroll for select 字段 from tablename 临时表分为:用户临时表和系统临时表. 系统临时表和用户临时表的区别: 1)用户临时表:用户临时表的名称以#开头; 用户临时表的周期只存在于创建这个表的用户的Session,对其他进程是不可见. 当创建它的进程消失时此临时表自动删除. 2)系统临时表:系统临时表

  • 对比Oracle临时表和SQL Server临时表的不同点

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

  • 关于sqlserver 2005 使用临时表的问题( Invalid object name #temptb)

    最近在利用 SSRS 2005 做报表的时候,调用带有临时表的数据源时,系统会报错,并无法进入向导的下一步,错误如下: There is an error in the query. Invalid object name '#temptb'. 经过研究后想到如下三种解决方案: 1. 使用表变量代替临时表,这样做法可以避免SSRS 2005 的语法错误提示,缺点就是如果处理的数据量比较大,会占用过大的内存,并且报表加载时间过长. 2.使用一个不包含临时表的SQL语句创建报表,创建成功以后,修改数

  • SQLServer中临时表与表变量的区别分析

    在实际使用的时候,我们如何灵活的在存储过程中运用它们,虽然它们实现的功能基本上是一样的,可如何在一个存储过程中有时候去使用临时表而不使用表变量,有时候去使用表变量而不使用临时表呢? 临时表 临时表与永久表相似,只是它的创建是在Tempdb中,它只有在一个数据库连接结束后或者由SQL命令DROP掉,才会消失,否则就会一直存在.临时表在创建的时候都会产生SQL Server的系统日志,虽它们在Tempdb中体现,是分配在内存中的,它们也支持物理的磁盘,但用户在指定的磁盘里看不到文件. 临时表分为本地

  • sqlserver 动态创建临时表的语句分享

    因此计划先把数据转插入一个临时表,再对临时表的数据进行分析. 问题点是如何动态创建临时表.原先Insus.NET使用下面代码实现: 复制代码 代码如下: DECLARE @s NVARCHAR(MAX) = ' IF OBJECT_ID(''[dbo].[#Tb]'') IS NOT NULL DROP TABLE [dbo].[#Tb] CREATE TABLE [dbo].[#Tb] ( [xxx] INT, [xxx] NVARCHAR(50), '+ [dbo].[Column]() +

  • mysql 临时表 cann't reopen解决方案

    当你创建临时表的时候,你可以使用temporary关键字.如: 复制代码 代码如下: create temporary table tmp_table(name varchar(10) not null,passwd char(6) not null); 或 复制代码 代码如下: create temporary table if not exists sp_output_tmp engine= memory select -from - where ID=current_id; 临时表只在当前

  • sql server创建临时表的两种写法和删除临时表

    --创建.删除临时表 --第一种方式 create table #tmp(name varchar(255),id int) --第二种方式 select count(id) as storyNum , sum(convert(numeric(10,2),case when isnumeric(code)=1 then code else 0 end)) as codeNum, sum((case when isnumeric(realcode)=1 then convert(numeric(1

  • sql server 临时表 查找并删除的实现代码

    if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#temp')) drop table #temp临时表 可以创建本地和全局临时表.本地临时表仅在当前会话中可见:全局临时表在所有会话中都可见. 本地临时表的名称前面有一个编号符 (#table_name),而全局临时表的名称前面有两个编号符 (##table_name). SQL 语句使用 CREATE TABLE 语句中为 table_name 指定的

随机推荐