您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 进销存系统的流程控制
第五章构建进销存管理系统的流程控制计算机应用教研室教学内容1、变量和常量声明和赋值2、用户自定义数据类型3、逻辑运算符的使用4、常用系统函数介绍5.2.1常量根据常量值的不同类型,常量分为字符串常量、整型常量、实型常量、日期时间常量、货币常量、唯一标识常量。各类常量举例说明如下。1.字符串常量字符串常量分为ASCII字符串常量和Unicode字符串常量。(1)ASCII字符串常量。ASCII字符串常量是用单引号括起来,由ASCII字符构成的符号串。ASCII字符串常量举例如下:'China''Howdoyou!''O''Bbaar'/*如果单引号中的字符串包含引号,可以使用两个单引号来表示嵌入的单引号。*/5.1常量和变量(2)Unicode字符串常量。Unicode字符串常量与ASCII字符串常量相似,但它前面有一个N标识符(N代表SQL-92标准中的国际语言NationalLanguage),N前缀必须为大写字母。Unicode字符串常量举例如下:N'China'N'Howdoyou!'Unicode数据中的每个字符用两个字节存储,而每个ASCII字符用一个字节存储。5.1常量和变量2.整型常量按照不同表示方式,整型常量又分为二进制整型常量、十六进制整型常量和十进制整型常量。十六进制整型常量的表示:前辍0x后跟十六进制数字串。十六进制常量举例:0xEBF0x69048AEFDD010E0x/*空十六进制常量*/二进制整型常量的表示:即数字0或1,并且不使用引号。如果使用一个大于1的数字,它将被转换为1。十进制整型常量即不带小数点的十进制数,例如,1894,2,+145345234,-21474836485.1常量和变量4.日期时间常量日期时间常量:用单引号将表示日期时间的字符串括起来构成。SQLServer可以识别如下格式的日期和时间。字母日期格式,如'April20,2000';数字日期格式,如'4/15/1998','1998-04-15';未分隔的字符串格式,如'20001207';以下是时间常量的例子:'14:30:24''04:24:PM'以下是日期时间常量的例子:'April20,200014:30:24'5.1常量和变量1.系统数据类型系统数据类型又称为基本数据类型。详细地介绍了系统数据类型,此处不再赘述。2.用户自定义数据类型用户自定义数据类型可看做系统数据类型的别名。用户自定义数据类型并不是真正的数据类型,它只是提供了一种提高数据库内部元素和基本数据类型之间一致性的机制。5.2数据类型1.变量变量名必须是一个合法的标识符。(1)标识符。在SQLServer中标识符分为两类。常规标识符:以ASCII字母、Unicode字母、下划线(_)、@或#开头,后续可跟一个或若干个ASCII字符、Unicode字符、下划线(_)、美元符号($)、@或#,但不能全为下划线(_)、@或#。注意:常规标识符不能是T-SQL的保留字。常规标识符中不允许嵌入空格或其他特殊字符。5.3变量的声明及赋值(2)变量的分类全局变量:全局变量由系统提供且预先声明,通过在名称前加两个“@”来区别于局部变量。T-SQL全局变量作为函数引用。例如,@@ERROR返回执行的上一个T-SQL语句的错误号;@@CONNECTIONS返回自上次启动SQLServer以来连接或试图连接的次数。全局变量的意义及使用请参考附录B。局部变量:局部变量用于保存单个数据值。例如,保存运算的中间结果,作为循环变量等。当首字母为“@”时,表示该标识符为局部变量名;当首字母为“#”时,此标识符为一临时数据库对象名,若开头含一个“#”,表示局部临时数据库对象名;若开头含两个“#”,表示全局临时数据库对象名。5.3变量的声明及赋值2.局部变量的使用(1)局部变量的定义与赋值。定义:DECLARE@变量名数据类型n:表示可定义多个变量,各变量间用逗号隔开。②局部变量的赋值。当声明局部变量后,可用SET或SELECT语句为其赋值。5.3变量的声明及赋值【例5.2】创建局部变量@var1、@var2并赋值,然后输出变量的值。DECLARE@var1char(10),@var2char(30)SET@var1='中国'/*一个SET语句只能为一个变量赋值*/SET@var2=@var1+'是一个伟大的国家'SELECT@var1,@var25.3变量的声明及赋值【例5.3】创建一个名为sex的局部变量,并在SELECT语句中使用该局部变量查找表学生中所有男同学的学号、姓名。USEStuManagerCGODECLARE@sexchar(2)SET@sex=‘男’SELECT学号,姓名FROM学生WHERE性别=@sex5.3变量的声明及赋值【例5.4】使用查询为变量赋值。DECLARE@studentchar(8)SET@student=(SELECT姓名FROM学生WHERE学号='090015101')SELECT@student5.3变量的声明及赋值用SELECT语句赋值:语法格式:SELECT@变量名=表达式或值注意事项SELECT@变量名通常用于将单个值返回到变量中。如果如果表达式返回多个值,此时将返回的最后一个值赋给变量。如果SELECT语句没有返回行,变量将保留当前值。如果表达式是不返回值的标量子查询,则将变量设为NULL。一个SELECT语句可以初始化多个局部变量。5.3变量的声明及赋值【例5.5】使用SELECT语句为局部变量赋值。DECLARE@var1nvarchar(30)SELECT@var1='刘丰'SELECT@var1AS'NAME'5.3变量的声明及赋值【例5.6】为局部变量赋空值。DECLARE@var1nvarchar(30)SELECT@var1='刘丰'SELECT@var1=(SELECT姓名FROM学生WHERE学号='089999')SELECT@var1AS'NAME'5.3变量的声明及赋值【例5.10】查询成绩高于“张伟”最高成绩的学生姓名、课程名称及成绩。selecta.学号,姓名,c.课程名称称,成绩from学生ainnerjoin学生成绩bona.学号=b.学号innerjoin课程conc.课程编号=b.课程编号where成绩all(select成绩from学生ainnerjoin学生成绩bona.学号=b.学号and姓名='张伟')5.4逻辑运算符的使用练习1、查询成绩高于“大学英语”最高成绩的学生姓名、课程名称及成绩。5.4逻辑运算符的使用(4)EXISTS与NOTEXISTS的使用。语法格式:EXISTSsubquery用于检测一个子查询的结果是否不为空,若是则运算结果为真,否则为假。subquery用于代表一个受限的SELECT语句。EXISTS子句的功能有时可用IN,而NOTEXISTS的作用与EXISTS正相反。5.4逻辑运算符的使用【例5.14】查询上交日期为2010-03-17,交了作业的学生的姓名select姓名from学生awhereexists(select*from作业binnerjoin作业明细conb.作业id=c.作业idwhere上交日期='2010-3-17'anda.学号=c.学号)5.4逻辑运算符的使用5.4逻辑运算符的使用练习1、查找同时选修程序设计基础和java基础的学生的学号和姓名通过运算符“+”实现两个字符串的连接运算。【例5.15】多个字符串的连接。SELECT(学号+‘,’+姓名)AS学号及姓名FROM学生5.4字符串连接运算符5.5常用系统函数介绍1、字符串函数函数名描述函数名描述Len返回字符串的字符数Left从左侧起返回指定长度字符串Right从右侧起返回指定长度字符串RTrim去掉右边空格Ltrim去掉左边空格Substring从字符串中第i位开始取m位字符Replace用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。UpperLower转换为大写转换为小写5.5常用系统函数介绍2、数学函数函数名描述函数名描述Abs绝对值Round四舍五入5.5常用系统函数介绍3、日期函数及转换函数函数名描述函数名描述Getdate返回当前日期Convert转换数据类型Cast转换数据类型Datediff返回两个日期的时间间隔Dateadd向指定日期添加间隔5.5常用系统函数介绍【例】获得当前服务器时间Declare@currentDatedatetimeSelect@currentDate=getdate()Select@currentDate5.5常用系统函数介绍【例】获得当前服务器时间,并以YYYY-MM-DD形式显示Declare@currentDatedatetimeSelect@currentDate=getdate()Selectconvert(char(10),@currentdate,111)Selectconvert(char(10),@currentdate,121)Selectconvert(char(10),@currentdate,101)5.5常用系统函数介绍【例】将1/3转换为decimal(6,2),结果为0.33Selectconvert(decimal(6,2),1*1.00/3)5.5常用系统函数介绍【例】计算距离软考还有多少天,软考日期为2010-5-23selectdatediff(day,getdate(),'2010-5-23')【例】计算距离元旦还有多少个月selectdatediff(month,getdate(),'2011-1-1')【例】计算毕业还有几年(2012-7-30)selectdatediff(year,getdate(),'2012-7-30')5.5常用系统函数介绍【例】计算昨天,明天,后天所对应的年月日selectdateadd(day,-1,getdate())as昨天,dateadd(day,1,getdate())as明天,dateadd(day,2,getdate())as后天5.5常用系统函数介绍【练习】1、计算当前月份的最后一天2、计算当前月份有多少天实战演练1、统计学生表中,姓氏排名前5位同学的姓氏,人数2、统计学生信息,按姓名的字数统计3、声明变量@str,@str=‘chongQingZdsoft’,分别转换为小写字符和大写字符4、声明变量@str,@str=‘‘,去掉首位空格5、声明变量@var,@var为当前日期加5天,显示@var在设计程序时,常常需要利用各种流程控制语句,改变计算机的执行流程以满足程序设计的需要。在SQLServer中提供了如表5.11所示的流程控制语句。控制语句说明控制语句说明BEGIN…END语句块CONTINUE用于重新开始下一次循环IF…ELSE条件语句BREAK用于退出最内层的循环CASE分支语句RETURN无条件返回GOTO无条件转移语句WAITFOR为语句的执行设置延迟WHILE循环语句5.6流程控制语句在T-SQL中可以定义BEGIN…END语句块。当要执行多条T-SQL语句时,就需要使用BEGIN…END将这些语句定义成一个语句块,作为一组语句来执行。语法格式如下:BEGIN{sql_statement|statement_block}END关键字BEGIN是T-SQL语句块的起始位置,END标识同一个T-SQL语句块的结尾。sql_statement是语句块中的T-SQL语句。BEGIN…END可以嵌套使用,statement_block表示使用BEGIN…END定义的另一个语句块。例如,USEStuManagerCGOBEGINSELECT*FROM学生SELECT*FROM课程END5.61流程控制语句--BEGIN…END在程序中如果要对给定的条件进行判定,当条件为真或假时分别执行不同的T-SQL语句,可用IF…ELSE语句实现。语法格式:IFBoolean
本文标题:进销存系统的流程控制
链接地址:https://www.777doc.com/doc-657048 .html