临时表解析

--==============================================
作者:王运亮(wwwwgou)
时间:2011-04-16
博客:http://blog.csdn.net/wwwwgou
--==============================================
#1.临时表与永久表相似,但临时表存储在tempdb中,当不再使用时会自动删除
#2.临时表有两种类型:本地和全局,区别如下:
1. 本地临时表以#开头,仅对当前的用户连接是可见的,当用户从SQL Server实例断开连接时被删除.
 1.在MSSM中新建一个查询(相当于新建一个连接)
 2.执行SQL: CREATE TABLE #temp(id INT)
 3.查询此表在系统对象表中是否存在SQL:
 SELECT [name] FROM sys.tables WHERE [object_id] = object_id('tempdb..#temp', 'u')
 /*
 #temp__________________________000000000010  --系统为表名自动添加了唯一标识.这里省略了一些'_'字符
 */
 4.再新建一个连接,创建一个名为#temp的临时表(执行步骤2),当然,系统会自动为它添加唯一标识
 SELECT [name] FROM sys.tables WHERE [name] like '%temp%'
 /*
 #temp__________________________000000000010
 #temp__________________________000000000011
 */
 5.关闭查询窗口(相当于断开连接),#temp自动删除.
2. 全局临时表以##开头,创建后对任何用户都是可见的,当所有引用该表的用户从SQL Serve 断开连接时被删(注意此句话的含义).
 1.在MSSM中新建一个查询
 2.执行SQL: CREATE TABLE ##temp(id INT)
 3.查询此表在系统对象表中是否存在SQL:
 SELECT [name] FROM sys.tables WHERE [object_id] = object_id('tempdb..##temp', 'u')
 /*
 ##temp  --注意,系统未为表名添加唯一标识
 */
 4.再新建一个连接,如果再执行步骤2会报错: There is already an object named '##temp' in the database.但可以引用##temp表: SELECT * FROM ##temp
 SELECT [name] FROM sys.tables WHERE [name] like '%temp%'
 /*
 #temp__________________________000000000010
 ##temp
 #temp__________________________000000000011
 */
 5.关闭查询窗口(相当于断开连接),##temp在最后一个引用(指的是正在用)##temp的窗口断开时自动删除
#3.表变量可以当普通变量来理解.它会存储在内存中(系统会自动计算,如果内存不够用,则存储在tempdb中)
#4.会话和连接的区别: 比较相似,但不完全相同. 通俗的意思就是:会话指的是和表数据的交流.连接指的是同数据库的交流.查看当前数据库的连接个数SQL:
   SELECT * FROM master..sysprocesses WITH(NOLOCK) WHERE [DBID] = DB_ID('db_name')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值