SQL 临时表的使用,本地和全局临时表

一.SQL中创建本地临时表

方法1:

CREATE TABLE #本地临时表名称

CREATE TABLE ##全局临时表名称

方法2:

SELECT * INTO #本地临时表名称 FROM 表名称

SELECT * INTO ##全局临时表名称 FROM 表名称

说明:

1.临时表其实就是放在tempdb 中的的一个用户表。

2.本地临时表用"#"开头,全局临时表用"##"开头,这种表在会话期间存在,会话结束时自动删除。

二、删除临时表

语法:

DROP TABLE #本地临时表名称

DROP TABLE ##全局临时表名称

说明:

DROP  TABLE 语句显式除去临时表,否则临时表将在退出其作用域时由系统自动除去:     
1、当存储过程完成时,将自动除去在存储过程中创建的本地临时表。由创建表的存储过程执行的所有嵌套存储过程都可以引用此表。但调用创建此表的存储过程的进程无法引用此表;
2、所有其它本地临时表在当前会话结束时自动除去;
3、全局临时表在创建此表的会话结束且其它任务停止对其引用时自动除去。任务与表之间的关联只在单个Transact-SQL语句的生存周期内保持。换言之,当创建全局临时表的会话结束时,最后一条引用此表的Transact-SQL语句完成后,将自动除去此表。

时间: 2024-10-17 20:32:29

SQL 临时表的使用,本地和全局临时表的相关文章

临时表和全局临时表

临时表就是那些名称以井号 (#) 开头的表.如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表. 临时表不存储在当前数据库内,而是存储在系统数据库 tempdb 内. 全局临时表 以两个井号 (##) 开头的那些表名.在所有连接上都能看到全局临时表或者这样说只要这个全局临时表存在,那么用户创建会话后对所有的用户都是可见的.如果在创建全局临时表的连接断开前没有显式地除去这些表,那么只要所有其它任务停止引用它们,这些表即被除去.当创建全局临时表的连接断开后,新的任务不能再引用

SQL Server-聚焦事务对本地变量、临时表、表变量影响以及日志文件存满时如何收缩(三十一)

前言 接下来我们将SQL Server基础系列还剩下最后几节内容结束,后续再来讲解SQL Server性能调优,我们开始进入主题. SQL Server事务对本地变量影响 事务对变量影响具体是指什么意思呢,换句话说就是当我们回滚事务和提交事务之后对本地变量是否起作用呢,下面我们来看下具体例子. PRINT '回滚事务之后测试' DECLARE @FlagINT INT SET @FlagInt = 1 PRINT @FlagInt ---- 此时变量值为1 BEGIN TRANSACTION S

sql server中的用户临时表和全局临时表的区别

临时表分为: 本地临时表,仅限于当前访问者访问,创建方法去如下:create table #TableName(表结构)储存于数据库tempdb内(硬盘),当前用户断开连接(把当前的),自动删除如果使用中不断开连接,且不需要该临时表请执行:drop table #TableName 全局临时表,所有访问用户访问,创建方法去如下:create table ##TableName(表结构)储存于数据库tempdb内,当所有访问用户断开连接,自动删除删除语句:drop table ##TableNam

sql复制表、拷贝表、临时表

--insert into pppcopy select * from ppp //从表ppp中获取数据,并将其插入到pppcopy中,只拷贝表的数据,不拷贝表的结构(前提:表pppcopy1存在) --select * into pppCopy1 from ppp //将ppp中的数据拷贝到 pppcopy1中,拷贝表的数据以及表的结构(前提:表pppcopy1不存在) --select * into pppCopy2 from ppp where 1=0// 将ppp的表结构拷贝到pppco

被Oracle全局临时表坑了

今天凌晨4点多钟,在客户现场的负责人打电话给我,说很奇怪,下载功能时快时慢.此下载功能非常复杂,之前一直是我优化,在半梦半醒中打开电脑,通过远程看着现场同事在PL/SQL developer中操作.执行同一条SQL,时快时慢,快的时候大概0.6s,慢的时候超过1分钟. 这条SQL有调用一个函数,功能是动态生成接近200条查询语句,SQL中都是有绑定变量的.是现场的测试环境,刚刚部署,心想应该不是数据库负载所致. 1. 抓取数据库AWR报告,完全没有压力,数据库服务器配置都是杠杠的.此刻心里有点乱

一次被Oracle全局临时表坑的个人心得

[e良师益友网]使用Oracle开发的时候很多时候遇到一些你意想不到的问题,往往在于细节方面出现了不可回避的错误,下面分享一个难忘的事件,这次中表明基础方面的知识真的很重要 那 是凌晨4点多钟,在客户现场的负责人打电话给我,说很奇怪,下载功能时快时慢.此下载功能非常复杂,之前一直是我优化,在半梦半醒中打开电脑,通过远程看 着现场同事在PL/SQL developer中操作.执行同一条SQL,时快时慢,快的时候大概0.6s,慢的时候超过1分钟. 这条SQL有调用一个函数,功能是动态生成接近200条

数据库——创建局部临时表和全局临时表

局部临时表与全局临时表区别与示例: 1.局部临时表(#开头)只对当前连接有效,当前连接断开时自动删除. 2.全局临时表(##开头)对其它连接也有效,在当前连接和其他访问过它的连接都断开时自动删除. 3.不管局部临时表还是全局临时表,只要连接有访问权限,都可以用drop table #Tmp(或者drop table ##Tmp)来显式删除临时表. --create table #temp(num int primary key,pname varchar(20))//创建局部临时表,只对当前连接

全局临时表

全局临时表是以两个‘##’符号为前缀,并且它对所有会话可见的一种临时表.全局临时表一般用在需要向所有人共享数据的时候使用.下面是一个全局临时表的示例. -- 全局临时表 IF OBJECT_ID('tempdb.dbo.##Globals','U') IS NOT NULL DROP TABLE dbo.##Globals; GO -- 创建全局临时表 CREATE TABLE dbo.##Globals ( ID INT NOT NULL, VALUE NVARCHAR(50) NOT NUL

SQL server 查看什么语句在使用临时表

SQL server 查询那些语句在使用临时表 最近在日常的性能测试工作中发现,数据库端的IO读写比较大,有规律的2-8M的波动,数据库的版本为 SQL server 2008 sp3. 这些IO操作主要来自于临时表,在测试之前,我们已经对部分消耗资源较多的语句进行了跟踪. 对一些使用临时表的语句进行了修改,但是肯定还是有落网之鱼.我们需要对其进行甄别,做到进一步的优化. 在开始之前,我们先来了解下什么样的操作会使用到临时表: 时的用户对象, 比如临时表,表变量等(#,##,@开头的一些变量)