《SQLServer数据库应用与维护》-第13讲 T-SQL语言及应用3_第1页
《SQLServer数据库应用与维护》-第13讲 T-SQL语言及应用3_第2页
《SQLServer数据库应用与维护》-第13讲 T-SQL语言及应用3_第3页
《SQLServer数据库应用与维护》-第13讲 T-SQL语言及应用3_第4页
《SQLServer数据库应用与维护》-第13讲 T-SQL语言及应用3_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上节内容回顾6.1T-SQL语法基础6.1.1标识符6.1.2常量6.1.3变量6.1.4运算符6.1.5表达式6.1.6注释符6.2流程控制语句6.2.1IF…ELSE语句6.2.2CASE语句6.2.3GOTO语句6.2.4WHILE语句6.2.5BREAK6.2.6BEGIN…END语句…….上节内容提问1、常见的运算符有哪些,它们的优先级是?2、我们上次课讲了哪两种常见的表达式?3、注释符包括哪两种,有何区别,如何表示?4、上次课我们介绍了选择语句是?如何表示?6.1.4

运算符在MicrosoftSQLServer系统中,可以使用的运算符包括算术运算符、逻辑运算符、赋值运算符、字符串串联运算符、按位运算符、一元运算符、比较运算符等。6.1.4

运算符运算符优先级级别运算符1~(位非)2*(乘)、/(除)、%(取模)3+(正)、-(负)、+(加)、+(连接)、-(减)、&(位与)4=、>、<、>=、<=、<>、!=、!>、!<(比较运算符)5^(位异或)、|(位或)6NOT7AND8ALL、ANY、BETWEEN、IN、LIKE、OR、SOME9=(赋值)6.1.5

表达式表达式是标识符、值和运算符的组合,它可以是常量、函数、列名、变量、子查询等实体,也可以用运算符对这些实体进行组合而成。1、简单表达式2、复杂表达式6.1.6

注释符1、单行注释:“--”(双连字符)。USE

company

--单行注释GO

2、多行注释:“/*...*/”(正斜线-星号字符对)。SELECT

*

FROM

Employees

/*这是注释*/

注:完整的注释必须包含在一个批处理中。6.2

流程控制语句序号控制语句说明1IF...ELSE条件选择语句2CASE多分支选择语句3GOTO无条件转移语句4WHILE循环语句5RETURN无条件返回6BEGIN…END定义语句块7BREAK用于退出最内层的循环8CONTINUE用于重新开始下一次循环9WAITFOR设置语句执行的延迟时间跟流程控制语句相关的语句如下所示,本章节将分别进行介绍。

第六章T-SQL语言基础及应用第六章T-SQL语言基础及应用目的与要求:掌握T-SQL的语法基础,包括变量、运算符、函数、流程控制语句和注解等语言元素。掌握数据库的并法控制:事务、锁。重点与难点:常量与变量(重点)运算符与表达式(重点)程序流程控制语句(重难点)函数(难点)事务、锁(难点)第13讲T-SQL语言基础及应用36.2流程控制语句6.2.1IF…ELSE语句6.2.2CASE语句6.2.3GOTO语句6.2.4WHILE语句6.2.5表达式6.2.6BEGIN…END语句…….6.2流程控制语句6.2

流程控制语句T-SQL中流程是指那些用来控制程序执行和流程分支的语句。使用T-SQL语言编程的时候,常常要利控制语句用各种流程控制语句进行顺序、分支控制转移、循环等操作。T-SQL提供了一组流程控制语句,包括条件控制语句、无条件控制语句、循环语句和返回状态值给调用例程的语句。6.2

流程控制语句顺序执行程序控制语句顺序执行流程改变程序6.2

流程控制语句序号控制语句说明1IF...ELSE条件选择语句2CASE多分支选择语句3GOTO无条件转移语句4WHILE循环语句5RETURN无条件返回6BEGIN…END定义语句块7BREAK用于退出最内层的循环8CONTINUE用于重新开始下一次循环9WAITFOR设置语句执行的延迟时间跟流程控制语句相关的语句如下所示,本章节将分别进行介绍。6.2.2CASE语句6.2.2CASE语句CASE语句用于实现选择结构,与IF…ELSE语句相比,它能更方便地实现多重选择的情况,从而避免多重的IF…ELSE语句的嵌套,使得程序的结构更加简练、清晰。CASE语句计算条件列表并返回多个可能结果表达式之一,其语法格式有两种,简单CASE语句和搜索CASE语句。1、简单CASE语句2、搜索CASE语句6.2.2CASE语句1、简单CASE语句简单CASE语句的语法格式为:1、首先计算CASE后面的表达式,然后按指定顺序与每个WHEN子句后的表达式进行比较。2、如果相等,则执行对应的WHEN后的结果表达式,并退出CASE结构。3、若CASE后的表达式与所有WHEN后的表达式均不相等,则执行ELSE后的结果表达式。4、若CASE后的表达式值与所有WHEN后的表达式均不相等,且ELSE结果表达式被忽略,则返回NULL值。CASE

表达式

WHEN

表达式

THEN

结果表达式

……[ELSE

结果表达式]END6.2.2CASE语句1、简单CASE语句【例1】简单的CASE语句的使用。DECLARE

@var1

VARCHAR(1)SET

@var1='B'DECLARE

@var2

VARCHAR(10)SET

@var2=CASE

@var1

WHEN

'R'

THEN

'红色'

WHEN

'B'

THEN

'蓝色'

WHEN

'G'

THEN

'绿色'ELSE

'错误'ENDPRINT

@var2DECLARE

@var1

VARCHAR(1)SET

@var1='B'DECLARE

@var2

VARCHAR(10)SET

@var2='蓝色'PRINT

@var26.2.2CASE语句2、搜索CASE语句搜索CASE语句的语法格式为:CASE

WHEN

条件表达式

THEN

结果表达式

……ELSE

结果表达式

END1、首先测试WHEN后的条件表达式,若为真,则执行THEN后的结果表达式,否则执行下一个WHEN后的条件表达式的测试。2、若所有WHEN后的条件表达式都为假,则执行ELSE后的结果表达式。3、若所有WHEN后的条件表达式都为假,且ELSE结果表达式被忽略,则返回NULL值。6.2.2CASE语句2、搜索CASE语句【例2】根据学生考试成绩输出等级DECLARE

@score

TINYINT

SET

@score=82PRINT

CASE

WHEN

@score>=90THEN

'该学生考试成绩优秀'

WHEN

@score>=80THEN

'该学生考试成绩良好'

WHEN

@score>=70THEN

'该学生考试成绩一般'

WHEN

@score>=60THEN

'该学生考试成绩及格'

ELSE

'该学生考试成绩不及格'

END6.2.2CASE语句2、搜索CASE语句【例3】搜索类型的CASE语句DECLARE

@chengji

FLOAT,@pingyu

VARCHAR(40)SET

@chengji=80SET

@pingyu=CASE

WHEN

@chengji>100OR

@chengji<0THEN

'您输入的成绩超出~的范围'

WHEN

@chengji>=60AND

@chengji<70THEN

'及格'

WHEN

@chengji>=70AND

@chengji<85THEN

'良好'

WHEN

@chengji>=85AND

@chengji<=100THEN

'优秀'

ELSE

'不及格'ENDPRINT

'该生的成绩评语是:'+@pingyu6.2.2CASE语句2、搜索CASE语句【例3】搜索类型的CASE语句DECLARE

@chengji

FLOAT,@pingyu

VARCHAR(40)SET

@chengji=80SET

@pingyu=CASE

WHEN

@chengji>100OR

@chengji<0THEN

'您输入的成绩超出~的范围'

WHEN

@chengji>=85THEN

'优秀'

WHEN

@chengji>=70THEN

'良好'

WHEN

@chengji>=60THEN

'及格'

ELSE

'不及格'ENDPRINT

'该生的成绩评语是:'+@pingyu6.2.2CASE语句2、搜索CASE语句【例4】搜索物料表中各个物料的类别,规定:物料类别为1为办公用品,2为电脑配件,3为家具。declare

@wlmc

nvarchar(50),@wllb

int,@lbmc

char(10)set

@wlmc='显示器'select

@wllb=物料类别

from

物料

where

物料名称=@wlmcset

@lbmc=case

when

@wllb=1then

'办公用品'when

@wllb=2then

'电脑配件'when

@wllb=3then

'家具'endselect

@wlmc

as

物料名称,@lbmc

as

类别6.2.2CASE语句2、搜索CASE语句【例4】搜索物料表中各个物料的类别,规定:物料类别为1为办公用品,2为电脑配件,3为家具。select

物料名称,'类别名称'=(case

物料类别

when1then

'办公用品'

when2then

'电脑配件'

when3then

'家具'end)from

物料上机实验任务一实验6-2第一题:【CASE语句练习】15分钟6.2.3GOTO语句6.2.3GOTO语句GOTO语句是无条件转移语句,用来改变程序的执行流程。GOTO

标签

……标签:GOTO语句将执行语句无条件跳转到标签处,并从标签位置继续执行,GOTO语句和标签可以在过程、批处理或语句块中的任何位置使用。GOTO语句增加了程序设计的灵活性,但同时破坏了程序结构化的特点,增加了程序测试与维护的难度。6.2.3GOTO语句例1:计算1-100之间所有的偶数之和。DECLARE

@sum

INT,@i

INT

SET

@i=0SET

@sum=0label_1:SET

@i=@i+2SET

@sum=@sum+@iIF

@i<100GOTO

label_1PRINT

'1-100之间所有的偶数之和为:'+ltrim(str(@sum))6.2.3GOTO语句例2:利用GOTO语句计算1~100之间所有数的和。declare

@sum

int,@x

intset

@sum=0set

@x=0lable_2:set

@x=@x+1set

@sum=@sum+@xif

@x<100goto

lable_2print

'1-100所有的数和是:'+

ltrim(str(@sum))上机实验任务二实验6-2第二题:【GOTO语句练习】10分钟6.2.4WHILE语句6.2.4WHILE语句WHILE语句用于实现循环结构,其功能是在满足条件的情况下会重复执行T-SQL语句或语句块。WHILE语句的语法格式为:WHILE

逻辑表达式Begin

T-SQL语句组[break]

/*终止整个语句的执行*/[continue]

/*结束一次循环体的执行*/End当WHILE后面的条件为真时,重复执行BEGIN…END之间的语句块。通常将CONTINUE或BREAK语句和WHILE语句配合使用。6.2.4WHILE语句【简单示例】简单的while循环示例DECLARE

@X

intSET

@X=0WHILE

@X

<3

BEGIN

SET

@X=@X+1

PRINT

'X='+convert(char(1),@X)

--类型转换函数convert

PRINT

'X='+ltrim(str(@X))

--这种用法跟上面一样

ENDGO6.2.4WHILE语句例1:计算1~100之间所有的奇数之和。DECLARE

@sum

INT,

@i

INTSET

@i=1SET

@sum=0WHILE

@i<=100

BEGIN

SET

@sum=@sum+@i

SET

@i=@i+2

ENDPRINT

'1-100之间所有的奇数之和为:'

+

ltrim(str(@sum))6.2.4WHILE语句例2:计算2的8次方。DECLARE

@value

INT,@i

INTSET

@i=8SET

@value

=1WHILE1=1

BEGIN

SET

@value

=@value

*2

SET

@i=@i-1

IF

@i<=0

BREAK

ELSE

CONTINUE

ENDPRINT

'2的8次方为:'

+

ltrim(STR(@value))6.2.4WHILE语句例3:利用WHILE语句计算0~100之间所有数的和。declare

@sum

int,@i

intset

@sum=0set

@i=0while

@i<100beginset

@i=@i+1set

@sum=@sum+@iendprint

'0-100所有数的和是:'+

ltrim(str(@sum))上机实验任务二实验6-2第三题:【WHILE语句练习】20分钟6.2.5BREAK语句6.2.5BREAK语句BREAK语句一般都出现在WHILE语句的循环体内,作为WHILE语句的子句。在循环体内使用BREAK语句,会使进程提前跳出循环。例1:求1~100之间的所有数之和,但是如果和大于1000,立刻跳出循环,输出结果。DECLARE

@x

int,@sum

intSET

@x

=0SET

@sum

=0WHILE

@x

<100BEGINSET

@x

=

@x

+1SET

@sum

=

@sum

+

@xif

@sum

>1000BREAKENDPRINT

'结果是:'

+

LTRIM(STR(@sum))6.2.6CONTINUE语句6.2.6CONTINUE语句CONTINUE和BREAK语句一样,一般都出现在WHILE语句的循环体内,作为WHILE语句的子句。在循环体内使用CONTINUE语句,结束本次循环,重新转到下一次循环。例1:计算1~100所有偶数之和,并输出结果。DECLARE

@x

int,@sum

intSET

@x

=0SET

@sum

=0WHILE

@x

<100BEGINSET

@x=@x

+1if

@x%2=1CONTINUESET

@sum=@sum+@xENDPRINT

'1~100所有偶数之和是:'+LTRIM(STR(@sum))6.2.7WAITFOR语句6.2.7WAITFOR语句WAITFOR语句,称为延迟语句,设定在达到指定时间或时间间隔之前,或者指定语句至少修改或返回一行之前,阻止执行批处理、存储过程或事务。其语法格式为:WAITFOR

{DELAY'time_to_pass'/*设定等待时间*/|TIME‘time_to_execute’/*设定等待到某一时刻*/}6.2.7WAITFOR语句例1:WAITFOR语句的使用。WAITFOR

DELAY

'0:0:10'

--等待10秒WAITFOR

TIME

'12:00:00'

--等到12点例2:等待5秒钟,再显示供应商表的记录WAITFOR

DELAY

'00:00:05'SELECT

*

FROM

供应商6.2.7WAITFOR语句例3:上午11时,显示供应商表的记录。WAITFOR

TIME

'11:00:00'SELECT

*

FROM

供应商6.2.8RETURN语句6.2.8RETURN语句RETURN语句用来从批处理、查询或存储过程中无条件退出。RETURN语句的执行是即时且完全的,可在任何时候用于从过程、批处理或语句块中退出。位于RETURN语句之后的语句将不会被执行。RETURN语句用于结束当前程序的执行,返回到上一个调用它的程序或其他程序。其语法格式为:RETURN[integer_expression]说明:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论