开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1814|回复: 6
收起左侧

[其它数据库例题] T-SQL查询进阶--变量

[复制链接]

结帖率:61% (35/57)
发表于 2013-1-26 08:14:40 | 显示全部楼层 |阅读模式   海南省海口市
概述
变量对于一种语言是必不可少的一部分,当然,对于T-SQL来讲也是一样。在简单查询中,往往很少用到变量,但无论对于复杂的查询或存储过程中,变量都是必不可少的一部分.
变量的种类
在T-SQL中,变量按生存范围可以分为全局变量(Global Variable)和局部变量(Local Variable).
1.全局变量是由系统定义的,在整个SQL SERVER实例内都能访问到的变量.全局变量以@@作为第一个字符,用户只能访问,不能赋值。
2.局部变量由用户定义,生命周期只在一个批处理内有效。局部变量以@作为第一个字符,由用户自己定义和赋值。
一个简单的例子如下
因为全局变量仅仅是用于读取系统的一些参数,具体每个全局变量所代表的含义请Google之…本文主要介绍局部变量(也就是用户自定义变量).
局部变量的用途
在T-SQL中,局部变量是一个存储指定数据类型单个值的对象.T-SQL中对变量的定义实际上和大多数高级语言一样.
局部变量在使用中常常用于以下三种用途:
1.在循环语句中记录循环的次数或者用于控制循环的次数.
2.用于存储流程语句来控制流程走向
3.储存存储过程或者函数的返回值
实际上,存储任何业务数据的局部变量都属于这一类应用.

局部变量的声明
局部变量的声明必须以"DECLEAR"作为关键字,变量的命名必须以"@"作为变量名的第一个字符.必须为所声明的变量提供一个数据类型和数据长度.如:
局部变量的数据类型不能为Text,ntext,和Image类型,当对于字符型变量只提供数据类型没有提供数据长度时,数据长度默认为1.
一切只声明没有赋值的局部变量的初始值都为”NULL”.
局部变量的赋值
在T-SQL中,局部变量的赋值是通过”Set”关键字和”Select”关键字实现的.
实际上,使用Set或者是Select取决于下面几个因素
1.当对多个变量赋值时
SELECT关键字支持多个变量赋值,而SET关键字只支持一次对一个值赋值
2.当赋值时表达式返回值的个数
使用SET进行赋值时,当表达式返回多个值时,报错.而SELECT关键字在赋值表达式返回多个值时,取最后一个.
比如,假设XXX表只有以下几条数据:
当使用SELECT关键字进行时,可以取返回值的最后一个。
3.当表达式未返回值时
使用SET对局部变量赋值时,如果赋值表达式未返回值,则局部变量变为NULL,而SELECT对表达式赋值时,如果表达式未返回值,则局部变量保持原值.
4.当…你是一个标准爱好者时
坚决使用SET关键字对局部变量赋值吧,因为SET是ANSI标准……
5.当…你懒得记上述何时使用SET或是何时使用SELECT时
好吧,我承认我也很懒.那你按照一个简单的方式区别:当你的赋值语句需要引用一个数据源(表)时,使用SELECT.除此之外,使用SET.
局部表变量
局部表变量是一个特殊的局部变量.和临时表不同,局部表变量具有一切局部变量的特点.在查询中,因为局部表变量是存在内存中,而不是硬盘中,所以速度会远远快于临时表或是实际表,局部表变量最多的使用时在查询中充当多个表做连接时的中间表,比如:
这样会大大提高多表连接的查询速度.
总结
本文介绍了变量种类以及局部变量的使用范围,定义以及赋值方法.还简单介绍了表变量。在复杂查询中,系统的了解T-SQL的变量是写出好的查询语句必不可少的一部分。小松鼠
发表于 2013-12-2 07:35:14 | 显示全部楼层   江苏省盐城市
不错!!!!!!!!!!!!!  
回复 支持 反对

使用道具 举报

发表于 2013-11-9 07:45:38 | 显示全部楼层   江苏省盐城市
不错!!!!!!!!!!
回复 支持 反对

使用道具 举报

结帖率:37% (7/19)
发表于 2013-2-3 09:39:17 | 显示全部楼层   北京市北京市
图文的不错啊
回复 支持 反对

使用道具 举报

头像被屏蔽
结帖率:0% (0/1)
发表于 2013-1-26 11:07:15 | 显示全部楼层   江苏省宿迁市
学习学习!
回复 支持 反对

使用道具 举报

结帖率:100% (14/14)
发表于 2013-1-26 08:20:59 | 显示全部楼层   广东省广州市
我真心看不懂你写的什么。。。。。
回复 支持 反对

使用道具 举报

结帖率:100% (14/14)
发表于 2013-1-26 08:18:36 | 显示全部楼层   广东省广州市
沙发有奖么?

点评

没有奖   海南省海口市  发表于 2013-1-26 08:19
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表