SQL中临时表的创建及其操作

##sql中临时表的创建
** … SQL
创建临时表
方法一:
创建表#临时表名(字段1约束条件,
字段2约束条件,
…..)
create table ##临时表名(字段1约束条件,
字段2约束条件,
…..)
方法二:
从你的表中选择* into#临时表名;
从你的表中选择*进入##临时表名;
注:以上的#代表局部临表​​,##代表全局临时表
查询临时表
select * from#临时表名;
select * from ##临时表名;
删除临时表
drop table#临时表名;
drop table ##临时表名;

drop table #Tmp - 删除临时表#Tmp
创建表#Tmp - 创建临时表#Tmp

ID int IDENTITY(1,1)not null, - 创建列ID,并且每次新增一条记录就会加1
WokNo varchar(50),
主键(ID) - 定义ID为临时表#Tmp的主键
);
选择* from #Tmp - 查询临时表的数据
truncate table #Tmp - 清空临时表的所有数据和约束
相关例子:
申报@Wokno Varchar(500) - 用来记录职工号
声明@Str NVarchar(4000) - 用来存放查询语句
声明@Count int - 求出总记录数
声明@i int
设置@i = 0
从#Tmp中选择@Count = Count(Distinct(Wokno))
而@i <@Count
开始
设置@Str =’选择top 1 @Wokno =来自#Tmp的WokNo其中id不在(选择最上面)+ Str(@i)+’来自#Tmp的id)’
Exec Sp_ExecuteSql @ Str,N’@ WokNo Varchar(500)OutPut’,@ WokNo Output
选择@ WokNo,@ i - 束
行一行把职工号显示出来
设置@i = @i + 1
结束
临时表
可以创建本地和全局临时表本地临时表仅在当前会话中可见;全局临时表在所有会话中都可见。
本地临时表的名称前面有一个编号符(#table_name),而全局临时表的名称前面有两个编号符(## table_name)
。SQL语句使用CREATE TABLE语句为table_name指定的名称引用临时表:
CREATE TABLE #MyTempTable(可乐INT PRIMARY KEY)
INSERT INTO #MyTempTable VALUES(1)
如果本地临时表由存储过程创建或由多个用户同时执行的应用程序创建,则SQL Server必须能够区分由不同用户创建的表。为此,SQL Server在内部为每个本地临时表的表名追加一个数字后缀。存储在tempdb数据库的sysobjects表中的临时表,其全名由CREATE TABLE语句中指定的表名和系统生成的数字后缀组成。为允许追加后缀,为本地临时表指定的表名表名不能超过116 字符,
除非使用DROP TABLE语句显式除去临时表,否则临时表将在退出其作用域时由系统自动除去
。当存储过程完成时,将自动除去在存储过程中创建的本地临时表由创建表的存储过程执行的所有嵌套存储过程都可以引用此表。但调用创建此表的存储过程的进程无法引用此表
所有其它本地临时表在当前会话结束时自动除去
全局临时表在创建此表的会话结束且其它任何停止对其引用时自动除去。任务与表之间的关联只在单个的Transact-SQL语句的生存周期内保持。换言之,当创建全局临时表的会话结束时,最后一条引用此表的的Transact-SQL语句完成后,将自动除去此表。
。在存储过程或触发器中创建的本地临时表与在调用存储过程或触发器之前创建的同名临时表不同如果查询引用临时表,而同时有两个同名的临时表,则不定义针对哪个表解析该查询。嵌套存储过程同样可以创建与调用它的存储过程所创建的临时表同名的临时表。嵌套存储过程中对表名的所有引用都被解释为是针对该嵌套过程所创建的表,例如:
复制代码
CREATE PROCEDURE Test2

CREATE TABLE #t(x INT PRIMARY KEY)
插入#T值(2)
SELECT Test2Col = x FROM #t

CREATE PROCEDURE Test1

CREATE TABLE #t(x INT PRIMARY KEY)
插入#T值(1)
SELECT Test1Col = x FROM #t
EXEC Test2

CREATE TABLE #t(x INT PRIMARY KEY)
INSERT INTO #t VALUES(99)

EXEC Test1

下面是结果集:
(1行受影响)

Test1Col

1
(1行受影响)

Test2Col

2
复制代码
当创建本地或全局临时表时,CREATE TABLE语法支持除FOREIGN KEY约束以外的其他所有约束定义。如在临时表中指定FOREIGN KEY约束,该语句将返回警告信息,指出此约束已被忽略,表示会创建,但不具有FOREIGN KEY约束。在FOREIG。EY
约束中
引用临时表。
考虑使用表变量而不使用临时表。当需要在临时表上显式地创建索引时,或多个存储过程或函数需要使用表值时,临时表很有用。通常,表变量提供更有效的查询处理。以上内容属于转载。**引用临时表。

考虑使用表变量而不使用临时表。当需要在临时表上显式地创建索引时,或多个存储过程或函数需要使用表值时,临时表很有用。通常,表变量提供更有效的查询处理。以上内容属于转载。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值