sqlserver 临时表创建 查询 删除
create table temptablename
(
id int identity (1,1) not null,
a1 varchar(50),
a2 varchar(50),
a3 varchar(50),
primary key (id) --定义id为临时表#tmp的主键
)
select [字段1,字段2,...,] into #tmp from table
查询临时表的数据 select * from #tmp
删除临时表 drop table #tmp
创建一个不被自动回收的全局临时表。没有经过测试,虽然貌似看上去没啥意义,和常规表有什么区别?说不定以后有用,所以还是记下来:
use master;
go
if object_id('dbo.sp_globals') is not null
drop proc dbo.sp_globals
go
create proc dbo.sp_globals
as
create table ##globals
(
id varchar(36) not null primary key
value varchar(500)
)
go
↑sp内容exec dbo.sp_procoption 'dbo.sp_globals','startup','true';
只有显示删除##globals才会被清除
注明
本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 sql server 实例断开连接时被删除。全局临时表的名称以两个数字符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 sql server 断开连接时被删除。
表变量相当于ado的recordset,速度比临时表快得多。
表变量不能用在下列语句中:
insert into table_variable exec 。
select select_list into table_variable 语句。
在定义 table 变量的函数、存储过程或批处理结束时,自动清除 table 变量。
但临时表支持。
.表变量速度比临时表快得多(如果内存足够)
如果数据量不大: