临时表

临时表的创建、判断、使用与系统视图查询

判断并创建本地临时表

IF (EXISTS(SELECT * FROM tempdb.dbo.sysobjects WHERE id = object_id(N'tempdb..#temp') AND type='U'))
BEGIN
   DROP TABLE #temp
END

SELECT * INTO #temp FROM personCode language: PHP (php)

其中 tempdb 是 SQL Server 的系统数据库,是可供连接到 SQL Server 实例的所有用户使用的全局资源。#temp 是本地临时表的名称,只在当前数据库连接中可见。

通过 SELECT INTO 创建临时表并继续操作

SELECT name, MAX(cjsj) cjsj, COUNT(DISTINCT age) nums
INTO #tempperson
FROM person
GROUP BY name

SELECT * FROM #tempperson -- 临时表本质上和其他实体表一样使用Code language: CSS (css)

临时表可以进行插入等操作:

INSERT INTO #tempperson(name, cjsj, nums)
VALUES('dsdf', GETDATE(), 4)Code language: PHP (php)

基于临时表再次创建临时表

IF (EXISTS(SELECT * FROM tempdb.dbo.sysobjects WHERE id = object_id(N'tempdb..#temp2') AND type='U'))
BEGIN
   DROP TABLE #temp2
END

SELECT t.* 
INTO #temp2
FROM #tempperson t
JOIN person p ON t.nums != p.age

SELECT * FROM #temp2Code language: PHP (php)

查询系统对象视图

SELECT * FROM dbo.sysobjects
SELECT * FROM tempdb.dbo.sysobjectsCode language: CSS (css)

通过 tempdb.dbo.sysobjects 可以查看临时数据库中所有用户对象(包括临时表),而 dbo.sysobjects 查看的是当前数据库中的系统对象。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注