第63章TSQL语言补充.pptx
《第63章TSQL语言补充.pptx》由会员分享,可在线阅读,更多相关《第63章TSQL语言补充.pptx(67页珍藏版)》请在咨信网上搜索。
1、T-SQL语言T-SQL其它语言元素其它语言元素注释变量运算符函数流程控制语句1.注释注释T-SQL提供两种类型的注释字符:一种是ANSI标准的注释符“-”,用于单行注释;另一种是与C语言相同的程序注释符号,即“/*/”,用于注释多行文字。注释是程序代码中不执行的文本字符串。2.变量1.变量变量变量名必须是一个合法的标识符。1)标识符)标识符(1)常规标识符不允许使用不允许使用T-SQL的保留字,且不允许嵌入空格的保留字,且不允许嵌入空格或其他特殊字符。或其他特殊字符。(2)分隔标识符包含在双引号(“)或者方括号()内的常规标识符或不符合常规标识符规则的标识符。若标识符中若标识符中有空格,必须
2、使用双引号有空格,必须使用双引号或方括号或方括号。(2 2)变量的分类)变量的分类Transact-SQL语言包括两种形式的变量:用户自己定义的局部变量;系统提供的全局变量。1.局部变量局部变量局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限在程序内部。局部变量必须先定义才能被引用。使用DECLARE命令定义局部变量,引用局部变量时必须在其名称前加上标志“”。局部变量用于保存单个数据值,供控制流语句测试以及保存由存储过程返回的数据值等。例如,保存运算的中间结果,作为循环变量等。1)局部变量的定义局部变量的定义在批处理或过程中用DECLARE语句声明局部变量。语法格式:语法格式:DEC
3、LARElocal_variabledata_type,.n2.局部变量的使用局部变量的使用local_variable指定局部变量的名称;datatype设置局部变量的数据类型及大小。局部变量可以为除text,ntext,image类型以外的任何数据类型。所有局部变量在声明后均初始化为所有局部变量在声明后均初始化为NULL,可以使用SELECT或SET设定相应的值。2)局部变量赋值(局部变量赋值(SET或或SELECT语句)语句)将DECLARE语句创建的局部变量设置为给定表达式的值。SET语句语法格式:语句语法格式:SETlocal_variableexpression【例例1】创建局部变
4、量var1、var2,并赋值,然后输出变量的值。DECLAREvar1,var2char(20)SETvar1中国中国/*一个一个SET语句只能给一个变量赋值语句只能给一个变量赋值*/SETvar2var1+是一个伟大的国家是一个伟大的国家SELECTvar1,var2/*输出变量的值输出变量的值*/Go【例例3】使用查询给变量赋值。USEXSCJDECLAREstudentchar(8)SETstudent=(SELECT姓名姓名FROMXS)GO/*该语句若该语句若XS表中只有一条记录,可正常执行,否则将出错表中只有一条记录,可正常执行,否则将出错。*/【例例2】创建一个名为sex的局部变
5、量,并在SELECT语句中使用该局部变量查找表XS中所有女同学的学号、姓名。USEXSCJDECLAREsexbitSETsex=0SELECT学号学号,姓名姓名FROMXSWHERE性别性别=sexGOSELECT赋值语句的语法格式:赋值语句的语法格式:SELECTlocal_variable=expression,n说明如下:说明如下:1)SELECT语句通常用于将单个值返回到变量中,若有多个值时,将返回的最后一个值赋给变量;2)若无返回行,则变量将保留当前值;3)若expression不返回值,则变量设为NULL;4)一个SELECT语句可以初始化多个局部变量。SELECT语句也可用于局
6、部变量的查看,格式如下:SELECT local_variable PRINT local_variable也可用于局部变量的查看【例例4】在XS表中不存在符合要求的结果,因此对该表的查询不返回结果,变量var1将保留原值。USEXSCJDECLAREvar1nvarchar(30)SELECTvar1=刘丰刘丰SELECTvar1=姓名姓名/*将姓名列的值赋给变量将姓名列的值赋给变量*/FROMXSWHERE学号学号=64122312111SELECTvar1ASNAME/*var1为为刘丰刘丰*/3)局部游标变量的定义与赋值)局部游标变量的定义与赋值(1)局部游标变量的定义语法格式:语法格
7、式:DECLAREcursor_variable_nameCURSOR,.nCURSOR表示该变量为游标变量。表示该变量为游标变量。(2)游标变量的使用步骤定义游标变量给游标变量赋值打开游标利用游标读取行(记录)使用结束后关闭游标删除游标的引用。(3)局部游标变量的赋值:利用SET语句赋值语法格式:语法格式:SETcursor_variable=cursor_variable|/*将一个已存在的并且赋值的将一个已存在的并且赋值的游标变量的值赋给另一局部游标变量游标变量的值赋给另一局部游标变量*/cursor_name|/*将一个已申明的游标名赋给指定的局部游标变量将一个已申明的游标名赋给指定的
8、局部游标变量*/CURSOR子句子句/*申明一个游标,同时将其赋给指定的局部游标变量申明一个游标,同时将其赋给指定的局部游标变量*/【例例5】使用游标变量USEXSCJDECLARECursorVarCURSOR/*定义游标变量定义游标变量*/SETCursorVar=CURSORSCROLLDYNAMIC/*给游标变量赋值给游标变量赋值*/FORSELECT学号学号,姓名姓名FROMXSWHERE姓名姓名LIKE王王%OPENCursorVar/*打开游标打开游标*/FETCHNEXTFROMCursorVar/*游标指向第一行记录游标指向第一行记录*/WHILEFETCH_STATUS=0
9、/*FETCH_STATUS保存保存FETCH语句的执行状态,其值为语句的执行状态,其值为0表示上一条执行成功;为表示上一条执行成功;为-1表示表示FETCH语句失败或此行不在结果集中;为语句失败或此行不在结果集中;为-2表示被提取的行不存在(已删除)。表示被提取的行不存在(已删除)。*/BEGINFETCHNEXTFROMCursorVar/*通过游标读行记录通过游标读行记录*/ENDCLOSECursorVar/*关闭游标关闭游标*/DEALLOCATECursorVar/*删除对游标的引用删除对游标的引用*/3.全局变量的使用全局变量的使用全局变量由系统提供且预先声明,是SQLServe
10、r系统内部使用的变量,其作用范围并不仅限于某一程序,而是任何程序均可以随时调用。通常存储SQLServer的配置设定值和统计数据。用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值。使用全局变量时应该注意以下几点:使用全局变量时应该注意以下几点:全局变量不是由用户的程序定义的,而是在服务器级定义的。用户只能使用预先定义的全局变量。引用全局变量时,必须以标记符“”开头。局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。SQLServer支持的全局变量主要包括:支持的全局变量主要包括:CONNECTIONS:返回自最近一次启动S
11、QLServer以来连接或试图连接的次数。ERROR:返回最后执行SQL语句的错误代码。ROWCOUNT:返返回回上上一一次次语语句句影影响响的的数数据据行行的的行数行数。SERVERNAME:返回运行SQLServer的本地服务器的名称。VERSION:返回SQLServer当前安装的日期、版本和处理器类型。全全 局局 变变 量量 的的 查查 看看 语语 句句 同同 局局 部部 变变 量量:SELECTvariableSQLServer2000的运算符主要有以下六大类:算术运算符位运算符比较运算符逻辑运算符字符串串联运算符赋值运算符2运算符与表达式运算符与表达式1算术运算符算术运算符算术运算
12、符有:+(加)、-(减)、*(乘)、/(除)和%(求模)五种运算。+(加)和(减)运算符也可用于对datetime及smalldatetime值进行算术运算。【例例6】求学生的年龄。USEXSCJSETNOCOUNTONDECLAREstartdatedatetimeSETstartdate=getdate()/*当前日期当前日期*/SELECTstartdate出生时间出生时间AS年龄年龄FROMXS位运算符在两个表达式之间执行位操作,这两个表达式的类型可为整型或与整型兼容的数据类型(如:字符型等,但不能为image类型)。位运算符如表所示。2位运算符位运算符运算符运算符运算规则运算规则&两
13、个位均为1时,结果为1,否则为0|只要一个位为1,结果为1,否则为0两个位值不同时,结果为1,否则为0比较运算符(又称关系运算符)如表所示,用于测试两个表达式的值是否相同,其运算结果为逻辑值,可以为三种之一:TRUE、FALSE及UNKNOWN。3.比较运算符比较运算符运算符运算符含义含义=相等相等大于大于=大于等于大于等于=小于等于小于等于、!=不等于不等于!不大于不大于逻辑运算符用于对某个条件进行测试,运算结果为TRUE或FALSE。SQLServer提供的逻辑运算符如表所示。4.逻辑运算符逻辑运算符运算符运算符运算规则运算规则AND如果两个操作数值都为如果两个操作数值都为TRUE,运算结
14、果为,运算结果为TRUE。OR如果两个操作数中有一个为如果两个操作数中有一个为TRUE,运算结果为,运算结果为TRUE。NOT若一个操作数值为若一个操作数值为TRUE,运算结果为运算结果为FALSE,否则为,否则为TRUE。ALL如果每个操作数值都为如果每个操作数值都为TRUE,运算结果为,运算结果为TRUE。ANY在一系列操作数中只要有一个为在一系列操作数中只要有一个为TRUE,运算结果为,运算结果为TRUE。BETWEEN如果操作数在指定的范围内,运算结果为如果操作数在指定的范围内,运算结果为TRUE。EXISTS如果子查询包含一些行,运算结果为如果子查询包含一些行,运算结果为TRUE。I
15、N如果操作数值等于表达式列表中的一个,运算结果为如果操作数值等于表达式列表中的一个,运算结果为TRUE。LIKE如果操作数与一种模式相匹配,运算结果为如果操作数与一种模式相匹配,运算结果为TRUE。SOME如果在一系列操作数中,有些值为如果在一系列操作数中,有些值为TRUE,运算结果为,运算结果为TRUE。LIKE的使用的使用语法格式:语法格式:match_expressionNOTLIKEpatternESCAPEescape_character通配符通配符说明说明示例示例%代表代表0个或多个字符。个或多个字符。WHERE姓名姓名LIKE刘刘%查询姓刘的学生。查询姓刘的学生。_(下划线下划线
16、)代表单个字符。代表单个字符。WHERE姓名姓名LIKE张张_查询姓张的名为一个汉字的所有人名。查询姓张的名为一个汉字的所有人名。指定范围指定范围(如:如:a-f、0-9)或集或集合合(如如abcdef)中的任何单个中的任何单个字符。字符。WHERE substring(学学 号号,1,1)LIKE12%查询首字符为查询首字符为1、2的学号。的学号。指定不属于范围指定不属于范围(如:如:a-f、0-9)或集合或集合(如:如:abcdef)的任何单个字符。的任何单个字符。WHERE substring(学学 号号,1,1)LIKE1-9%查询首字符不为查询首字符不为1-9任一字符的学号。任一字符
17、的学号。【例例7】查询课程名以C或A开头的情况。USEXSCJSELECT*FROMKCWHERE课程名课程名LIKEAC%通过运算符“+”实现两个字符串的联接运算。将“+”号两边的字符串串联成一个字符串。【例例8】多个字符串的联接。USEXSCJSELECT(学号+,+SPACE(1)+姓名)AS学号及姓名FROMXSWHERESUBSTRING(学号,1,2)=19/*取子串*/5.字符串联接运算符字符串联接运算符一元运算符有+(正)、-(负)和(按位取反)。如a的值为12(0000000000001100)则a的值为:11111111111100116.一元运算符一元运算符7.赋值运算符
18、赋值运算符T-SQL只有一个赋值运算符,即等号(=)。赋值运算符可以将数据值指派给特定的对象。如给局部变量赋值的SET和SELECT语句中使用的“=”。利用赋值运算符可以在列标题和为列定义值的表达式之间建立对应关系。3流程控制语句控制语句控制语句说明说明IF.ELSE条件语句GOTO无条件转移语句WHILE循环语句CONTINUE用于重新开始下一次循环BREAK用于退出最内层的循环RETURN无条件返回SQLServer中提供了如表所示的流程控制语句3.1IF.ELSE语句在程序中如果要对给定的条件进行判定,当条件为真或假时分别执行不同的T-SQL语句,可用IF.ELSE语句实现。语法格式:语
19、法格式:IFBoolean_expression/*条件表达式*/sql_statement|statement_block/*条件表达式为真时执行*/ELSEsql_statement|statement_block/*条件表达式为假时执行*/IFELSE语句中,IF子句是必须的,ELSE子句是可选的,最简单的IF语句没有ELSE子句部分。SQLServer允许嵌套使用IFELSE语句,而且嵌套层数没有限制。IF条件表达式A/*T-SQL语句或语句块*/ELSEB/*T-SQL语句或语句块*/当条件表达式的值为真时执行A,然后执行IF语句的下一语句;条件表达式的值为假时执行B,然后执行IF语
20、句的下一语句。【例例8】如下程序用于查询总学分40的学生人数。USEXSCJDECLAREnumintSELECTnum=(SELECTCOUNT(姓名姓名)FROMXSWHERE总学分总学分40)IFnum0SELECTnumAS总学分总学分40的人数的人数【例例9】如果“数据库原理课程”的平均成绩高于75分,则显示“平均成绩高于75分”。USEXSCJDECLAREtext1char(20)SETtext1=平均成绩高于平均成绩高于75.IF(SELECTAVG(成绩成绩)FROMXS_KC,KCWHEREXS_KC.课程号课程号=KC.课程号课程号ANDKC.课程名课程名=数据库原理数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 63 TSQL 语言 补充
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。