精华内容
下载资源
问答
  • SQL Server临时表

    千次阅读 2018-08-09 10:22:40
    在这种情况下,使用临时表会更方便,SQL Server支持三种临时表:局部临时表,全局临时表,表变量。 SELECT * INTO #T_Order FROM T_Order   局部临时表 要创建局部临时表,只需要在命名时以单个数字符号(...

    有时需要把数据临时保存到表中,而且在某些情况下,你可能并不想使用永久性的表。例如,假设你需要让数据只对当前会话有效,或者甚至只对当前批处理有效。

    在这种情况下,使用临时表会更方便,SQL Server支持三种临时表:局部临时表,全局临时表,表变量。

    SELECT * 
    INTO #T_Order
    FROM T_Order

     

    局部临时表

    要创建局部临时表,只需要在命名时以单个数字符号(#)作为前缀,例如#T1。所有三种类型的临时表都是在tempdb数据库中创建的。

    只有在创建会话的SQL Server实例断开时,SQL Server才会自动断开它。

    SELECT * 
    INTO ##T_Order
    FROM T_Order
    

    可以使用临时表的场合是:当你的处理需要把中间的结果集临时保存起来(如在一个循环中),以便以后的查询这些临时数据。

    另一个查询是需要多次访问某个开销昂贵的处理结果。

     

    全局临时表

    如果创建的全局临时表,则它对其他所有会话可见。

    当创建临时表的会话断开数据库的联接,而且也没有活动在引用全局临时表时,SQL Server会自动删除相应的全局临时表  。要创建临时表,只需要在命名时用(##)作为前缀,如##T1。

     

    表变量

    声明表变量的方式和声明其他变量类似,使用的都是DECLARE语句。

    从性能上考虑,对于少量数据(只有几行),使用表变量更有意义,否则,应该使用临时表。

    DECLARE @T_Order table(
    	ID int,
    	Name varchar(50)
    )
    
    INSERT INTO @T_Order(ID,Name)
    SELECT OrderID,Name
    FROM T_Order
    
    INSERT INTO @T_Order(ID,Name)
    VALUES(100,'微波炉')
    

     

    展开全文
  • SQL Server 临时表

    2013-03-12 09:48:53
    SQL Server 支持临时表临时表就是那些名称以井号 (#) 开头的表。如果当用户断开连接时没有除去临时表SQL Server 将自动除去临时表临时表不存储在当前数据库内,而是存储在系统数据库 tempdb 内。 临时表有...

    SQL Server 支持临时表。临时表就是那些名称以井号 (#) 开头的表。如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表。临时表不存储在当前数据库内,而是存储在系统数据库 tempdb 内。

    临时表有两种类型: 

    本地临时表 
    以一个井号 (#) 开头的那些表名。只有在创建本地临时表的连接上才能看到这些表。

    全局临时表 
    以两个井号 (##) 开头的那些表名。在所有连接上都能看到全局临时表。如果在创建全局临时表的连接断开前没有显式地除去这些表,那么只要所有其它任务停止引用它们,这些表即被除去。当创建全局临时表的连接断开后,新的任务不能再引用它们。当前的语句一执行完,任务与表之间的关联即被除去;因此通常情况下,只要创建全局临时表的连接断开,全局临时表即被除去。
    ==========================================================================

    SQL code
    --应用本地临时表 declare @sql varchar(100) set @sql='select ''123'' as a,''abasdf'' as b into #t' exec(@sql) select * from #t go /*发现不能正确显示临时表的数据 提示: 服务器: 消息 208,级别 16,状态 1,行 5 对象名 '#t' 无效。 */ --修改为全局临时表 declare @sql varchar(100) set @sql='select ''123'' as a,''abasdf'' as b into ##t' exec(@sql) select * from ##t drop table ##t go /*可以正确显示临时表的数据


    分析原因:exec(@sql) 相当于重新建立一个数据库对话,所以对于本地临时表,使用exec(@sql)创建临时表,
    在exec外部不能正确访问;而使用全局临时表就ok了
    */ 

    SQL code
    exec ('select top 10 * into ##temp from syhouse'); exec ('select * from ##temp');
    展开全文
  • SqlServer 临时表

    2012-11-06 11:16:00
    临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。 临时表有两种类型:本地和...全局临时表的名称以两个数字符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Serve

    临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。

    临时表有两种类型:本地和全局。它们在名称、可见性以及可用性上有区别。本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 SQL Server 实例断开连接时被删除。全局临时表的名称以两个数字符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。

    例如,如果创建了 employees 表,则任何在数据库中有使用该表的安全权限的用户都可以使用该表,除非已将其删除。如果数据库会话创建了本地临时表 #employees,则仅会话可以使用该表,会话断开连接后就将该表删除。如果创建了 ##employees 全局临时表,则数据库中的任何用户均可使用该表。如果该表在您创建后没有其他用户使用,则当您断开连接时该表删除。如果您创建该表后另一个用户在使用该表,则 SQL Server 将在您断开连接并且所有其他会话不再使用该表时将其删除。

    临时表的许多用途可由具有 table 数据类型的变量替换。 

    展开全文
  • SQL SERVER临时表

    千次阅读 2013-09-23 17:49:45
    不知道园子里的朋友对SQL 里的临时表(Temporary Table)的概念深不深,应该不会太难。当我们在开发的过程中,临时表给我们带来了特别大的好处。 临时表在运行被创建的,虽说它的名字叫做临时表,可是对它的操作...
    
    

    一。临时表介绍

    不知道园子里的朋友对SQL 里的临时表(Temporary Table)的概念深不深,应该不会太难。当我们在开发的过程中,临时表给我们带来了特别大的好处。

    临时表在运行被创建的,虽说它的名字叫做临时表,可是对它的操作和我们平时操控表的操作一样, 换句话说就是,我们平时怎么操作表,也同样适用在临时表中,比如最简单增、删、改、查等等。

    但是,需要注意的是临时表的创建是有范围限制的。

    本次文章主要就是为了快速的给初学者一个对临时表的概念,希望不会误人子弟。

    二.临时表分类

    临时表分为2种,一种是本地临时表,另外一种就是全局临时表。

    2.1本地临时表

    以一个井号 (#) 开头的那些表名。只有在创建本地临时表的连接上才能看到这些表,链接断开时临时表即被删除(本地临时表为创建它的该链接的会话所独享)或者这样说局部临时表是有当前用户创建的,并且只有当前用户的会话才可以访问

    2.1全局临时表

    以两个井号 (##) 开头的那些表名。在所有连接上都能看到全局临时表或者这样说只要这个全局临时表存在,那么用户创建会话后对所有的用户都是可见的。如果在创建全局临时表的连接断开前没有显式地除去这些表,那么只要所有其它任务停止引用它们,这些表即被除去。当创建全局临时表的连接断开后,新的任务不能再引用它们(换句话说旧的任务还何以引用)。当前的语句一执行完,任务与表之间的关联即被除去;因此通常情况下,只要创建全局临时表的连接断开,全局临时表即被除去。

    三。临时表的创建(基于SQL 2005)

    3.1 创建本地临时表

    代码如下:

    Create table #Users(ID int,UserName varchar(50),Password varchar(50),RegisterDate Datetime);

    上面这段代码很简单,也很好理解,因为有一个# 所以它表示创建的是本地临时表。

    那有些好奇的园友可能会问,那这个临时表创建之后,它被放到哪里了呢?good question,它却是有一个地方存放,它在tempdb表中的Temporary Tables 中,意思很明了 就是“临时”的意思。

    比如在我的SQL 2005上面:

     

    画黄色那个就是路径,有一条长长的线条,然后后面跟着数字!~对,你没错 这就是临时表的表名。这个我没有必要过多的担心,我们需要做的仅仅只是表名而已。

    临时表的全名由 CREATE TABLE 语句中指定的表名和系统生成的数字后缀组成。为了允许追加后缀,为本地临时表指定的 table_name 不能超过 116 个字符。

    OK,表的框架搭建好了,那下一步就需要往里面添加数据了,go on。

    添加数据操作:

    insert into #Users values(1,'Lan','123456','2011.04.23')

    通过“Select * from #Users”语句,执行查询 如下结果:

    没骗你吧!

    但是,如果你把现在的查询窗口关闭了,在重新打开,然后在在查询里输入,则会进行报错,如图:

    提示 #Users无效。

    为什么呢?很简单,因为本地临时表只是用在当前用户的当前连接中。所以如果当前的连接退出,会自动销毁自己的表。

    3.2创建全局临时表

    全局临时表的代码基本和本地临时的代码一致,唯一的区域是,本地临时表的表明前面是一个#,而全局临时表的表名是2个##。

    如:

    Create Table ##Users(ID int,UserName varchar(50),Password varchar(50));

    很相似吧,简直就是2个双胞胎呢!~呵呵~继续。。

    它也存储在老地方----Temporary Tables中,如:


    OK 上面2中方式都讲完了,很简单吧!。

    四。什么时候用临时表及注意事项

    我总结了下,在下面的3个场景中,可以考虑用到临时表:

    • 在存储过程中,我们需要对大量数据进行操作
    • 这是游标使用的替代的解决方案,我们可以把结果输入到临时表中,然后在在从临时表中抽取我们所需要的数据。
    • 有一个复杂的comple操作的时候,也可以考虑用临时表。

    注意事项:

    • 在SQL Server中,临时表是被创建在Temporary的tempdb中,所以,在一定程度上,它还是会影响数据库执行时候的性能,也就是性能问题。
    • 当临时表做完了它的本职工作之后,临时表会自动删除。

    五。替代解决方案

    当然,用我们上面的方法,未必就是数据的唯一的一种方法,我们还可以有其他的解决方案。

    比如我们可以用table variable的方式来创建,如下:

    Declare @TempTableVariable TABLE(UserID int,UserName varchar(50), UserAddress varchar(150))

    插入:

    insert into @TempTableVariable values ( 1, 'Abhijit','India');

    等等 基本和上面的一样,就不说了。

    祝大家愉快每一天。

     

    作者:Lanny☆兰东才
    出处:http://www.cnblogs.com/damonlan 
    Q Q:548589152
    E_mail:Damon_lan@163.com or Dongcai.lan@hp.com

    本博文欢迎大家浏览和转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,在『参考』的文章中,我会表明参考的文章来源,尊重他人版权。若您发现我侵犯了您的版权,请及时与我联系。

    展开全文
  • Sql Server临时表

    千次阅读 2012-03-23 15:43:50
    1.临时表 临时表与永久表相似,但临时表存储在 tempdb中,当不再使用时会自动删除。   临时表有局部和全局两种类型  两者比较: 局部临时表的名称以符号 (#)打头 仅对当前的用户连接是可见的 当用户实例...
  • SQL SERVER临时表的使用

    2018-09-22 15:54:51
    SQL SERVER临时表的使用--删除临时表#Tmpcreate table #Tmp --创建临时表#Tmp( ID int IDENTITY (1,1) not null,
  • sql server 临时表简介

    千次阅读 2013-10-21 16:54:41
    SQL Server中,SQL Server临时表和永久表比较类似,但是也有所不同,下面将为您详细介绍SQL Server临时表,供您参考。 SQL Server临时表与永久表相似,只是它的创建是在Tempdb中,它只有在一个数据库连接结束后...
  • Sql Server临时表的作用域

    千次阅读 2013-11-08 15:49:30
    Sql Server临时表的作用域:  临时表与永久表相似,只是它的创建是在Tempdb中,它只有在一个数据库连接结束后或者由SQL命令DROP掉,才会消失,否则就会一直存在。临时表在创建的时候都会产生SQL Server的系统日志...
  • SQLServer临时表的使用

    2019-09-24 09:08:08
    前几天在分析sqlserver的性能时,发现了一个知识点,临时表的使用; 在数据库上打开查询管理器,创建一个临时表和一个非临时表 临时表: create table #Test ( id int, name varchar(15), address varchar (20) ) 非...
  • 临时表 临时表与永久表... 临时表分为本地和全局两种,本地SQL Server临时表的名称都是以“#”为前缀,只有在本地当前的用户连接中才是可见的,当用户从实例断开连接时被删除。全局SQL Server临时表的名称都
  • ORACLE临时表和SQLSERVER临时表异同

    千次阅读 2009-11-04 23:17:00
    SQL SERVER临时表也可以创建临时表。临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。有本地和全局两种类型的临时表,二者在名称、可见性和可用性上均不相同。本地临时表的名称以单个数字...
  • Sql server 临时表与表变量的区别
  • SQLServer 临时表的使用

    万次阅读 2018-04-03 09:40:58
    临时表Sqlserver数据库中,是非常重要的,下面就详细介绍SQL数据库中临时表的特点及其使用,仅供参考。 临时表与永久表相似,但临时表存储在tempdb中,当不再使用时会自动删除。临时表有两种类型:本地和全局。...
  • SQL SERVER临时表定义

    千次阅读 2019-01-07 20:01:37
    数据库:SQL SERVER2008 情况:创建临时表 方式1:(用create方式,跟正常创建表一样,表名用#开头,创建完刷新库,不显示) 代码: begin //创建临时表 CREATE TABLE #temp(name VARCHAR(20),id int); //...
  • SQL Server 临时表 与 Oracle 临时表

    千次阅读 2007-07-06 13:54:00
    SQL Server 临时表 与 Oracle 临时表1.首先了解Transaction事务 / Session会话Session会话 简单的说,是一个用户连接到数据库是就会创建一个Session,这个Session会在用户断开连接时被释放在一个Session会话内可以...
  • SQL Server临时表的正确删除方式

    千次阅读 2014-03-11 10:09:41
    sql server 存储过程中使用变量表,临时表的分析(续) http://www.cnblogs.com/chillsrc/archive/2008/09/24/1297806.html SQL Server临时表的正确删除方式 http://database.51cto.com/art/201009/223740.htm
  • 索引SQL Server临时表

    2020-07-26 00:09:53
    SQL Server temp tables are a special type of tables that are written to the TempDB database and act like regular tables, providing a suitable workplace for intermediate data processing before savi...
  • sql server临时表的使用

    2018-10-25 15:17:17
    在运维工作当中常常需要使用零时进行储存一些信息 1.建表语句 CREATE TABLE [dbo].[stu1] ( [sno] int NOT NULL , [name] varchar(255) NULL  ) INSERT INTO [dbo].[stu1] ([sno], [name]) VALUES (N'1', N'...
  • Sql Server临时表的作用域:

    千次阅读 2012-11-07 20:22:22
    Sql Server临时表的作用域:  临时表与永久表相似,只是它的创建是在Tempdb中,它只有在一个数据库连接结束后或者由SQL命令DROP掉,才会消失,否则就会一直存在。临时表在创建的时候都会产生SQL Server的系统日志...
  • Oracle与SQL Server临时表

    2015-06-06 10:57:08
    在写非常复杂的业务逻辑时,不免用到临时表临时表生成很少的日志,每种数据库又都会对其进行特定的处理,使它很适合保存事务或会话期间的中间结果集。 Oracle临时表保存的数据只对当前会话可见,所有会话都看不...
  • 有关临时表的数据插入 1、把临时表中的数据插入到另一个表中 insert into 表 select * from #temp 2、把一个表中字段复制到临时表中 select * into #temp ...4、当用户从 SQL Server 实例断开连接时被删除。 ...
  • 在数据操作过程中,经常会用到临时表,如果是在存储过程中,可以使用性能更高的内存表来解决 ...而在客户端,临时表则更容易使用,可以处理较大的数据量,因为临时表是物理存在的,创建于SQLSERVER的tem...
  • 判断MS SQLSERVER临时表是否存在

    千次阅读 2011-06-03 23:25:00
    原文:...   问题总结:判断MS SQLSERVER临时表是否存在 drop table #tempcitys select * into #tempcitys from hy_citys 上面的语句第一次运行的时候就肯定出错了,但第二次就不会。 因为s
  • SqlServer临时表的创建

    2019-08-02 18:06:07
    创建临时表 方法一: create table #临时表名(字段1 约束条件, 字段2 约束条件, …) create table ##临时表名(字段1 约束条件, 字段2 约束条件, …) 方法二: select * into #临时表名 from 你的表; select * into #...
  • SqlServer临时表基本用法

    千次阅读 2018-04-25 15:41:22
    --判断临时表是否存在if exists (select * from tempdb.dbo.sysobjects where id = object_id(N'tempdb..#car') and type='U')--删除临时表DROP TABLE #car--创建临时表create table #car( name nvarchar(20) )--...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 95,865
精华内容 38,346
关键字:

sqlserver临时表