1.T-SQL 语言简介
SQL Server 使用的语言称作 Transact-SQL, 它不仅包括基本 SQL 操作的内容,如 SQL 的数据查询功能和数据操作功能等,还有一般程序设计的能力。
2. 局部变量和全局变量的概念
1)局部变量
局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。局部变量被引用时要在其名称前加上标志“@”,而且必须先用 DECLARE 命令定义后才可以使用。
定义局部变量的语法形式如下:
DECLAER {@local_variable data_type} […n]
参 数 @local_variable 用于指定局部变量的名称,变量名必须以符号@开头。
参数 data_type 用于设置局部变量的数据类型及其大小。
使用 DECLARE 命令声明并创建局部变量之后,会将其初始值设为 NULL, 如果想要设定局部变量的值,必须使用SELECT 命令或者 SET 命令。其语法形式为:
SET{(@local_variable=expression }或者 SELECT{@local_variable=expression}[ ,…n ]
参 数 @local_variable 是给其赋值并声明的局部变量。
参数 expression 是任何有效的 SQL Server 表达式。
2)全局变量
除了局部变量之外,SQL Server系统本身还提供了一些全局变量。全局变量是 SQL Server 系统内部使用的变量,其作用范围并不仅仅局限于某一程序,而是任何程序均可以随时调用。全局变量通常存储一些 SQL Server 的配置设定值和统计数据。用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL 命令执行后的状态值。
在使用全局变量时应该注意以下几点
(1)全局变量不是由用户的程序定义的,它们是在服务器级定义的。
(2)用户只能使用预先定义的全局变量。
(3)引用全局变量时,必须以标记符“@@”开头。
(4)局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。
3. 系统函数的使用
SQI,Server 2005给用户提供了功能全面、种类丰富的函数,常用的函数可以分为以下 几类:
1)行集函数
行集函数是返回值为对象的函数,该对象可在T-SQL.语句中作为表引用。所有行集函数都是非确定的,即每次用一组特定参数调用它们时,所返回的结果不总是相同的。
2)聚合函数
聚合函数对一组值操作,返回单一的汇总值。常用的聚合函数如表1-4所示。函数在如下情况下,允许作为表达式使用。
(1)SELECT 语句的选择列表(子查询或外部查询),
(2)COMPUTE 或 COMPUTE BY子句。
(3)HAVING 子句。
3)Ranking 函数
Ranking 函数为查询结果数据集分区中的每一行,并返回一个序列值。依据此函数, 一些行可能取得和其他行一样的序列值。
4)标量函数
标量函数用于对传递给它的一个或者多个参数值进行处理和计算,并返回一个单一的值。
常用的标量函数有如下几类:
(1)字符串函数
① 基本字符串函数
UPPER(): 将小写字母转换成大写字母。
LOWER(): 把大写字母转换成小写字母。
SPACE(): 产生空格字符串。
REPLICATE(): 重复一个字符表达式若干次
STUFF(): 用一个子串按规定取代另一个子串。
REVERSE(): 取字符串的逆序。
LTRIM(): 删除字符串的前导空格。
RTRIM(): 删除字符串的尾部空格。
② 字符串查找函数
CHARINDEX(): 返回一个子串在字符串表达式中的起始位置。
PATINDEX(): 返回一个子串在字符串表达式中的起始位置,在子串中可以使用通配符“%”。
③ 长度和分析函数
DATALENGTH(): 返回字符串的长度。
SUBSTRING(): 取子串函数。
RIGHT(): 从字符串的右部取子串。
④ 转换函数
ASCI(): 返回字符串表达式最左面字符的 ASCIⅡ码值。
CHAR(): 把一个表示 ASCIⅡ代码的数值转换成对应的字符。
STR(): 将数值转换成字符串。
SOUNDEX(): 返回两个字符串发音的匹配程度。
DIFFERENCE(): 返回两个字符串的匹配程序。
(2)日期时间函数
DATEADD(): 在一个日期值上加上一个间隔,返回值是 datetime。
DATEDIFF(): 计算两个日期值之间的间隔,返回值是一个整数。
DATENAME(): 返回表示日期中某部分的字符串。
DATEPART(): 返回表示日期中某部分的数值。
DAY(): 返回指定日期的天数。
GETDATE(): 返回当前的日期和时间。
MONTH(): 返回指定日期的月份数。
YEAR(): 返回指定日期的年份数。
(3)数学函数
数学函数用于对数字表达式进行数学运算并返回运算结果。数学函数可以对SQL Server 提供的数字数据(decimal、integer、float 、real 、money 、smallmoney 、smallint 和 tinyint) 进行处理。
(4)系统函数
系统函数用于返回有关 SQL Server 系统、用户、数据库和数据库对象的信息。系统函 数可以让用户在得到信息后,使用条件语句,根据返回的信息进行不同的操作。与其他函数一样,可以在 SELECT 语句的 SELECT 和 WHERE 子句以及表达式中使用系统函数。
系统函数中有两个转换函数: CONVERT 和 CAST。
CAST 函数允许把一个数据类型强制转换为另一种数据类型,其语法形式为:
CAST(expression AS data_type)
CONVERT 函数允许用户把表达式从一种数据类型转换成另一种数据类型,还允许把日期转换成不同的样式,其语法形式为:
CONVERT (data_type [ (length)] ,expression [,style])
4. 流程控制语句的使用
流程控制语言是T-SQL 对 ANSI-92 SQL标准的扩充。它可以控制SQL 语句执行的顺序,在存储过程、触发器和批中很有用。流程控制语言主要包括:
·IF…ELSE 语句:条件判断语句。
·BEGIN…END 语句:将一组 SQL 语句作为一个语句块。
·GO 语句:是批的结束语句。
·CASE 语句:多条件分支选择语句。
·WHILE…CONTINUE…BREAK 语句:用于设置重复执行 SQL 语句或语句块的条件。
·GOTO 语句:无条件转移语句。
·WAITFOR 语句:用于暂时停止执行 SQL 语句、语句块或者存储过程等。
·RETURN 语句:无条件返回语句。