《sql server数据库应用与实践教程》课件第6章-表达式与流程控制.ppt

上传人(卖家):momomo 文档编号:5818757 上传时间:2023-05-11 格式:PPT 页数:40 大小:444.50KB
下载 相关 举报
《sql server数据库应用与实践教程》课件第6章-表达式与流程控制.ppt_第1页
第1页 / 共40页
《sql server数据库应用与实践教程》课件第6章-表达式与流程控制.ppt_第2页
第2页 / 共40页
《sql server数据库应用与实践教程》课件第6章-表达式与流程控制.ppt_第3页
第3页 / 共40页
《sql server数据库应用与实践教程》课件第6章-表达式与流程控制.ppt_第4页
第4页 / 共40页
《sql server数据库应用与实践教程》课件第6章-表达式与流程控制.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

1、第六章第六章表达式与流程控制表达式与流程控制常量、变量及表达式常量、变量及表达式流程控制语句及注释语句流程控制语句及注释语句常量也称为标量值,是表示一个特定数据值的符号。常量的格常量也称为标量值,是表示一个特定数据值的符号。常量的格式取决于它所表示的值的数据类型。式取决于它所表示的值的数据类型。1.字符串常量字符串常量 字符串常量用单引号括起来。如果要在字符串中包含单字符串常量用单引号括起来。如果要在字符串中包含单引号,则可以使用连续的两个单引号来表示。例如:引号,则可以使用连续的两个单引号来表示。例如:Chinese2.二进制常量二进制常量 二进制常量使用二进制常量使用0 x作为前辍,后面跟

2、随十六进制数字字作为前辍,后面跟随十六进制数字字符串。例如:符串。例如:0 xAE3.bit常量常量 bit常量使用常量使用False或或True表示表示。4.datetime常量常量 datetime常量使用单引号括起来的特定格式的字符日期值表常量使用单引号括起来的特定格式的字符日期值表示。例如:示。例如:2011-09-16 14:30:245.整型常量整型常量 由正、负号和数字由正、负号和数字09组成,正号可以省略。组成,正号可以省略。例如例如:1894 2 +145345234 -21474836486.decimal常量常量 由正、负号、小数点、数字由正、负号、小数点、数字09组成,

3、正号可以省略。组成,正号可以省略。例如:例如:1894.1204 2.0 7.float和和real常量常量 使用科学记数法表示。使用科学记数法表示。例如:例如:101.5E5 0.5E-2 +123E-3 -12E58.money常量常量 以可选小数点和可选货币符号作为前缀的一串数字。可以带正、负号。以可选小数点和可选货币符号作为前缀的一串数字。可以带正、负号。例如:例如:$12$542023.14 -$45.56 +$423456.99 变量是可以保存特定类型的单个数据值的对象,变量是可以保存特定类型的单个数据值的对象,SQL Server的变量分为两种:用户自己定义的局部变量和系统提供的

4、全局变量。的变量分为两种:用户自己定义的局部变量和系统提供的全局变量。局部变量的作用范围仅限制在程序的内部。常用来保存临时数局部变量的作用范围仅限制在程序的内部。常用来保存临时数据。据。局部变量的定义:局部变量的定义:DECLARE 局部变量名局部变量名 数据类型数据类型,n注:注:局部变量名局部变量名:必须以必须以开头,符合标识符的命名规则开头,符合标识符的命名规则 数据类型数据类型:系统定义的数据类型系统定义的数据类型;用户定义数据类型。用户定义数据类型。不能是不能是text、ntext或或image数据类型数据类型。局部变量定义后初始值为局部变量定义后初始值为NULL。【例例】定义变量定

5、义变量MyCounter为为int类型:类型:DECLARE MyCounter int【例例】定义变量定义变量LastName为为nvarchar(30)类型,定义变量类型,定义变量FirstName为为nvarchar(20)类型,定义变量类型,定义变量State为为nchar(2)类型:类型:DECLARE LastName nvarchar(30),FirstName nvarchar(20),State nchar(2)【例例4-5】执行下列语句将产生语法错误,因为在一个批处理中所引执行下列语句将产生语法错误,因为在一个批处理中所引用的变量是在另一个批处理中定义的。用的变量是在另一个

6、批处理中定义的。DECLARE MyVariable int SET MyVariable=1 GO -结束当前批结束当前批 SELECT*FROM Employees WHERE EmployeeID=MyVariable2.局部变量的赋值局部变量的赋值(1)用)用SET语句给局部变量赋值语句给局部变量赋值 格式格式:SET 局部变量名局部变量名=表达式表达式【例】定义局部变量【例】定义局部变量myvar,并为其赋值,最后显示,并为其赋值,最后显示myvar的值。的值。DECLARE myvar char(20)SET myvar=This is a test -用用SET赋值赋值 PRIN

7、T myvar -用用PRINT语句显示语句显示(2)用)用SELECT语句给局部变量赋值:语句给局部变量赋值:格式格式:SELECT 局部变量名局部变量名=表达式表达式,n【例】定义局部变量【例】定义局部变量myvar1和和myvar2,并为它们赋值,最后显,并为它们赋值,最后显示示myvar1和和myvar2的值的值:DECLARE myvar1 char(20),myvar2 char(20)SELECT myvar1=Hello!,myvar2=How are you!-用用SELECT赋值赋值 SELECT myvar1,myvar2 -用用SELECT显示显示 全局变量是全局变量是

8、SQL Server系统内部使用的变量,全局变量具有以下系统内部使用的变量,全局变量具有以下特点:特点:n全局变量全局变量不是由用户的程序定义不是由用户的程序定义的,它们是的,它们是SQL Server系统在系统在服务器级定义的。服务器级定义的。n引用全局变量时,必须以标记符引用全局变量时,必须以标记符“”开头。开头。n用户可以在程序中用全局变量来测试系统的设定值或者是用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值。命令执行后的状态值。例如例如:VERSION用于返回用于返回SQL Server当前安装的日期、版本和处当前安装的日期、版本和处理器类

9、型;理器类型;CONNECTIONS用于返回自上次启动用于返回自上次启动SQL Server以来以来连接或试图连接的次数;连接或试图连接的次数;LANGUAGE用于返回当前使用的语言用于返回当前使用的语言名名。SQL Server运算符有以下几类:运算符有以下几类:n 算术运算符算术运算符n 字符串串联运算符字符串串联运算符n 赋值运算符赋值运算符n 比较运算符比较运算符n 逻辑运算符逻辑运算符n 位运算符位运算符n 一元运算符一元运算符算术运算符包括算术运算符包括:+、*、/、%(取模)(取模)%:用于返回一个整数除以另一个整数的余数。用于返回一个整数除以另一个整数的余数。例如例如:12%5

10、=2由算术运算符组成的表达式称为算术表达式。由算术运算符组成的表达式称为算术表达式。字符串串联运算符字符串串联运算符:+作用作用:将两个字符串串联起来,构成字符串表达式。将两个字符串串联起来,构成字符串表达式。例如例如:abc+def 结果为结果为 abcdef 123+456 结果为结果为 123456赋值运算符赋值运算符:=例如例如:DECLARE MyCounter int SET MyCounter=1比较运算符比较运算符:=!=!作用作用:比较两个表达式的大小。比较两个表达式的大小。比较结果比较结果:布尔值布尔值TRUE、FALSE、UNKNOWNn TRUE:表示表达式的结果为真表

11、示表达式的结果为真n FALSE:表示表达式的结果为假表示表达式的结果为假n UNKNOWN:当当SET ANSI_NULLS为为ON时,带有一个或两个时,带有一个或两个NULL表达表达式的比较运算返回式的比较运算返回UNKNOWN。当当SET ANSI_NULLS为为OFF时,上述规则同样适用,但当时,上述规则同样适用,但当两个表达式都为两个表达式都为NULL时,返回结果为时,返回结果为TRUE。例如,。例如,NULL=NULL返回返回TRUE。逻辑运算符逻辑运算符:NOT AND OR作用:作用:对具有布尔值的表达式进行运算。对具有布尔值的表达式进行运算。运算结果运算结果:TRUE、FAL

12、SE。n NOT:一元运算符,对布尔表达式的值取反一元运算符,对布尔表达式的值取反n AND:只有两个布尔表达式的值都为只有两个布尔表达式的值都为TRUE,运算结果才为,运算结果才为TRUE,否则结果为,否则结果为FALSE。n OR:如果两个布尔表达式中的一个为如果两个布尔表达式中的一个为TRUE,那么运算结果,那么运算结果为为TRUE。只有两个布尔表达式都为。只有两个布尔表达式都为FALSE,运算结果才为,运算结果才为FALSE。例例:NOT(3 8)结果为结果为TRUE (3 8)AND(5 8)Or(5 6)结果为结果为TRUE流程控制语句用于控制流程控制语句用于控制Transact-

13、SQL语句、语句块和存储过程的执行语句、语句块和存储过程的执行流程。这些语句可用于流程。这些语句可用于Transact-SQL语句、批处理和存储过程中。如语句、批处理和存储过程中。如果不使用流程控制语句,则各果不使用流程控制语句,则各Transact-SQL语句按其出现的先后顺序语句按其出现的先后顺序执行。使用流程控制语句可以按需要控制语句的执行次序和执行分支。执行。使用流程控制语句可以按需要控制语句的执行次序和执行分支。BEGINEND语句用于将多个语句用于将多个Transact-SQL语句定义成一个语句块。语句定义成一个语句块。语句块可以在程序中视为一个单元处理。语句块可以在程序中视为一个

14、单元处理。BEGINEND语句的语法如语句的语法如下:下:BEGIN sql语句语句|语句块语句块 END 其中,其中,sql语句为一条语句为一条Transact-SQL语句;语句块为用语句;语句块为用BEGIN和和END定义的语句块。可以看出,在一个语句块中可以包含另一个语句块。定义的语句块。可以看出,在一个语句块中可以包含另一个语句块。IFELSE语句的语法如下:语句的语法如下:IF 布尔表达式布尔表达式 sql语句语句1|语句块语句块1 ELSE sql语句语句2|语句块语句块2 n 布尔表达式布尔表达式:返回返回TRUE或或FALSE的表达式;的表达式;n sql语句语句:一条一条Tr

15、ansact-SQL语句;语句;n 语句块语句块:用用BEGIN和和END定义的语句组。定义的语句组。功能功能:当布尔表达式的值为当布尔表达式的值为TRUE时,执行时,执行sql语句语句1或语句块或语句块1;当布尔;当布尔表达式的值为表达式的值为FALSE时,执行时,执行sql语句语句2或语句块或语句块2。如果省略。如果省略ELSE部分,部分,则表示当布尔表达式的值为则表示当布尔表达式的值为FALSE时不执行任何操作。时不执行任何操作。【例例】设有一个设有一个“学生信息学生信息”数据库,数据库中有一个数据库,数据库中有一个“Student”表,该表表,该表包含包含StuID、StuName、S

16、tuBirthDate等列。要给本月出生的学生举办庆祝生等列。要给本月出生的学生举办庆祝生日会,每月日会,每月1日选出要过生日的学生名单。日选出要过生日的学生名单。解决方案:解决方案:DECLARE Today int SET Today=DAY(GETDATE()IF(Today=1)BEGIN SELECT StuID,StuName FROM Student WHERE MONTH(StuBirthDate)=MONTH(GETDATE()ENDCASE函数可以计算多个条件式,并返回其中一个符合条件的结果表达函数可以计算多个条件式,并返回其中一个符合条件的结果表达式。按照使用形式的不同,

17、可以分为简单式。按照使用形式的不同,可以分为简单CASE函数和函数和CASE搜索函数:搜索函数:n 简单简单CASE函数将某个表达式与一组简单表达式进行比较以确定返回函数将某个表达式与一组简单表达式进行比较以确定返回的结果。的结果。n CASE搜索函数计算一组布尔表达式以确定返回的结果。搜索函数计算一组布尔表达式以确定返回的结果。1.简单简单CASE函数函数 CASE 输入表达式输入表达式 WHEN when_表达式表达式 THEN 结果表达式结果表达式 .n ELSE 结果表达式结果表达式 END 功能功能:计算输入表达式的值,依次与每个计算输入表达式的值,依次与每个WHEN子句中的子句中的

18、when_表达表达式进行比较,直到发现第一个与输入表达式相等的表达式时,便返回式进行比较,直到发现第一个与输入表达式相等的表达式时,便返回该该WHEN子句的子句的THEN后面所指定的结果表达式。如果不存在与输入后面所指定的结果表达式。如果不存在与输入表达式相等的表达式相等的when_表达式,则当指定表达式,则当指定ELSE子句时将返回子句时将返回ELSE字句指字句指定的结果表达式,若没有指定定的结果表达式,若没有指定ELSE子句,则返回子句,则返回NULL值。值。【例例】将数据库中的将数据库中的Student表的表的StuSex字段的值用字段的值用0和和1分别显示分别显示“男男”和和“女女”。

19、SELECT 学号学号=StuID,性别性别=CASE StuSex WHEN 0 THEN 男男 WHEN 1 THEN 女女ENDFROM Student2.CASE搜索函数搜索函数 CASE WHEN 布尔表达式布尔表达式 THEN 结果表达式结果表达式 .n ELSE 结果表达式结果表达式 END 功能功能:依次计算每个依次计算每个WHEN子句中的布尔表达式,返回第一个值为子句中的布尔表达式,返回第一个值为TRUE的布尔表达式之后对应的的结果表达式值。如果每一个的布尔表达式之后对应的的结果表达式值。如果每一个WHEN子句之后的布尔表达式为都不为子句之后的布尔表达式为都不为TRUE,则当

20、指定,则当指定ELSE子句时,返回子句时,返回ELSE子句中的结果表达式的值,若没有指定子句中的结果表达式的值,若没有指定ELSE子句,则返回子句,则返回NULL值。值。【例例】将将Student表显示为如下格式:表显示为如下格式:学号学号 年龄年龄A00001A00001小于小于2020岁岁A00002A00002超过超过2020岁岁SELECT 学号学号=StuID,年龄年龄=CASE WHEN datediff(yy,StuBirthDate,getdate()=20 THEN 超超过过20岁岁ENDFROM Student格式格式:WHILE 布尔表达式布尔表达式 sql语句语句|语句

21、块语句块 功能:功能:从从WHILE语句开始,计算布尔表达式的值,当布尔表达式的值语句开始,计算布尔表达式的值,当布尔表达式的值为为TRUE时,执行时,执行循环体循环体,然后返回,然后返回WHILE语句,再计算布尔表达式语句,再计算布尔表达式的值,如果仍为的值,如果仍为TRUE,则再,则再执行执行循环体循环体,直到某次布尔表达式,直到某次布尔表达式的值为的值为FALSE时,则不执行时,则不执行循环体循环体,而直接执行,而直接执行WHILE循环之后的其循环之后的其他语句。他语句。【例例】对对1到到100之间的数求和。之间的数求和。DECLARE i int,sum intSET i=1SET s

22、um=0WHILE i=100 BEGIN SET sum=sum+i SET i=i+1 ENDPRINT 1 到到100之间数的和为之间数的和为+Convert(char(10),sum)在循环体中在循环体中可以包含语句:可以包含语句:n BREAK语句语句 执行执行BREAK语句将完全跳出循环,结束语句将完全跳出循环,结束WHILE循环的执行。循环的执行。n CONTINUE语句语句 执行执行CONTINUE语句将使循环跳过语句将使循环跳过CONTINUE语句后面的语句,回语句后面的语句,回到到WHILE循环的第一条语句。循环的第一条语句。DECLARE i int,sum intSET

23、 i=0WHILE i10 BEGIN SET i=i+1 IF(i=6)PRINT Convert(char(10),i)ENDBREAK;CONTINUE;格式格式:RETURN 整数表达式整数表达式 功能功能:用于无条件地终止一个查询、存储过程或者批处理,当执行用于无条件地终止一个查询、存储过程或者批处理,当执行RETURN语句时,位于语句时,位于RETURN语句之后的程序将不会被执行。语句之后的程序将不会被执行。说明说明:RETURN:在存储过程中可以在在存储过程中可以在RETURN后面使用一个具有整数值的后面使用一个具有整数值的表达式,用于向调用过程或应用程序返回整型值。表达式,用于

24、向调用过程或应用程序返回整型值。(关于存储过程的使用将在第关于存储过程的使用将在第7章介绍章介绍)格式格式:WAITFOR DELAY 时间时间|TIME 时间时间 功能功能:用于暂时停止用于暂时停止SQL语句、语句块或者存储过程等的执行,直到所语句、语句块或者存储过程等的执行,直到所设定的时间已过或者所设定的时间已到才继续执行。设定的时间已过或者所设定的时间已到才继续执行。说明说明:n DELAY:使用该关键字表示使用该关键字表示其后的时间应为时间间隔,该时间间隔其后的时间应为时间间隔,该时间间隔最长可达最长可达24小时小时.n TIME:使用该关键字表示使用该关键字表示其后的时间用于指示要

25、等待到的时间点,其后的时间用于指示要等待到的时间点,格式为:格式为:hh:mm:ss。【例】在一分钟以后打印【例】在一分钟以后打印“HELLO”,代码如下代码如下:BEGIN WAITFOR DELAY 00:01 PRINT HELLOEND【例】在晚上【例】在晚上10:20时打印时打印“HELLO”。BEGIN WAITFOR TIME 22:20 PRINT HELLOEND 注释用于对代码行或代码段进行说明,或暂时禁用某些代码行。注释用于对代码行或代码段进行说明,或暂时禁用某些代码行。注注释语句不被编译器编译。释语句不被编译器编译。注释是程序代码中不执行的文本字符串。使注释是程序代码中

26、不执行的文本字符串。使用注释对代码进行说明,可以使程序代码更易于理解和维护。注释通用注释对代码进行说明,可以使程序代码更易于理解和维护。注释通常用于说明代码的功能,描述复杂计算或解释编程方法,记录程序名常用于说明代码的功能,描述复杂计算或解释编程方法,记录程序名称、作者姓名、主要代码更改的日期等。称、作者姓名、主要代码更改的日期等。向代码中添加注释时,需要用一定的字符进行标识。向代码中添加注释时,需要用一定的字符进行标识。SQL Server支持两种类型的注释字符。支持两种类型的注释字符。(1)-:这种注释字符可与要执行的代码处在同一行,也可另起一行。这种注释字符可与要执行的代码处在同一行,也

27、可另起一行。从双连字符开始到行尾均表示注释。对于多行注释,必须在每个注从双连字符开始到行尾均表示注释。对于多行注释,必须在每个注释行的开始使用双连字符。释行的开始使用双连字符。【例例】使用双连字符给程序添加注释。使用双连字符给程序添加注释。-从从Student表中选择所有的行和列表中选择所有的行和列SELECT*FROM StudentORDER BY StuID ASC -按按StuID列的升序排序列的升序排序(2)/*.*/:可与代码处在同一行,也可另起一行,甚至用在可执行代可与代码处在同一行,也可另起一行,甚至用在可执行代码内。从码内。从/*到到*/之间的全部内容均为注释部分。对于多行注

28、释,必须使之间的全部内容均为注释部分。对于多行注释,必须使用用/*开始注释,使用开始注释,使用*/结束注释。注释行上不应出现其它注释字符。结束注释。注释行上不应出现其它注释字符。【例例】使用使用/*.*/给程序添加注释。给程序添加注释。/*从从Student表中选择所有的行和列表中选择所有的行和列*/SELECT*FROM StudentORDER BY StuID ASC /*按按StuID列的升序排序列的升序排序*/声明两个变量声明两个变量StuID和和CourseID,分别赋值为,分别赋值为12001和和1。查询。查询SC表中对应的成绩,并将成绩放入变量表中对应的成绩,并将成绩放入变量Grade中保存,最后打印该中保存,最后打印该成绩的值。成绩的值。查询查询12001号学生的号学生的1号课程成绩,并放入变量保存,如果成绩大号课程成绩,并放入变量保存,如果成绩大于等于于等于60,则显示,则显示“及格及格”,否则显示,否则显示“不及格不及格”。统计统计SC表中表中12001号学生的平均成绩、最高成绩及最低成绩分别放号学生的平均成绩、最高成绩及最低成绩分别放入变量保存,最后打印变量的值。入变量保存,最后打印变量的值。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《sql server数据库应用与实践教程》课件第6章-表达式与流程控制.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|