进销存系统的流程控制.ppt_第1页
进销存系统的流程控制.ppt_第2页
进销存系统的流程控制.ppt_第3页
进销存系统的流程控制.ppt_第4页
进销存系统的流程控制.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

第五章构建进销存管理系统的流程控制,教学内容,1、变量和常量声明和赋值2、用户自定义数据类型3、逻辑运算符的使用4、常用系统函数介绍,5.2.1常量根据常量值的不同类型,常量分为字符串常量、整型常量、实型常量、日期时间常量、货币常量、唯一标识常量。各类常量举例说明如下。1字符串常量字符串常量分为ASCII字符串常量和Unicode字符串常量。(1)ASCII字符串常量。ASCII字符串常量是用单引号括起来,由ASCII字符构成的符号串。ASCII字符串常量举例如下:ChinaHowdoyou!OBbaar/*如果单引号中的字符串包含引号,可以使用两个单引号来表示嵌入的单引号。*/,5.1常量和变量,(2)Unicode字符串常量。Unicode字符串常量与ASCII字符串常量相似,但它前面有一个N标识符(N代表SQL-92标准中的国际语言NationalLanguage),N前缀必须为大写字母。Unicode字符串常量举例如下:NChinaNHowdoyou!Unicode数据中的每个字符用两个字节存储,而每个ASCII字符用一个字节存储。,5.1常量和变量,2整型常量按照不同表示方式,整型常量又分为二进制整型常量、十六进制整型常量和十进制整型常量。十六进制整型常量的表示:前辍0 x后跟十六进制数字串。十六进制常量举例:0 xEBF0 x69048AEFDD010E0 x/*空十六进制常量*/二进制整型常量的表示:即数字0或1,并且不使用引号。如果使用一个大于1的数字,它将被转换为1。十进制整型常量即不带小数点的十进制数,例如,1894,2,+145345234,-2147483648,5.1常量和变量,4日期时间常量日期时间常量:用单引号将表示日期时间的字符串括起来构成。SQLServer可以识别如下格式的日期和时间。字母日期格式,如April20,2000;数字日期格式,如4/15/1998,1998-04-15;未分隔的字符串格式,如20001207;以下是时间常量的例子:14:30:2404: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并赋值,然后输出变量的值。DECLAREvar1char(10),var2char(30)SETvar1=中国/*一个SET语句只能为一个变量赋值*/SETvar2=var1+是一个伟大的国家SELECTvar1,var2,5.3变量的声明及赋值,【例5.3】创建一个名为sex的局部变量,并在SELECT语句中使用该局部变量查找表学生中所有男同学的学号、姓名。USEStuManagerCGODECLAREsexchar(2)SETsex=男SELECT学号,姓名FROM学生WHERE性别=sex,5.3变量的声明及赋值,【例5.4】使用查询为变量赋值。DECLAREstudentchar(8)SETstudent=(SELECT姓名FROM学生WHERE学号=090015101)SELECTstudent,5.3变量的声明及赋值,用SELECT语句赋值:语法格式:SELECT变量名=表达式或值注意事项SELECT变量名通常用于将单个值返回到变量中。如果如果表达式返回多个值,此时将返回的最后一个值赋给变量。如果SELECT语句没有返回行,变量将保留当前值。如果表达式是不返回值的标量子查询,则将变量设为NULL。一个SELECT语句可以初始化多个局部变量。,5.3变量的声明及赋值,【例5.5】使用SELECT语句为局部变量赋值。DECLAREvar1nvarchar(30)SELECTvar1=刘丰SELECTvar1ASNAME,5.3变量的声明及赋值,【例5.6】为局部变量赋空值。DECLAREvar1nvarchar(30)SELECTvar1=刘丰SELECTvar1=(SELECT姓名FROM学生WHERE学号=089999)SELECTvar1ASNAME,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-17anda.学号=c.学号),5.4逻辑运算符的使用,5.4逻辑运算符的使用,练习1、查找同时选修程序设计基础和java基础的学生的学号和姓名,通过运算符“+”实现两个字符串的连接运算。【例5.15】多个字符串的连接。SELECT(学号+,+姓名)AS学号及姓名FROM学生,5.4字符串连接运算符,5.5常用系统函数介绍,1、字符串函数,5.5常用系统函数介绍,2、数学函数,5.5常用系统函数介绍,3、日期函数及转换函数,5.5常用系统函数介绍,【例】获得当前服务器时间DeclarecurrentDatedatetimeSelectcurrentDate=getdate()SelectcurrentDate,5.5常用系统函数介绍,【例】获得当前服务器时间,并以YYYY-MM-DD形式显示DeclarecurrentDatedatetimeSelectcurrentDate=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=WWW,去掉首位空格5、声明变量var,var为当前日期加5天,显示var,在设计程序时,常常需要利用各种流程控制语句,改变计算机的执行流程以满足程序设计的需要。在SQLServer中提供了如表5.11所示的流程控制语句。,5.6流程控制语句,在T-SQL中可以定义BEGINEND语句块。当要执行多条T-SQL语句时,就需要使用BEGINEND将这些语句定义成一个语句块,作为一组语句来执行。语法格式如下:BEGINsql_statement|statement_blockEND关键字BEGIN是T-SQL语句块的起始位置,END标识同一个T-SQL语句块的结尾。sql_statement是语句块中的T-SQL语句。BEGINEND可以嵌套使用,statement_block表示使用BEGINEND定义的另一个语句块。例如,USEStuManagerCGOBEGINSELECT*FROM学生SELECT*FROM课程END,5.61流程控制语句-BEGINEND,在程序中如果要对给定的条件进行判定,当条件为真或假时分别执行不同的T-SQL语句,可用IFELSE语句实现。语法格式:IFBoolean_expression/*条件表达式*/sql_statement|statement_block/*条件表达式为真时执行*/ELSEsql_statement|statement_block/*条件表达式为假时执行*/由上述语法格式可看出,条件语句分带ELSE部分和不带ELSE部分两种使用形式。(1)带ELSE部分:IF条件表达式A/*T-SQL语句或语句块*/ELSEB/*T-SQL语句或语句块*/当条件表达式的值为真时执行A,然后执行IF语句的下一语句;条件表达式的值为假时执行B,然后执行IF语句的下一语句。,5.61流程控制语句-IFELSE,(2)不带ELSE部分:IF条件表达式A/*T-SQL语句或语句块*/当条件表达式的值为真时执行A,然后执行IF语句的下一条语句;当条件表达式的值为假时直接执行IF语句的下一条语句。IF语句的执行流程如图5.3所示。,图5.3IF语句的执行流程,5.61流程控制语句-IFELSE,【例5.17】如果“程序设计基础”课程的平均成绩高于75分,则显示“平均成绩高于75分”。IF(SELECTAVG(成绩)FROM学生,学生成绩,课程WHERE学生.学号=学生成绩.学号AND学生成绩.课程编号=课程.课程编号AND课程.课程名称=程序设计基础)48,5.62流程控制语句-Case,若使用第二种格式的CASE语句则可以使用以下T-SQL语句。SELECT学号,姓名,专业,SEX=CASEWHEN性别=1THEN男WHEN性别=0THEN女ELSE无ENDFROM学生WHERE总学分48,5.62流程控制语句-Case,1WHILE循环语句如果需要重复执行程序中的一部分语句,则可使用WHILE循环语句实现。语法格式:WHILEBoolean_expression/*条件表达式*/sql_statement|statement_block/*T-SQL语句序列构成的循环体*/WHILE语句的执行流程如图5.4所示。,图5.4WHILE语句的执行流程,5.62流程控制语句-WHILE循环语句,从WHILE循环的执行流程可看出其使用形式:WHILE条件表达式循环体/*T-SQL语句或语句块*/【例5.20】将学号为081101的

温馨提示

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

评论

0/150

提交评论