1. 什么是临时表
临时表是一种特殊的表,在 MSSQL 中,它们通常用于存储临时结果,这些结果在查询结束后不再需要。 与普通表不同,临时表的生命周期仅限于当前连接或查询块,这意味着它们可以安全地在各种应用程序之间共享,而且不需要手动清除。临时表有两种类型:
局部临时表 (Local Temporary Table):只对当前连接可见,以单个 # 字符作为前缀。
全局临时表 (Global Temporary Table):对所有连接可见,由两个 ## 字符作为前缀。
2. 创建临时表
临时表可以通过 SELECT INTO 或 CREATE TABLE 语句创建。以下是创建局部临时表的示例:
CREATE TABLE #myTempTable (
id INT PRIMARY KEY,
name VARCHAR(50) DEFAULT ''
);
以下是创建全局临时表的示例:
CREATE TABLE ##myGlobalTempTable (
id INT PRIMARY KEY,
name VARCHAR(50) DEFAULT ''
);
3. 使用临时表
3.1 插入数据
可以使用 INSERT INTO 语句向临时表插入数据。以下是一个示例:
INSERT INTO #myTempTable (id, name) VALUES
(1, 'Alice'),
(2, 'Bob');
3.2 查询数据
与普通表一样,可以使用 SELECT 语句查询临时表中的数据,并将结果集存储到变量中或在其他查询中使用。以下是一个示例:
SELECT * FROM #myTempTable;
如需在多个查询中使用临时表,必须将它们显式声明为全局临时表。以下是一个示例:
CREATE TABLE ##myGlobalTempTable (
id INT PRIMARY KEY,
name VARCHAR(50) DEFAULT ''
);
INSERT INTO ##myGlobalTempTable (id, name) VALUES
(1, 'Alice'),
(2, 'Bob');
SELECT * FROM ##myGlobalTempTable;
3.3 更新和删除数据
可以使用 UPDATE 和 DELETE 语句更新和删除临时表中的数据。以下是一个示例:
UPDATE #myTempTable SET name = 'Charlie' WHERE id = 1;
DELETE FROM #myTempTable WHERE id = 2;
4. 删除临时表
与普通表一样,可以使用 DROP TABLE 语句删除临时表。以下是一个示例:
DROP TABLE #myTempTable;
如果使用了全局临时表,则必须在所有连接都完成操作后显式删除它们,或者等待服务器重启自动删除。
5. 总结
临时表是一种非常有用的工具,可以在查询期间缓存中间结果,并在最后计算出最终结果。与普通表一样,临时表具有自己的列和索引,并可以通过 INSERT INTO、SELECT、UPDATE 和 DELETE 等常见的 SQL 操作进行操作。由于其生命周期仅限于当前连接或查询块,因此临时表可以安全地在各种应用程序之间共享,而不需要手动清除。