其中,规则标识符严格遵守标识符的有关格式的规定,所以在Transact_SQL中凡是规则运算符都不必使用定界符。对于不符合标识符格式的标识符要使用界定符[]或‘’。
1)标识符必须是统一码(Unicode)2.0标准中规定的字符,包括26个英文字母a-z和A-Z,以及其他一些语言字符,如汉字。
2)标识符后的字符可以是“_”、“@”、“#”、“$”及数字。
3)标识符不允许是Transact-SQL的保留字。
4)标识符内不允许有空格和特殊字符。
5)标识符不区分大小写。以“@”开头的标识符表示这是一个局部变量或是一个函数的参数;以#开头的标识符表示这是一个临时表或是一存储过程。
以“##”开头的表示这是一个全局的临时数据库对象。
Transact-SQL的全局变量以“@@”开头。
无论是界定标识符还是规则标识符都最多只能容纳128个字符,对于本地的临时表最多可以有116个字符。
定义变量@sum为int类型:DECLARE@sumint
定义变量@sname为nvarchar(10)类型,定义变量@snum为int类型:DECLARE @sname nvarchar(10),@snumint
局部变量在赋值之前,默认为NULL。
如果在程序中引用它,必须要先为其赋值。
(1)用SET语句给局部变量赋值
SET @局部变量名 =变量值
(2)在查询语句SELECT中给局部变量赋值
SELECT{@局部变量名 =变量值}[,…n]
局部变量的输出:
语句块的界定,相当于C语言中的“{ }”
BEGIN
{
sql_statement |statement_block
}
END
注意:BEGIN和END语句必须成对使用
多条件分支选择 CASE
CASE具有以下两种格式:
(1)简单表达式,将某个表达式与一组简单表达式进行比较以确定结果。
(2)选择表达式,计算一组布尔表达式以确定结果。
(1)简单表达式
CASE input_expression
WHEN… THEN…
[ ...n ]
[ ELSE… ]
END
<span style="color:#000000;">SELECT [姓名],
CASE
WHEN [入学时间]=1 THEN 'NAN'
WHEN [入学时间]=2 THEN 'NV'
ELSE 'NUZHIDAO'
END
FROM [dbo].[软件1405——406$]</span>
2)选择表达式
CASE
WHEN… THEN…
[ ...n ]
[ ELSE… ]
END
<span style="color:#000000;">SELECT [姓名],
CASE [入学时间]
WHEN '2014' THEN 'NAN'
WHEN '2' THEN 'NV'
ELSE 'NUZHIDAO'
END
FROM [dbo].[软件1405——406$]</span>
<span style="color:#000000;">DECLARE @SUM100 INT, @i INT
SET @SUM100=0
SET @i=0
WHILE @i<=100
BEGIN
SET @SUM100=@SUM100+@i
SET @i=@i+1
END
PRINT @SUM100
</span>
GOTO语句将程序无条件地转到相应的标签的语句:
DECLARE@sum100 int,@iint
SELECT@ sum100=0,@i=0
My_Loop: --标签要符合命名规则,并且有“:”
SET @sum100=@sum100+@i
SET @i=@i+1
IF @i<=100
GOTO My_Loop
PRINT @sum100
不利于程序阅读,不符合结构化程序的三种思想,因此不提倡用GOTO语句
WAITFOR语句可以将它之后的语句在一个指定的时间间隔之后执行,或在未来的某一指定时间执行。
WAITFOR {DELAY‘延时时间’ |TIME ‘到达时间’}
WAITFORDELAY '0:00:05' --必须是datetime数据类型,但不能包含日期部分,不超过24小时
PRINT ‘时间到!’
WAITFORTIME ‘20:00:00' --必须是datetime数据类型,但不能包含日期部分
PRINT ‘下课喽!’
WAITFOR DELAY '0:00:05'
PRINT '时间到!'