📅  最后修改于: 2023-12-03 15:05:17.711000             🧑  作者: Mango
在 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
变量表在查询结束后自动删除,不需要手动删除。
临时表和变量表都可以在查询中临时存储数据。临时表可以分为局部临时表和全局临时表,变量表是一个表变量。由于它们都存储在内存中,所以操作速度比较快。但是,它们也有一些使用注意事项,例如局部临时表只能在创建它的查询中使用,全局临时表可以在多个查询中使用,需要注意查询结束后的自动删除等。