《第4章 T-SQL编程.ppt》由会员分享,可在线阅读,更多相关《第4章 T-SQL编程.ppt(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第4章T-SQL编程T-SQL编程Transact-SQL编程概述oTransactSQL是结构化查询语言(SQL)的增强版本,且只能在SQLSERVER上使用。它是用来让应用程式与SQLServer沟通的主要语言。T-SQL提供标准SQL的DDL和DML功能,加上延伸的函数、系统预存程序以及程式设计结构(例如IF和WHILE)让程式设计更有弹性。T-SQL的功能随著新版的SQLServer而持续成长。目标o变量o注释符与运算符o常用命令o流程控制oT-SQL编程示例变量o数据在内存中存储可以变化的量叫变量。oTransact-SQL可以使用两种变量:n局部变量n全局变量局部变量o局部变量是用
2、户可自定义的变量,它的作用范围仅在程序内部。o声明局部变量DECLARE局部变量名数据类型,ndeclarexinto为局部变量赋值setx=500selectx=max(score)fromscore全局变量o全局变量是SQLServer系统内部事先定义好的变量,不用用户参与定义,对用户而言,其作用范围并不局限于某一程序,而是任何程序均可随时调用。o全局变量通常用于存储一些SQLServer的配置设定值和效能统计数据。o全局变量的名称都是以开头的。常用的全局全量olanguage当前使用的语言的名称oIDENTITY返回最后插入的标识值oROWCOUNT返回受上一语句影响的行数oVERSIO
3、N返回SQLServer当前安装的日期、版本和处理器类型注释符与运算符o注释符n单行注释:-n多行注释:/*/o运算符n算术运算符:+-*/%n赋值运算符:=n比较运算符:=n逻辑运算符:ALLANDANYBETWEENEXISTSINLIKENOTOR常用命令oPRINTn将用户定义的消息返回客户端oUSEn将数据库上下文更改为指定数据库oGOn用信号通知SQLServer一批T-SQL语句的结束PRINT命令PRINT:命令用于在指定设备上显示信息。可以输出的数据类型只有:char、nchar、varchar、nvarchar以及全局变量VERSION等。PRINT命令的语句如下:PRIN
4、TanyASCIItext|local_variable|FUNCTION|string_expr说明:anyASCIItext:文本或字符串。local_variable:字符类型的局部变量。FUNCTION:返回字符串结果的函数。string_expr:字符串表达式,最长为8000个字符。批o一个批是由一条或多条T-SQL语句组成的语句集,这些语句一起提交并作为一个组来执行。SQLServer将批中的语句作为一个整体编译为一个执行计划。因为批中的语句是一起提交给服务器的,所以可以节省系统开销。o在查询分析器中,可以用GO命令标志一个批的结束。GO不是一个执行语句,是通知查询分析器有多少语句
5、要包含在当前的批中。查询分析器将两个GO之间的语句组成一个字符串交给服务器去执行。o注意:如果在一个批处理中,某条语句存在语法错误,SQL Server将不执行批处理中的任何语句。流程控制o流程控制语句是用来控制程序执行流程的语句。使用流程控制语句可以提高编程语言的处理能力。与程序设计语言(如C语言)一样,Transact-SQL语言提供的流程控制语句如下表所示:BEGINENDIFELSECASEWHILECONTINUEBREAKRETURNGOTOWAITFORBEGINENDo包括一系列的Transact-SQL语句,使得可以执行一组Transact-SQL语句。o语法:语法:BEGI
6、Nsql_statementENDo参数:参数:sql_statementn是任何有效的Transact-SQL语句或以语句块定义的语句分组。BEGIN.END嵌套使用oBEGIN.END语句可以嵌套使用。o例如:BEGINDECLAREMyVarfloatSETMyVar=456.256;BEGINPRINT变量MyVar的值为:;PRINTCAST(MyVarASvarchar(12);END;END;IFELSEo在执行Transact-SQL语句时强加条件。如果条件满足(布尔表达式返回TRUE时),则在IF关键字及其条件之后执行Transact-SQL语句。可选的ELSE关键字引入备用
7、的Transact-SQL语句,当不满足IF条件时(布尔表达式返回FALSE),就执行这个语句。o语法:语法:IFBoolean_expressionsql_statementELSEsql_statemento参数:参数:Boolean_expression:n是返回TRUE 或FALSE的表达式。sql_statement:n是任何有效的Transact-SQL语句或以语句块定义的语句分组。例如:IFexists(SELECT*FROM成绩表WHERE学期=10)SELECT*FROM成绩表WHERE成绩编号=10ELSEPRINT没有这条记录CASEo计算条件列表并返回多个可能结果表达式
8、之一。o语法:语法:CASEinput_expressionWHENwhen_expression THENresult_expression.n ELSEelse_result_expression END例如:SELECT成绩编号,学号,课程代号,成绩状况=CASEWHEN课程成绩90THEN优秀!WHEN课程成绩80THEN良!WHEN课程成绩70THEN一般!WHEN课程成绩60THEN及格!ELSE不及格!ENDFROM成绩表“成绩状况”不是表中的字段WHILECONTINUEBREAKo设置重复执行SQL语句或语句块的条件。只要指定的条件为真,就重复执行语句。可以使用BREAK和C
9、ONTINUE关键字在循环内部控制WHILE循环中语句的执行。o语法:语法:WHILEBoolean_expressionsql_statementBREAKCONTINUEo例如:DECLARExintSETx=0WHILEx3BEGINSETx=x+1PRINTx=+CONVERT(char(1),x)ENDRETURNo从查询或过程中无条件退出。RETURN即时且完全,可在任何时候用于从过程、批处理或语句块中退出。不执行位于RETURN之后的语句。o语法:语法:RETURNinteger_expression o参数:参数:integer_expressionn是返回的整型值。WAITF
10、ORo指定触发语句块、存储过程或事务执行的时间、时间间隔或事件。o语法:语法:WAITFORDELAYtime|TIMEtime o参数参数DELAYn指示SQLServer一直等到指定的时间过去,最长可达24小时。TIMEn指示SQLServer等待到指定时间。例如:o延迟30秒钟执行查询命令。WAITFORDELAY00:00:30SELECT*FROM成绩表o在时刻21:20:00时执行查询命令。WAITFORTIME21:20:00SELECT*FROM成绩表总结o变量o注释符与运算符o常用命令o流程控制oT-SQL编程示例上机作业:T-SQL编程示例将课件上的所有SQL代码练习一遍1
11、、输出所有学生的最高分和最低分2、学生表中的路人甲是否是润年出生的3、计算1至100之间的和4、显示王五的Java成绩是否及格5、30秒后显示学生表的信息家庭作业:o涉及到的表如下:创建学生信息表,包含有:学号、姓名、性别、年龄和民族等字段;创建学生成绩表,包含有学号和成绩两个字段完成以下练习:1、打印出学号为S02的学生的年龄(要求以变量的形式输出)2、查询所有年龄大于S03的学生信息3、打印出stuInfo表中学生的平均年龄,如果平均年龄大于22,则输出OK,否则输出NO4、循环增加学生信息表中每个人的年龄,直到每个人的年龄都大于等于25为止下面是上机作业的参考代码1、输出所有学生的最高分
12、和最低分declaremaxreal,minrealselectmax=max(score)fromscoreselectmin=min(score)fromscoreprint最高分是+ltrim(str(max)print最低分是+ltrim(str(min)2、学生表中的路人甲是否是润年出生declareyearintselectyear=year(birthday)fromstudentwherename=路人甲if(year%4=0andyear%100!=0oryear%400=0)print路人甲是润年出生的elseprint路人甲不是润年出生的3、计算1至100之间的和declareiint,sumintseti=1setsum=0while(i=60)print王五的成绩是+ltrim(str(score)+,及格了elseprint王五的成绩是+ltrim(str(score)+,不及格5、30秒后显示学生表的信息waitfordelay00:00:30select*fromstudent