目录
前言
T-SQL 提供称为流程控制的特殊关键字,用于控制 T-SQL 语句、语句块 和存储过程的执行流。在数据库开发过程中,函数和游标起着很重要的作用,函数是由一个或多个 T-SQL 语句组成的子程序,可用于封装代码以便重复使用;游标是一种能从包含多条数据记录的结果集中每次提取一条记录的机制。
一、标识符
1、常规标识符
常规标识符格式规则:
- 常规标识符必须以汉字、英文字母、下划线、@或#开头,后续字符可以是:汉字、英文字母、基本拉丁字符或十进制数字、下划线、@或#。
- 常规标识符不能是 SQL SERVER 保留字,SQL SERVER 保留不区分大小写。
- 常规标识符最长不能超过128个字符。
2、分隔标识符
符合所有常规标识符格式规则的标识符可以使用分隔标识符,也可以不使用分隔标识符。不符合常规标识符格式规则的标识符必须使用分隔标识符。
在下面情况中,需要使用分隔标识符。
- 使用保留关键字作为对象名或对象名的一部分。
- 标识符的命名不符合常规标识符的规则。
二、变量
1.、变量的分类
变量可以分为局部变量 和全局变量。
- 全局变量
全局变量由系统提供且预先声明,通过在名称前面加两个 @ 符号区别于局部变量。用户只能使用全局变量,不能对它们进行修改,全局变量的作用范围是真个 SQL SERVER系统,任何程序都可以随时调用。
- 局部变量
变量是一种程序设计语言中必不可少的组成部分,可以用它保存程序运行的中间值,也可以在语句之间传递数据,
2、局部变量
在 T-SQL 中的变量在定义和引用时要在其名称前面加上标志 @,而且必须先用 DECLARE命令定义后才能使用。
-- 变量定义语法格式
DECLARE { @local_variable data_type } [ , ... n ]
在给变量赋值之前,不想先声明变量。
-- 局部变量赋值语法格式
-- 方法一:使用 SET 命令
SET @local_variable = expression
-- 方法二:使用 SELECT 命令
SELECT { @local_variable = expression } [ , ... n ]
一个局部变量的作用范围,就是从声明它的地方开始,一直到它们的批处理结束或者存储过程的结尾。换句话说就是,局部变量只能在声明它们的批处理或存储过程中使用,一旦这些批处理或存储过程结束,局部变量将自动清除。
三、运算符
1、算术运算符
- 算术运算符包括 加(+)、减(-)、乘(*)、除(/)和取模(%)。
- 对于取模运算符,要求进行计算的数据的类型为 int、smallint 和 tinyint,完成的功能是返回一个除法运算的整数余数。
2、赋值运算符
T-SQL中,只有一个赋值运算符,即等号( = )。
3、位运算符
位运算符包括 按位与( & )、按位或( | )、按位异或( ^ )。
位运算符用来在整形数据或二进制数据(image数据类型除外)之间执行位操作。要求在位运算符左右两侧的操作数不能同时是二进制数据。
运算符 | 运算规则 |
& | 两个位均为 1时,结果为 1,否则为 0 |
| | 只要一个位为 1,结果为 1,否则为 0 |
^ | 两个位值不同时,结果为 1,否则为 0 |
4、比较运算符
比较运算符,又称关系运算符,用于测试两个表达式的值是否相等,其运算结果为逻辑值,可以为三种之一:TRUE、FALSE、UNKNOWN( NULL 数据参与运算时)。
运算符 | 含义 | 运算符 | 含义 |
= | 相等 | <= | 小于等于 |
> | 大于 | <>、!= | 不等于 |
< | 小于 | !> | 不大于 |
>= | 大于等于 | !< | 不小于 |
5、逻辑运算符
逻辑运算符,与比较运算符一样,返回带有 TRUE 或 FALSE 的 Boolean数据类型,或 UNKNOWN 值。
运算符 | 含义 |
ALL | 如果一组的比较都为 TRUE,那么为 TRUE |
AND 或 && | 如果两个布尔表达式都为 TRUE,那么为 TRUE |
ANY 或 SOME | 如果一组的比较中任何一个为 TRUE,那么为 TRUE |
BETWEEN | 如果操作数在某个范围之内,那么为 TRUE |
EXISTS | 如果子查询存在一行,那么为 TRUE |
IN | 如果操作数等于表达式列表中的一个,那么为 TRUE |
LIKE | 如果操作数与一种模式相匹配,那么为 TRUE |
NOT 或 ! | 对任何其它布尔运算符的值取反 |
OR 或 | | 如果两个布尔表达式中的一个为 TRUE,那么为 TRUE |
6、字符串连接运算符
连接运算符( + ),用于两个字符串数据的连接,通常也称为字符串运算符。
在 SQL SERVER 中,对字符串的其它操作通过字符串函数进行。字符串连接运算符的操作数类型有 char、varchar、nchar、nvarchar、text、ntext等。
7、一元运算符
一元运算符只对一个表达式执行操作,该表达式可以时数值类型中的任何一种数据类型。具体为:+(正),数值为正;-(负),数值为负;~(位非),返回数组的非。其中 +(正)和 -(负)运算符可以用于数值数据类型中的任一数据类型表达式。~(位非)运算符只能用于整数数据类型中任一数据类型的表达式。
8、运算符优先等级和结合性
运算符 | 运算类型 | 结合性 | 运算符 | 运算类型 | 结合性 |
( ) | 表达式 | 从左到右 | & | 位与 | 从左到右 |
-,!,~ | 一元 | 从右到左 | ^ | 位异或 | 从左到右 |
cast as |
一元 | 从右到左 | | | 位非 | 从左到右 |
*,/,% | 乘法性的 | 从左到右 | && | 逻辑与 | 从左到右 |
+,- | 加法性 | 从左到右 | || | 逻辑或 | 从左到右 |
<,>,<=,>= | 关系 | 从左到右 | ?: | 条件表达式 | 从右到左 |
==,!= | 等式 | 从左到右 |
四、批处理
批处理是包含一个或多个 T-SQL 语句的集合,从应用程序一次性发送到 SQL SERVER 进行执行,因此可以节省系统开销。SQL SERVER 将批处理的语句编译为一个可执行单元,称为执行计划,批处理的结束符为 GO。
编译错误(如语法错误)可使执行计划无法编译,因此不会执行批处理中的任一条语句。
运行时错误(如算术溢出或违反约束)会产生以下两种影响。
- 大多数运行时错误将停止执行批处理中当前语句和它之后的语句。
- 某些运行时错误(如违反约束)进停止执行当前语句,而继续执行批处理中的其它所有语句。
在遇到运行时错误,之前执行的语句不受影响。唯一的列外是,如果批处理在事务中而且导致事务回滚,在这种情况下,回滚运行时错误之前所进行的未提交的数据修改。
五、注释
注释,也成为注解,是写在程序代码中的说明性文字,它们对程序的结构及功能进行文字说明。注释内容不会被系统编译,也不被程序执行。
T-SQL 中的两种注释:
- ANSI 标准的注释符 ‘ -- ’,用于单行注释。
- 与 C语言相同的程序注释符,即 ' /* ··· */ ' 。
批处理中的注释,没有最大长度的限制,一条注释可以包含一行或多行。