临时表的特点及使用(SQL Server)

本文介绍了SQL Server数据库中临时表的概念和用途,包括本地临时表和全局临时表的差异,以及它们在节省表空间、提高效率和自动清理数据方面的优势。同时,详细讲解了创建、使用和删除本地临时表及全局临时表的语法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【阅读帮助:本文的各种括号中的内容为辅助理解信息,没有特别的含义。在第一遍阅读中,括号里面的内容,可以先忽略;有兴趣读多遍的时候,再细看各种括号里面的辅助信息。】

正文

在SQL Server数据库中,临时表是非常重要的。接下来,谈谈我的理解(对临时表的特点及使用)。
首先,虽然临时表存放在临时库(tempdb)中,但是它与永久表,还是很相似的。不同之处是,临时表会被自动删除(若不再被使用)。
其次,临时表有两大类型:本地临时表(表名的前缀只有一个#,仅供它所属的数据库<连接>使用)和全局表(表名的前缀是两个#,可供所有数据库<连接>使用)。
再次,为了保证本地临时表的独立性(在数据库连接上的独立性),SQL Server设立了特别的命名机制(在不同的连接<数据库连接>中,虽然本地表可能拥有相同的名称,但是这些本地表之间不会有任何关系)。
再再次,临时表的使用有以下三个好处(很明显的哦):节省表空间(数据库系统会自动维护数据库的临时表空间<临时表也只利用了这个空间哦>)、提高系统效率(临时表利用虚拟内存,硬盘的读写次数大大减少)、自动清空数据(在会话结束、事务完毕后,临时表会自动清空数据,不必主动删除数据)

本地临时表

特征:表名的前缀是一个#(是个数字符号哦)
可见度:仅(创建此临时表的)用户连接可见
清理:用户断开数据库连接(创建临时表的数据库连接)的时候,被自动删除。

本地临时表的创建语法:

CREATE TABLE #表名 (字段1 字段类型,字段2,字段类型…)

–如果要创建的临时表,不是当前数据库连接,则在上面的语句前面,增加语句(USE 数据库名2<目标数据库的实例名> GO)
–在说说查询语句(select * from #表名):如果创建之后,直接使用<不切换数据库连接>使用这个查询语句,则使用正常;如果切换了数据库连接,则会查无此表。

全局临时表

特征:表名的前缀是2个#(是个数字符号哦)
可见度:任何用户(数据库)连接,都可见
清理:引用该临时表的所有数据库连接,都断开之后,该临时表才被自动删除。
全局临时表的创建语法:

CREATE TABLE ##表名 (字段1 字段类型,字段2 字段类型…)

–如果要插入数据,可以直接插入以下语句

INSERT INTO VALUES(字段1的值,字段2的值…),(字段1的值,字段2的值…)…

–不论有没有切换数据库连接,都可以通过以下语句,来查看临时表的内容

select * from ##表名

–如果引用这个临时表的所有数据库连接,都关闭了,那么这个临时表会被SQL Server给释放掉,清理掉。被清理掉之后,该表就无法被其他数据库连接所使用了。再使用上述查询语句,就没有内容了。

批量插入数据

SELECT * INTO #表名 FROM 表名;

删除临时表

DROP TABLE #表名;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值