您的位置 首页 > 数码极客

sql中如何创建临时表—sql创建临时表并赋值

经常写数据库SQL脚本的朋友,对数据库的本地表(table)肯定不会陌生,我们的数据,大多都是通过表进行存储。除了本地表之外,功能比较类似的还包括临时表、表变量、公用表、表类型、内存表等,她们的含义和用途各不相同。今天我们就好好说说SQLServer中的临时表。

临时表的特点、分类及区别

临时表与永久表相似,但临时表存储在tempdb中,当不再使用时会自动删除。临时表利用了数据库临时表空间,由数据库系统自动进行维护,因此节省了表空间。并且由于临时表空间一般利用虚拟内存,大大减少了硬盘的I/O次数,因此也提高了系统效率。临时表在事务完毕或会话完毕数据自动清空,不必记得用完后删除数据。

临时表有两种类型:本地和全局。它们在名称、可见性以及可用性上有区别。

  • 本地临时表仅在当前会话中可见,名称前面有一个编号符 #。它们仅对当前的用户连接是可见的,当实例断开连接时被删除。本地临时表根据数据库连接独立,只有创建本地临时表的数据库连接有表的访问权限,其它连接不能访问该表。不同的数据库连接中,创建的本地临时表虽然“名字”相同,但是这些表之间相互并不存在任何关系。
  • 全局临时表在所有会话中都可见,名称前面有两个编号符 ##。通常情况下,只要创建全局临时表的连接断开,全局临时表即被除去。

除非使用 Drop Table语句显式除去临时表,否则临时表将在退出其作用域时由系统自动删除。临时表不存储在当前数据库内,而是存储在系统数据库 tempdb 内。

当创建本地或全局临时表时,CREATE TABLE 语法支持除 FOREIGN KEY 约束以外的其它所有约束定义。如果在临时表中指定 FOREIGN KEY 约束,该语句将返回警告信息,指出此约束已被忽略,表仍会创建,但不具有 FOREIGN KEY 约束。在 FOREIGN KEY 约束中不能引用临时表。

当需要在临时表上显式地创建索引时,或多个存储过程或函数需要使用表值时,临时表很有用。

本地临时表的应用

本地临时表的名称以单个数字符号# 开头,仅对当前的用户连接(也就是创建本地临时表的数据库连接)是可见的,当用户从SQL Server实例断开连接时被删除。

1、创建本地临时表。

保险起见,创建之前先要删除,因临时表存在在数据库tempdb中,所以删除时要指定归属的数据库。创建的过程与创建表也非常类似。通过使用select into自动生成也是可以的。

if object_id('tempdb..#MyTable') is not null begin drop table #MyTable; end; create table #MyTable( FSerial int identity(1,1) not null, FName nvarchar(100) null, FAge smallint null );

2、数据的插入和查询。

临时表插入数据与插入普通表类似,查询亦类似。

insert into #MyTable(FName,FAge) values ('张三',20), ('李四',22), ('王五',30), ('马六',18); select * from #MyTable;

3、临时表的删除。

如果您不通过SQL脚本删除,系统也会在断掉连接时自动删除。我们最好养成好习惯,用完就删除,删除的方法其实在第一段已经说明了,保险起见,最好先检查下是否存在再行删除。

if object_id('tempdb..#MyTable') is not null begin drop table #MyTable; end;

全局临时表的应用

全局临时表的名称以两个数字符号 ##开头,创建后对任何数据库连接都是可见的,当所有引用该表的数据库连接从SQL Server断开时被删除。

全局临时表的创建、插入、查询、删除与本地临时表都是类似的,这里不在赘述。

希望对您有所帮助!

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“sql中如何创建临时表,sql创建临时表并赋值,sql,server如何创建临时表,SQL创建临时表,创建一个临时表SQL”边界阅读