临时表 SQL Server 支持临时表。临时表就是那些名称以井号 (#) 开头的表。如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表。临时表不存储在当前数据库内,而是存储在系统数据库 tempdb 内。临时表有两种类型: 本地临时表 以一个井号 (#) 开头的那些表名。只有在创建本地临时表的连接上才能看到这些表。全局临时表 以两个井号 (##) 开头的那些表名。在所有连接上都能看到全局临时表。如果在创建全局临时表的连接断开前没有显式地除去这些表,那么只要所有其它任务停止引用它们,这些表即被除去。当创建全局临时表的连接断开后,新的任务不能再引用它们。当前的语句一执行完,任务与表之间的关联即被除去;因此通常情况下,只要创建全局临时表的连接断开,全局临时表即被除去。现在,临时表的许多传统用途可由具有 table 数据类型的变量替换。
select * into #temp from T1 order by A asc 这句将结果创建临时表#temp 并保存在临时表#temp 中 TRUNCATE TABLE t1 删除表T1的内容不产生日志 insert into t1 select * from #temp 将#temp的内容插入到T1表中
select * into #temp from T1 order by A asc ---将数据全部导到#temp临时表 TRUNCATE TABLE t1 ---清空t1所有数据 insert t1 select * from #temp ---将数据反还近来 drop table #temp ---删除临时表
#temp是一个临时表第一句: select * into #temp from T1 order by A asc 以A按升序把T1表中的内容放入临时表#temp中第二句: TRUNCATE TABLE t1 删除T1表中的内容,而不产生日志第三句: insert into t1 select * from #temp 将临时表中的数据再次存入T1表中
第一句话就是在内存中新建这个表,并且插入数据
第二句就是从这个表中查询数据
SQL Server 支持临时表。临时表就是那些名称以井号 (#) 开头的表。如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表。临时表不存储在当前数据库内,而是存储在系统数据库 tempdb 内。临时表有两种类型: 本地临时表
以一个井号 (#) 开头的那些表名。只有在创建本地临时表的连接上才能看到这些表。全局临时表
以两个井号 (##) 开头的那些表名。在所有连接上都能看到全局临时表。如果在创建全局临时表的连接断开前没有显式地除去这些表,那么只要所有其它任务停止引用它们,这些表即被除去。当创建全局临时表的连接断开后,新的任务不能再引用它们。当前的语句一执行完,任务与表之间的关联即被除去;因此通常情况下,只要创建全局临时表的连接断开,全局临时表即被除去。现在,临时表的许多传统用途可由具有 table 数据类型的变量替换。
这句将结果创建临时表#temp 并保存在临时表#temp 中
TRUNCATE TABLE t1
删除表T1的内容不产生日志
insert into t1 select * from #temp
将#temp的内容插入到T1表中
#temp只是用来中间过渡的临时表
TRUNCATE TABLE
删除表中的所有行,而不记录单个行删除操作
TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。
select * from table1
道理差不多
TRUNCATE TABLE t1 ---清空t1所有数据
insert t1 select * from #temp ---将数据反还近来
drop table #temp ---删除临时表
select * into #temp from T1 order by A asc
以A按升序把T1表中的内容放入临时表#temp中第二句:
TRUNCATE TABLE t1
删除T1表中的内容,而不产生日志第三句:
insert into t1 select * from #temp
将临时表中的数据再次存入T1表中