SQLServer实用案例教程(2008版)项目6简单程序设计SQLServer实用案例教程(2008版)1234主要内容5需求分析知识点提取项目融合知识点详解自我完善6知识点详解SQLServer实用案例教程(2008版)需求分析在项目1中我们了解到T-SQL语言是SQL语言的增强版,T-SQL语言延伸了SQL语言的功能,主要增强了SQL语言的程序设计功能,为程序设计、存储过程的应用以及事务的规划提供了支持,使得数据库的管理更加规范。SQLServer实用案例教程(2008版)知识点提取本项目以方便用户创建更丰富的数据库对象打基础为目的,需要掌握的主要知识点如下:理解批处理和注释的作用理解常量、变量和表达式的概念掌握变量的定义、赋值和输出方法理解系统函数的使用方法掌握用户自定义函数的创建方法掌握流程控制语句的使用方法SQLServer实用案例教程(2008版)知识点详解6.1批处理和注释SQLServer实用案例教程(2008版)6.2标识符、常量和表达式6.3变量6.4函数6.5流程控制语句6.1批处理和注释在前面的项目中多次用到“go”语句,它即是批处理语句的结束标志。一般来说,批处理语句是从程序的开始到go语句结束,或者是在两个go语句中间的一条或多条T-SQL语句。每遇到一个go语句,系统即将这个批处理中的所有语句一同发送给服务器处理。系统允许一次发送多个批处理同时处理,但如果其中一个批处理出现错误,整个被发送的所有程序将不被执行。SQLServer实用案例教程(2008版)6.1.1批处理6.1批处理和注释和许多程序设计语言一样,T-SQL语言中的注释语句也是用来为程序添加说明的,从而增强程序的可读性。在程序执行时,被注释的内容不会被执行。T-SQL语言中的注释可以用两种形式表达:--(两个英文状态下的减号):用来注释单行语句。出现在这个注释符号后面同行的语句是注释语句。/*……*/:用来注释多行语句。出现在“/*”与“*/”之间的语句都是注释语句,需要注意的是,多行注释的开始和结束标志只能出现在同一个批处理中。SQLServer实用案例教程(2008版)6.1.2注释6.2标识符、常量和表达式在SQLServer中标识符共有两种类型:一种是规则标识符,一种是界定标识符。其中,规则标识符严格遵守标识符有关格式的规定,所以在T-SQL语言中凡是规则运算符都不必使用定界符。对于不符合标识符格式的标识符要使用界定符[]或‘’。SQLServer实用案例教程(2008版)6.2.1标识符6.2标识符、常量和表达式标识符在命名上应满足如下格式要求:标识符必须是统一编码标准中规定的字母、字符,以及其他语言的字符,如汉字。标识符中可以包含“_”、“@”、“#”、“$”及数字。标识符不允许是T-SQL的保留字。标识符内不允许有空格和特殊字符。SQLServer实用案例教程(2008版)6.2.1标识符6.2标识符、常量和表达式另外,某些以特殊符号开头的标识符在SQLServer中具有特定的含义。如以“@”开头的标识符表示这是一个局部变量或是一个函数的参数;以“#”开头的标识符表示这是一个临时表或是一个存储过程。以“##”开头的表示这是一个全局的临时数据库对象。T-SQL语言的全局变量以“@@”开头。一个标识符最多可以容纳128个字符。SQLServer实用案例教程(2008版)6.2.1标识符6.2标识符、常量和表达式另外,某些以特殊符号开头的标识符在SQLServer中具有特定的含义。如以“@”开头的标识符表示这是一个局部变量或是一个函数的参数;以“#”开头的标识符表示这是一个临时表或是一个存储过程。以“##”开头的表示这是一个全局的临时数据库对象。T-SQL语言的全局变量以“@@”开头。一个标识符最多可以容纳128个字符。SQLServer实用案例教程(2008版)6.2.2常量6.2标识符、常量和表达式常量是指在程序执行过程中值始终保持不变的量。在T-SQL语言中,根据数据类型不同,常用的常量使用方法如下:数值型常量:直接使用数值型常量的数值引用即可。例如,57;12.3。字符型常量:字符型常量需将值放在定界符(’’)中引用。例如,’57’;’a57’;’y57%’。如果被引用的字符串中本身包含定界符,如“I’mastudent”,引用此常量的方法是’I’’mastudent’,即在定界符内用两个单引号来指明被引用的一个单引号。日期和时间型常量:日期和时间型常量也需将值放在定界符(’’)中引用。例如,’2013-2-17’;’14:55:33’。符号型常量:由系统提供,可以直接使用。例如,user;system_user。SQLServer实用案例教程(2008版)6.2.2常量6.2标识符、常量和表达式表达式由常量、变量和运算符构成。不同数据类型的常量和变量有不同的运算规则,需使用不同的运算符。常用的运算符包括赋值运算符、算术运算符、比较运算符、连接运算符、逻辑运算符和位运算符,如表6-1所示。运算符的优先顺序由先到后为:+(正)、-(负)、~、*、/、%、+(加)、+(连接)、-、比较运算符、^、&、|、not、and、or。SQLServer实用案例教程(2008版)6.2.3表达式6.2标识符、常量和表达式运算符在使用时的说明:对于连接运算符(+),如果运算符左右两侧都是字符型,则结果为两个字符串相连接的新字符串;如果运算符左右两侧分别是字符型和数值型,则结果可能为数值型也可能无法计算。例如:表达式’33’+’7’的结果为’337’;表达式’33’+7的结果为40;表达式’a3’+7则无法计算结果。SQLServer实用案例教程(2008版)6.2.3表达式6.3常量变量保存在系统或用户定义的对象中,由系统或用户定义和管理,其值在程序执行时可以发生改变。在T-SQL语言中,变量可以分为以“@@”开头命名的全局变量和以“@”开头命名的局部变量两种类型。SQLServer实用案例教程(2008版)6.3常量全局变量是由系统定义和管理的,用户不能创建和修改全局变量。使用时直接引用全局变量的名字即可。例如,@@servername查看当前服务器的名称;@@error返回最后一条执行的T-SQL语句的错误号;@@fetch_status与游标中的fetch语句配合使用,返回游标状态。SQLServer实用案例教程(2008版)6.3.1全局变量6.3常量局部变量由用户自行定义、赋值、使用或输出。可以使用局部变量参与计算,也可以在流程控制语句中设置局部变量,还可以使用局部变量存放统计结果等。SQLServer实用案例教程(2008版)6.3.2局部变量6.3常量1.声明局部变量像其它计算机语言定义变量一样,T-SQL语言在使用变量之前也必须声明变量,给出变量的名字和数据类型供程序调用。知识点T-SQL语言声明局部变量的语法格式如下:declare@局部变量名数据类型[(长度)][,……]SQLServer实用案例教程(2008版)6.3.2局部变量6.3常量说明:declare是声明局部变量的关键字。局部变量必须以“@”开头。务必为变量指明数据类型,如果该数据类型包含长度须指明长度。例如,字符型需指明长度;decimal类型需指明精度和小数位。允许一次声明多个变量,变量间用逗号隔开。SQLServer实用案例教程(2008版)6.3.2局部变量6.3常量2.为局部变量赋值知识点局部变量被成功声明后不管什么数据类型,其初始值均为空值NULL,若要使用局部变量可以为其赋值。T-SQL语言允许使用set语句和select语句两种方式为变量赋值。set语句为变量赋值的语法格式如下:set@局部变量名=表达式SQLServer实用案例教程(2008版)6.3.2局部变量6.3常量说明:set语句一次只能为一个变量赋值,可以用多个set语句为不同变量赋值。select语句为变量赋值的语法格式如下:select@局部变量名=表达式[,……]说明:select语句允许同时为多个变量赋值,赋值表达式之间用逗号隔开。select语句也可以分开为不同变量赋值。SQLServer实用案例教程(2008版)6.3.2局部变量6.3常量3.输出局部变量知识点局部变量被声明和赋值后,可以随时被程序调用,如果有需要还可以将局部变量的值输出显示出来。print语句和select语句都可以用来输出局部变量、全局变量或表达式的值。SQLServer实用案例教程(2008版)6.3.2局部变量6.3常量print语句输出局部变量值的语法格式如下:print@局部变量名|@@全局变量名|表达式说明:print语句一次只允许输出一个变量或表达式的值,可以用多个print语句输出不同变量或表达式的值。SQLServer实用案例教程(2008版)6.3.2局部变量6.3常量select语句输出局部变量值的语法格式如下:select@局部变量名|@@全局变量名|表达式[,……]说明:select语句允许一次输出多个变量或者表达式的值,多个变量或表达式之间用逗号隔开。SQLServer实用案例教程(2008版)6.3.2局部变量6.3常量案例【例6.1】声明一个整型变量@x,赋值为5;声明一个字符型变量@str,赋值为“SQLServer数据库”,输出两个变量的值。可以使用以下几种不同的赋值和输出方法实现。SQLServer实用案例教程(2008版)6.3.2局部变量6.3常量解题(1)使用set语句赋值和select语句输出使用set语句赋值和select语句输出结果的程序代码如下:declare@xint,@strnvarchar(15)set@x=5set@str='SQLServer数据库'select@xselect@str--select@x,@strgoSQLServer实用案例教程(2008版)6.3.2局部变量6.3常量说明:代码中被注释的一行语句表示select语句可以同时输出两个变量的值,输出结果与使用select语句单独输出变量时不同。点击“分析”按钮,无语法错误后点击“执行”按钮,得到如图6-1和图6-2所示结果。SQLServer实用案例教程(2008版)6.3.2局部变量6.3常量SQLServer实用案例教程(2008版)6.3.2局部变量图6-1set赋值select独立输出图6-2set赋值select同时输出6.3常量说明:图6-1中的注释是单行注释方法,图6-2中的注释是多行注释方法。图6-1中每一个独立的select语句输出的变量结果显示在一个独立的结果集中,图6-2中用一个select语句同时输出多个变量时,结果同行显示在同一个结果集中。SQLServer实用案例教程(2008版)6.3.2局部变量6.3常量解题(2)使用set语句赋值和print语句输出使用set语句赋值和print语句输出结果的程序代码如下:declare@xint,@strnvarchar(15)set@x=5set@str='SQLServer数据库'print@xprint@strgoSQLServer实用案例教程(2008版)6.3.2局部变量6.3常量说明:print语句不能同时输出多个变量,因此使用两个print语句分别输出两个变量,结果将换行显示。点击“分析”按钮,无语法错误后点击“执行”按钮,得到如图6-3所示结果。SQLServer实用案例教程(2008版)6.3.2局部变量6.3常量SQLServer实用案例教程(2008版)6.3.2局部变量图6-3set赋值print输出6.3常量解题(3)使用select语句赋值,pirnt和select语句分别输出。使用select语句赋值,print和select语句分别输出结果的程序代码如下:declare@xint,@strnvarchar(15)select@x=5,@str='SQLServer数据库'