200 likes | 340 Views
第 24 讲. 第 8 章 T-SQL 语言 —— 流程控制语句. 主讲人:段利文. 复习 :. 使用批处理、脚本、注释 标识符 常量 书写格式取决于它所表示的值的数据类型。 变量 局部变量:用户自己定义的变量; 以 @ 符号开头; 先声明后使用 全局变量:系统定义的变量; 以 @ @ 符号开头; 用户不能修改其值。 T-SQL 系统内置函数 T-SQL 的运算符. 第 8 章 T-SQL 语言 —— 流程控制语句 教学内容. 基础知识: 流程控制语句概述 begin…end 语句 if…else 、 if exists 语句
E N D
第24讲 第8章 T-SQL语言—— 流程控制语句 主讲人:段利文
复习: • 使用批处理、脚本、注释 • 标识符 • 常量 • 书写格式取决于它所表示的值的数据类型。 • 变量 • 局部变量:用户自己定义的变量;以@符号开头;先声明后使用 • 全局变量:系统定义的变量;以@ @符号开头;用户不能修改其值。 • T-SQL系统内置函数 • T-SQL的运算符
第8章 T-SQL语言——流程控制语句教学内容 基础知识: • 流程控制语句概述 • begin…end语句 • if…else、if exists语句 • while、break和continue语句 • waitfor语句 • return 语句
第8章 T-SQL语言——流程控制语句学习目标 认知目标: • 了解T-SQL语言语句块、条件语句、循环语句的基本格式 能力目标: • 能运用各种流程控制语句正确编写SQL程序(重点、难点)
一、流程控制语句概述 • T-SQL语言与其它高级语言一样,提供了可以控制程序执行流程的语句。使用这些流程控制语句可以更好地组织和控制程序的流程。 • 类型 • 语句块:begin…end • 条件语句:if…else、if exists • 循环语句:while、break、continue • 等待语句:waitfor • 返回语句:return • 转移语句:goto(了解)
语句块的开始 语句块的结束 二、begin…end语句 • 语句格式: • begin { 语句 | 语句块 } end • 作用 • 可以将多条T-SQL语句封装起来,构成一个独立的语句块。 • Begin和end必须成对出现。
三、 if…else、if exists语句 • 语法格式: • if逻辑表达式 { 语句 | 语句块 } [ else { 语句 | 语句块 } ] • 作用: • 按条件控制程序的执行。 • 当条件满足时,则在执行条件之后的T-SQL 语句。否则,就执行else后的T-SQL语句(若ELSE部分存在)。 • if [not] exists(select语句) • { 语句 | 语句块 } • [ else • { 语句 | 语句块 } ]
求指定学号的平均成绩 从学生情况表中取姓名 三、 if…else语句 实例1:查询学号为“020101”的平均分是否超过了85分,若超过,则输出“XX考出了高分”的信息;否则输出“考的一般”。 • use xscj • declare @xm varchar(10) • if (selectavg(成绩) from xs_kc where学号= ‘020101’ ) > 85 begin select @xm= 姓名 from xsqk where学号= ‘020101’ print @xm + '考出了高分' end else print '考的一般'
测试“学生情况表”中是否有这个人 三、 if…else语句 课堂练习1:测试xscj库的xsqk表中是否有“田丽”这个人,若有则显示其信息,若无则显示“没有XX这个人!”。 • use xscj • declare @xm varchar(20) • select @xm = ‘田丽’ • if exists (select * from xsqk where姓名=@xm ) select * from xsqk where姓名=@xm else print ‘没有“ ’ + @xm + ’ ”这个人!'
四、while、break和continue语句 • 语法格式: • while逻辑表达式 { 语句 | 语句组 } [ break ] {语句 | 语句组 } [ continue ] • 说明: • Break用于退出最内层的while循环。 • Continue用于重新开始一次while循环。
四、while、break和continue语句 实例2:计算1到100中奇数的和,要求显示为“奇数和为:XX”。 • declare @i int, @sum int • select @i = 1, @sum = 0 • while @i < 100 begin set @sum = @sum + @i set @i = @i +2 end • print‘奇数和为:'+ cast(@i asvarchar(5))
四、while、break和continue语句 课堂练习2:计算500以内能被3或7整除的数。 • declare @i int • select @i = 1 • while @i < 500 begin if @i %3=0 or @i %7=0 print @i set @i = @i +1 end
五、waitfor语句 • 语法格式: • waitfordelay ‘时间’ | time ‘时间’ • 作用: • 指定其后的语句在某一时刻或在一段时间间隔后继续执行。 • 说明: • Delay:等待一个指定的时间间隔,最长24小时 • Time: 等待一个指定的时间点(即从某个时刻开始执行一个操作)。 • 时间:指定等待的时间。时间必须为datetime类型,不能包括日期。
五、waitfor语句 实例3:分析下列语句的功能。 • print ‘执行waitfor之前,秒数为: ’ +cast(datepart(ss,getdate())as varchar(5)) • waitfor delay '00:00:06‘ • print ‘执行waitfor之后,秒数为: ’ + cast(datepart(ss,getdate())as varchar(5))
五、waitfor语句 课堂练习4:延时6秒后查询xsqk的信息;到下午4点15分30秒查询xs_kc表。 • waitfordelay’00:00:06’ • use xscj • select * from xsqk • go • waitfor time’16:15:30’ • use xscj • select * from xs_kc
六、return语句 • 语法格式: • return [ 整型表达式 ] • 作用: • 无条件地从过程、批或语句块中退出,在return之后的其他语句不会被执行。 • 说明: • Return可以在过程、批和语句块中的任何位置使用。 • Return与break很相似,不同的是return可以返回一个整数。
六、return语句 实例4:分析下列语句的功能。 • use xscj • if not exists(select * from xsqk where姓名='田力') begin print‘没有找到!' return end • print‘已找到!' • return
本课小结 • 流程控制语句概述 • begin…end语句 • if…else、if exists语句 • while、break和continue语句 • waitfor语句 • return语句
课余作业 • 课外练习(补充): • Begin…end语句可以将多条T-SQL语句封装起来,构成一个独立的_______。 • Break用于退出______的while循环;Continue用于________while循环。 • Waitfor语句用于指定其后的语句在______或在______后继续执行。 • 编程计算在xsqk表中年龄大于21的学生人数,如果人数不为0,则输出相应人数,如果人数为0,则输出“没有年龄大于21的学生” 。 • 上机准备:流程控制语句练习。
第4题答案: • use xscj • go • declare @n int • select @n=count(*) from xsqk wheredatediff (yy, 出生日期, getdate() ) >21 • if @n>=0 print ‘年龄大于21的学生人数有:’ + cast( @n asvarchar(5) ) else print‘没有年龄大于21的学生’