📜  sql server 中的临时表与变量表 - SQL (1)

📅  最后修改于: 2023-12-03 15:05:17.711000             🧑  作者: Mango

SQL Server 中的临时表与变量表

在 SQL Server 中,临时表和变量表都是存储在内存中的表,可以临时存储数据,供之后的查询使用。它们之间有一些区别和使用注意事项。

临时表

临时表可以分为局部临时表和全局临时表。局部临时表只能在创建它的查询中使用,当查询结束后,临时表会自动删除。全局临时表可以在多个查询中使用,直到所有使用它的查询结束,它才会被删除。

创建临时表

可以使用 CREATE TABLE 语句来创建临时表。

-- 创建局部临时表
CREATE TABLE #temp_table (
  id INT PRIMARY KEY,
  name VARCHAR(50)
)

-- 创建全局临时表
CREATE TABLE ##temp_table (
  id INT PRIMARY KEY,
  name VARCHAR(50)
)
插入数据

可以使用 INSERT INTO 语句向临时表中插入数据。

-- 向局部临时表中插入数据
INSERT INTO #temp_table VALUES (1, 'John'), (2, 'Mary')

-- 向全局临时表中插入数据
INSERT INTO ##temp_table VALUES (1, 'John'), (2, 'Mary')
使用临时表

可以在其他查询中使用已创建的临时表。

-- 使用局部临时表
SELECT * FROM #temp_table

-- 使用全局临时表
SELECT * FROM ##temp_table
删除临时表

当查询结束后,临时表会自动删除。如果需要手动删除临时表,可以使用 DROP TABLE 语句。

-- 删除局部临时表
DROP TABLE #temp_table

-- 删除全局临时表
DROP TABLE ##temp_table
变量表

变量表是一个表变量,存储在内存中。可以在查询中使用它来替代常量或临时表。

声明变量表

可以使用 DECLARE 语句来声明变量表。

DECLARE @temp_table TABLE (
  id INT PRIMARY KEY,
  name VARCHAR(50)
)
插入数据

可以使用 INSERT INTO 语句向变量表中插入数据。

INSERT INTO @temp_table VALUES (1, 'John'), (2, 'Mary')
使用变量表

可以在查询中使用已声明的变量表。

SELECT * FROM @temp_table
删除变量表

变量表在查询结束后自动删除,不需要手动删除。

总结

临时表和变量表都可以在查询中临时存储数据。临时表可以分为局部临时表和全局临时表,变量表是一个表变量。由于它们都存储在内存中,所以操作速度比较快。但是,它们也有一些使用注意事项,例如局部临时表只能在创建它的查询中使用,全局临时表可以在多个查询中使用,需要注意查询结束后的自动删除等。