SQL Server临时表

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

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

SELECT * 
INTO #T_Order
FROM T_Order

 

局部临时表

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

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

SELECT * 
INTO ##T_Order
FROM T_Order

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

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

 

全局临时表

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

扫描二维码关注公众号,回复: 2657594 查看本文章

当创建临时表的会话断开数据库的联接,而且也没有活动在引用全局临时表时,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,'微波炉')

猜你喜欢

转载自blog.csdn.net/xc917563264/article/details/81531818