SQL Server临时表

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

在这种情况下,使用临时表会更方便,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,'微波炉')

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值