【数据库SQL】变量和函数
目录
1、要求
理解批处理和注释的作用
理解常量、变量和表达式的概念
掌握变量的定义、赋值和输出方法
理解系统函数的使用方法
掌握用户自定义函数的创建方法
掌握流程控制语句的使用方法
2、批处理和注释
批处理语句是从程序的开始到go语句结束,或者是在两个go语句中间的一条或多条T-SQL语句。
每遇到一个go语句,系统即将这个批处理中的所有语句一同发送给服务器处理。系统允许一次发送多个批处理同时处理,但如果其中一个批处理出现错误,整个被发送的所有程序将不被执行。
注释是为了增强程序的可读性
--(两个英文状态下的减号):用来注释单行语句。出现在这个注释符号后面同行的语句是注释语句。
/*……*/:用来注释多行语句。出现在“/*”与“*/”之间的语句都是注释语句,需要注意的是,多行注释的开始和结束标志只能出现在同一个批处理中
3、标识符、常量、表达式
3.1标识符
在SQL Server中标识符共有两种类型:一种是规则标识符,一种是界定标识符。其中,规则标识符严格遵守标识符有关格式的规定,所以在T-SQL语言中凡是规则运算符都不必使用定界符。对于不符合标识符格式的标识符要使用界定符[]或‘ ’。
标识符在命名上应满足如下格式要求:
标识符必须是统一编码标准中规定的字母、字符,以及其他语言的字符,如汉字。
标识符中可以包含 “_”、“@”、“#”、“$”及数字。
标识符不允许是T-SQL的保留字。
标识符内不允许有空格和特殊字符。
另外,某些以特殊符号开头的标识符在SQL Server中具有特定的含义。
如以“@”开头的标识符表示这是一个局部变量或是一个函数的参数;以“#”开头的标识符表示这是一个临时表或是一个存储过程。以“##”开头的表示这是一个全局的临时数据库对象。T-SQL语言的全局变量以“@@”开头。一个标识符最多可以容纳128个字符。
3.2常量
常量是指在程序执行过程中值始终保持不变的量。
在T-SQL语言中,根据数据类型不同,常用的常量使用方法如下:
数值型常量:直接使用数值型常量的数值引用即可。例如,57;12.3。
字符型常量:字符型常量需将值放在定界符(’ ’) 中引用。例如,’57’;’a57’;’y5 7%’。如果被引用的字符串中本身包含定界符,如“I’m a student”,引用此常量的方法是’I’’m a student’,即在定界符内用两个单引号来指明被引用的一个单引号。
日期和时间型常量:日期和时间型常量也需将值放在定界符(’ ’)中引用。例如,’2013-2-17’;’14:55:33’。
符号型常量:由系统提供,可以直接使用。例如,user;system_user。
3.3表达式
表达式由常量、变量和运算符构成。不同数据类型的常量和变量有不同的运算规则,需使用不同的运算符。
常用的运算符包括赋值运算符、算术运算符、比较运算符、连接运算符、逻辑运算符和位运算符,如表6-1所示。
运算符的优先顺序由先到后为:+(正)、-(负)、~、*、/、%、+(加)、+(连接)、-、比较运算符、^、&、|、not、and、or。
运算符在使用时的说明:
对于连接运算符(+),如果运算符左右两侧都是字符型,则结果为两个字符串相连接的新字符串;如果运算符左右两侧分别是字符型和数值型,则结果可能为数值型也可能无法计算。
例如:表达式’33’+’7’的结果为’337’;表达式’33’+7的结果为40;表达式’a3’+7则无法计算结果
4、变量
变量保存在系统或用户定义的对象中,由系统或用户定义和管理,其值在程序执行时可以发生改变。在T-SQL语言中,变量可以分为以“@@”开头命名的全局变量和以“@”开头命名的局部变量两种类型。
全局变量是由系统定义和管理的,用户不能创建和修改全局变量。使用时直接引用全局变量的名字即可。例如,@@servername查看当前服务器的名称;@@error返回最后一条执行的T-SQL语句的错误号;@@fetch_status与游标中的fetch语句配合使用,返回游标状态。
局部变量由用户自行定义、赋值、使用或输出。可以使用局部变量参与计算,也可以在流程控制语句中设置局部变量,还可以使用局部变量存放统计结果等。
4.1局部变量的声明、赋值、输出
像其它计算机语言定义变量一样,T-SQL语言在使用变量之前也必须声明变量,给出变量的名字和数据类型供程序调用。
set 赋值情形:
SQL Server的查询窗口默认以网格形式显示输出结果,可以点击工具栏上的“以文本格式显示结果 ”按钮和“以网格形式显示结果 ” 按钮相互切换。 可以将结果以网格形式显示,查看与文本格式显示的不同。
编写程序时可以根据显示结果的不同需要,使用不同方式为局部变量声明、赋值和输出。T-SQL语言要求对局部变量的声明、赋值和输出语句必须包含在同一个批处理中,即一个批处理不能引用其他批处理中的局部变量。
5、函数
SQL Server可以将存在于数据库中的函数分为系统函数(内置函数)和用户自定义函数(表值函数(内联表值函数和多语句表值函数)、标量函数)两大类
系统函数又称内置函数,是SQL Server提供给用户直接使用而无需定义的函数。读者可以参见联机文档了解不同分类和功能的系统函数的使用规则。
标量函数 、内联表值函数和多语句表值函数用户都可以使用T-SQL语言自行创建。也可以使用“管理器”方式自定义函数。用户自定义的函数根据实现功能的不同需要,可以有带数也可以不带参数
5.1用户自定义标量函数
1. 标量函数 标量函数在被调用时返回单个数据值。在程序代码中多处需要相同计算时使用标量函数相对有效。
在“商品管理数据库”中创建一个名为“f_jhslh”标量值函数。当输入商品编号时,函数返回该商品的进货总数量。
使用函数“f_jhslh”查询“进货信息表”中每种商品的进货数量和。
需使用所有者名加函数名调用函数
5.2用户自定义内联表值函数
内联表值函数调用后返回的结果是表。该表是由单个select语句的查询结果。
在“商品管理数据库”中创建一个名为“f_proinfor”的内联表值函数,当输入商品编号时,返回商品信息。
刷新后展开“商品管理数据库”中“可编程性”节点下的“函数”节点下的“表值函数”节点,可以看到名为“f_proinfor”的函数已存在.
使用函数“f_proinfor”查询“商品信息表”中指定商品的商品信息。
5.3多语句表值函数
多语句表值函数调用后返回的结果也是表。函数体查询功能较复杂,且需要在定义函数时声明函数返回的表结构。
在“商品管理数据库”中创建一个名为“f_prosale”的多语句表值函数,当输入商品编号时,返回商品的销售信息。
刷新后展开“商品管理数据库”中“可编程性”节点下的“函数”节点下的“表值函数”节点,可以看到名为“f_prosale”的函数已存在。
使用函数“f_prosaler”查询指定商品的销售信息。