mysql表变量临时表_SqlServer——临时表和表变量

一、临时表概述

SqlServer临时表有两种:局部临时表、全局临时表。

1、临时表的共同特点:

无论会话的数据库上下文如何,临时表都被保存到 tempdb 数据库中;

当临时表数据较少时,页被保存到内存中;内存不足时,才持久化临时表的页;

判断临时表是否存在:if object_id(‘tempdb..#临时表名‘,‘U‘) N) is not null print ‘存在‘;

2、临时表之间的区别

局部临时表:

临时表名前以#开头,临时表由创建该表的会话所有,为实现不同会话之间同名的临时表相互隔离,SqlServer为表名称添加下划线和唯一的数字后缀以区分不同会话间同名的临时表。即不同会话之间创建的临时表表名虽然我们看到的是一样,但实际上不一样。临时表的可见性与C#、C语言的变量类似,只对调用堆栈中的创建级别和创建级别的内部级别可见,如在存储过程中创建临时表,在存储过程结束后,临时表即被自动销毁。如果临时表在会话的最外层创建临时表,则在会话、批处理和内部级别中的任何地方都有效,直到会话终止时才销毁。 有效期为到创建级别范围内。同一个会话内可以在不同的级别内创建相同名称的局部临时表,但容易在表名解析时导致错误。

全局临时表:

表名以##开头,可以被所有的会话访问,且任何会话均可以删除全局临时表。全局临时表适用于在多个会话之间共享临时数据而不用担心安全问题,全局临时表的有效期为会话期间而不是创建级别,在创建全局临时表的会话结束后,全局临时表不再向新的会话发放锁,而等现有的会话访问完释放完锁后将销毁全局临时表。

3、创建不属于任何会话的全局临时表

该全局临时表由SqlServer维护一个大于0的引用计数器以确保不会被数据库自动删除。

方法:

在master数据库中创建有 sp_前缀、使用 startup 选项标记的特殊存储过程,

例:

use master;

go

if object_id(‘dbo.sp_test‘) is not null

drop proc dbo.sp_test

go

create proc dbo.sp_test

as

create table ##test

(

name varchar(36)

);

go

exec dbo.sp_procoption ‘sp_test‘,‘startup‘,‘true‘;

这样一来,这种临时表的作用就和永久表没有多大区别了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
内容简介   本书全面介绍了SQL语句在数据库开发中所用到的技术和技巧。全书分为23章,涉及到SQLServer2000、SQLServer2005、Access、Oracle10g、MySql5.0和Postgresql8.2等6种数据库语言,内容包括SQL语言基础、常规数据查询、高级数据过滤、字符串查询、日期函数、日期函数、数据排序、聚集函数与分组统计、使用子查询、多查询、高级查询、插入数据、更新和删除数据、创建、操纵数据库和表、使用视图、使用存储过程和函数、使用游标、使用触发器、事务处理、安全性控制、SQL高级特性、数据库对象查询、数据库安全与维护和嵌入式SQL等。全书共提供了463人个实例,每个实例都突出实用性,其中大部分是程序开发者所需的有关问题的解决方案。   本书配有光盘,光盘提供了书中所有实例的源代码。全部代码都经过精心调试,都可以正常运行。   本书适用于广大计算机爱好者和编程人员阅读,也可供大、中专院校相关专业的师生学习参考。   目录   第1章 SQL语言基础   1.1 变量与常量   1.2 数据类型   1.3 复合语句   1.4 条件判断语句   1.5 循环语句   1.6 临时表   1.7 常用命令   第2章 常规数据查询   2.1 查询的基本结构   2.2 列的查询   2.3 列的计算   2.4 WHERE条件查询   2.5 区间查询   第3章 高级数据过滤   3.1 组合WHERE语句   3.2 IN运算符   3.3 NOT运算符   3.4 行查询   3.5 类型转换   3.6 进制转换   3.7 匹配查询   3.8 空值判断   第4章 字符串查询   第5章 日期查询   第6章 数据排序   第7章 聚合函数与分组统计   第8章 使用子查询   第9章 多查询   第10章 高级查询   第11章 插入数据   第12章 更新和删除数据   第13章 创建、操纵数据库和表   第14章 使用视图   第15章 使用存储过程和函数   第16章 使用游标   第17章 使用触发器   第18章 事务处理   第19章 安全性控制   第20章 SQL高级特性   第21章 数据库对象查询   第22章 数据库安全与维护   第23章 嵌入式SQL   附录 SQL范例宝典实例适用范围
内容简介   本书全面介绍了SQL语句在数据库开发中所用到的技术和技巧。全书分为23章,涉及到SQLServer2000、SQLServer2005、Access、Oracle10g、MySql5.0和Postgresql8.2等6种数据库语言,内容包括SQL语言基础、常规数据查询、高级数据过滤、字符串查询、日期函数、日期函数、数据排序、聚集函数与分组统计、使用子查询、多查询、高级查询、插入数据、更新和删除数据、创建、操纵数据库和表、使用视图、使用存储过程和函数、使用游标、使用触发器、事务处理、安全性控制、SQL高级特性、数据库对象查询、数据库安全与维护和嵌入式SQL等。全书共提供了463人个实例,每个实例都突出实用性,其中大部分是程序开发者所需的有关问题的解决方案。   本书配有光盘,光盘提供了书中所有实例的源代码。全部代码都经过精心调试,都可以正常运行。   本书适用于广大计算机爱好者和编程人员阅读,也可供大、中专院校相关专业的师生学习参考。   目录   第1章 SQL语言基础   1.1 变量与常量   1.2 数据类型   1.3 复合语句   1.4 条件判断语句   1.5 循环语句   1.6 临时表   1.7 常用命令   第2章 常规数据查询   2.1 查询的基本结构   2.2 列的查询   2.3 列的计算   2.4 WHERE条件查询   2.5 区间查询   第3章 高级数据过滤   3.1 组合WHERE语句   3.2 IN运算符   3.3 NOT运算符   3.4 行查询   3.5 类型转换   3.6 进制转换   3.7 匹配查询   3.8 空值判断   第4章 字符串查询   第5章 日期查询   第6章 数据排序   第7章 聚合函数与分组统计   第8章 使用子查询   第9章 多查询   第10章 高级查询   第11章 插入数据   第12章 更新和删除数据   第13章 创建、操纵数据库和表   第14章 使用视图   第15章 使用存储过程和函数   第16章 使用游标   第17章 使用触发器   第18章 事务处理   第19章 安全性控制   第20章 SQL高级特性   第21章 数据库对象查询   第22章 数据库安全与维护   第23章 嵌入式SQL   附录 SQL范例宝典实例适用范围

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值