MS SQL SERVER中的临时表

摘要:
如果在用户断开连接时未删除临时表,SQL Server将自动删除临时表。临时表不存储在当前数据库中,而是存储在系统数据库tempdb中。临时表有两种类型:1)本地临时表:本地临时表的名称以单个数字符号(#)开头;它们仅对当前用户连接可见;当用户断开与Microsoft SQL Server 2000实例的连接时,它将被删除。如果创建名为##employees的全局临时表,则数据表中的任何用户都可以对该表执行操作。

今天发现原来临时表也有全局的,原文地址:http://www.cnblogs.com/skywind/archive/2008/01/11/1035178.html

对于复杂的查询,我们可以使用嵌套的复杂的SQL语句来实现,但是有些时候,借助于临时表,可以更加方便、高效。

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

临时表有两种类型:
1)本地临时表:本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 Microsoft SQL Server 2000 实例断开连接时被删除。
2)全局临时表:全局临时表的名称以数学符号 (##) 打头,创建后对任何用户都是可见的。如果在创建全局临时表的连接断开前没有显式地除去这些表,那么只要所有其它任务停止引用它们,这些表即被除去。当创建全局临时表的连接断开后,新的任务不能再引用它们。当前的语句一执行完,任务与表之间的关联即被除去;因此通常情况下,只要创建全局临时表的连接断开,全局临时表即被除去。
例如,如果创建名为 employees 的表,则任何人只要在数据库中有使用该表的安全权限就可以使用该表,除非它已删除。如果创建名为 #employees 的本地临时表,只有您能对该表执行操作且在断开连接时该表删除。如果创建名为 ##employees 的全局临时表,数据表中的任何用户均可对该表执行操作。如果该表在您创建后没有其他用户使用,则当您断开连接时该表删除。如果该表在您创建后有其他用户使用,则 SQL Server在所有用户断开连接后删除该表。

e.g.

create table #TempTableName

select [字段1,字段2,...,] into #TempTableName from table
删除表:
drop table #TempTableName

免责声明:文章转载自《MS SQL SERVER中的临时表》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇开放源代码的全文检索引擎LuceneSecureCRT 上传文件的两种方法 Zmodem、SFTP下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SQLSERVER排查CPU占用高的情况

内存占用不太高,只占用了30个G CPU占用100% 排查方向 一般排查都是用下面的脚本,一般会用到三个视图sys.sysprocesses ,dm_exec_sessions ,dm_exec_requests 1 USE master 2 GO 3 --如果要指定数据库就把注释去掉 4 SELECT * FROM sys.[sysprocesse...

(转)SQLSERVER表分区的介绍(一)

下面进入正题吧,很多时候当单张数据表的数据量比较大的时候比如千万级别条记录、上亿级别记录,如果不做优化,那么查询的效率大家清楚。 有经验的人会通过各种手段做优化,其中表分区就是其中一种手段。 个人对表分区的口语化解释:把一张表分成几个区域 例如:一张业务表,有一个字段是月份或者年份,那么可以按照月份/年份来分区,当客户要查询某个月份/年份的数据的时候就到那...

[转]Oracle 修改或者删除临时表 ORA-14452: 试图创建, 更改或删除正在使用的临时表中的索引

本文转自:http://blog.csdn.net/treasurelifelhf/article/details/7290729    由于存储过程出现问题,导致前台页面无法显示数据。执行存储过程发现临时表少一字段,无奈无论怎么修改或者删除临时表都报错 ORA-14452: 试图创建, 更改或删除正在使用的临时表中的索引。                ...

【总结】数据库优化的若干方法

导图 下图是我结合自己的经验以及搜集整理的数据库优化相关内容的思维导图,如果图片不清楚,可以在浏览器中右键,在新窗口中查看(Chrome)或者查看图像(FireFox)。 常用关键字优化 在编写T-SQL的时候,会使用很多功能类似的关键字,比如COUNT和EXISTS、IN和BETWEEN AND等,我们往往会根据需求直奔主题地来编写查询脚本,完成需求要...

SQL SERVER 实现多个数据库之间表的联系,利用临时表枚举表中行数据

--SET IDENTITY_INSERT [User] on; SELECT ROW_NUMBER() OVER ( ORDER BY EmpID ) i,* INTO #A FROM [GMSToolManage].dbo.[employees]; DECLARE @count INT; SELECT @count=COUNT(1) FROM#A;...

搭建非域AlwaysOn win2016+SQL2016

搭建非域AlwaysOn win2016+SQL2016 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www.cnblogs.com/lyhabc/p/4682028.html第三篇http://www.cnblogs.com/lyhabc/p/4682986.html第四篇http:/...