1 / 20

第 8 章 T-SQL 语言 —— 流程控制语句

第 24 讲. 第 8 章 T-SQL 语言 —— 流程控制语句. 主讲人:段利文. 复习 :. 使用批处理、脚本、注释 标识符 常量 书写格式取决于它所表示的值的数据类型。 变量 局部变量:用户自己定义的变量; 以 @ 符号开头; 先声明后使用 全局变量:系统定义的变量; 以 @ @ 符号开头; 用户不能修改其值。 T-SQL 系统内置函数 T-SQL 的运算符. 第 8 章 T-SQL 语言 —— 流程控制语句 教学内容. 基础知识: 流程控制语句概述 begin…end 语句 if…else 、 if exists 语句

carney
Download Presentation

第 8 章 T-SQL 语言 —— 流程控制语句

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第24讲 第8章 T-SQL语言—— 流程控制语句 主讲人:段利文

  2. 复习: • 使用批处理、脚本、注释 • 标识符 • 常量 • 书写格式取决于它所表示的值的数据类型。 • 变量 • 局部变量:用户自己定义的变量;以@符号开头;先声明后使用 • 全局变量:系统定义的变量;以@ @符号开头;用户不能修改其值。 • T-SQL系统内置函数 • T-SQL的运算符

  3. 第8章 T-SQL语言——流程控制语句教学内容 基础知识: • 流程控制语句概述 • begin…end语句 • if…else、if exists语句 • while、break和continue语句 • waitfor语句 • return 语句

  4. 第8章 T-SQL语言——流程控制语句学习目标 认知目标: • 了解T-SQL语言语句块、条件语句、循环语句的基本格式 能力目标: • 能运用各种流程控制语句正确编写SQL程序(重点、难点)

  5. 一、流程控制语句概述 • T-SQL语言与其它高级语言一样,提供了可以控制程序执行流程的语句。使用这些流程控制语句可以更好地组织和控制程序的流程。 • 类型 • 语句块:begin…end • 条件语句:if…else、if exists • 循环语句:while、break、continue • 等待语句:waitfor • 返回语句:return • 转移语句:goto(了解)

  6. 语句块的开始 语句块的结束 二、begin…end语句 • 语句格式: • begin { 语句 | 语句块 } end • 作用 • 可以将多条T-SQL语句封装起来,构成一个独立的语句块。 • Begin和end必须成对出现。

  7. 三、 if…else、if exists语句 • 语法格式: • if逻辑表达式 { 语句 | 语句块 } [ else { 语句 | 语句块 } ] • 作用: • 按条件控制程序的执行。 • 当条件满足时,则在执行条件之后的T-SQL 语句。否则,就执行else后的T-SQL语句(若ELSE部分存在)。 • if [not] exists(select语句) • { 语句 | 语句块 } • [ else • { 语句 | 语句块 } ]

  8. 求指定学号的平均成绩 从学生情况表中取姓名 三、 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 '考的一般'

  9. 测试“学生情况表”中是否有这个人 三、 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 + ’ ”这个人!'

  10. 四、while、break和continue语句 • 语法格式: • while逻辑表达式 { 语句 | 语句组 } [ break ] {语句 | 语句组 } [ continue ] • 说明: • Break用于退出最内层的while循环。 • Continue用于重新开始一次while循环。

  11. 四、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))

  12. 四、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

  13. 五、waitfor语句 • 语法格式: • waitfordelay ‘时间’ | time ‘时间’ • 作用: • 指定其后的语句在某一时刻或在一段时间间隔后继续执行。 • 说明: • Delay:等待一个指定的时间间隔,最长24小时 • Time: 等待一个指定的时间点(即从某个时刻开始执行一个操作)。 • 时间:指定等待的时间。时间必须为datetime类型,不能包括日期。

  14. 五、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))

  15. 五、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

  16. 六、return语句 • 语法格式: • return [ 整型表达式 ] • 作用: • 无条件地从过程、批或语句块中退出,在return之后的其他语句不会被执行。 • 说明: • Return可以在过程、批和语句块中的任何位置使用。 • Return与break很相似,不同的是return可以返回一个整数。

  17. 六、return语句 实例4:分析下列语句的功能。 • use xscj • if not exists(select * from xsqk where姓名='田力') begin print‘没有找到!' return end • print‘已找到!' • return

  18. 本课小结 • 流程控制语句概述 • begin…end语句 • if…else、if exists语句 • while、break和continue语句 • waitfor语句 • return语句

  19. 课余作业 • 课外练习(补充): • Begin…end语句可以将多条T-SQL语句封装起来,构成一个独立的_______。 • Break用于退出______的while循环;Continue用于________while循环。 • Waitfor语句用于指定其后的语句在______或在______后继续执行。 • 编程计算在xsqk表中年龄大于21的学生人数,如果人数不为0,则输出相应人数,如果人数为0,则输出“没有年龄大于21的学生” 。 • 上机准备:流程控制语句练习。

  20. 第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的学生’

More Related