下面就T-SQL的几个方面来分别讲解一下。
1、变量
要动态的写sql语句,就不能没有变量。
声明变量并赋值:
1 declare @i as int;--定义一个 int 类型的 变量 (as可以省略) 2 print @i;--这注意:没有赋值之前,程序不会报错,而且输出一个 空 3 set @i=3; 4 print @i;
在sql server 2008之后就可以对变量 在声明的同时进行赋值
1 declare @a int=3; 2 print @a;
在变量的使用过程中,一定要注意nvarcahr 和nchar的区别。
1 declare @s nvarchar(20); 2 set @s='Hello'; 3 set @s=@s+' World!'; 4 print @s;--输出的是 Hello World! 5 6 declare @s2 nchar(20); 7 set @s2='Hello'; 8 set @s2=@s2+' World!'; 9 print @s2;--输出的是 Hello。
为什么使用nchar却是输出的 Hello,因为:nchar是固定长度,即使长度没有达到最大,但是其余长度用 空来代替了,所以 相当于是满的,所以在进行字符串的相加 是不会起作用的。
在查询中赋值:
1 declare @now datetime; 2 select @now=GETDATE(); 3 print @now; 4 declare @orderNum int; 5 select @orderNum = COUNT(1) from [Sales.Orders];--这条查询语句只是用来 对 变量进行赋值的,不会返回查询结果的. 6 print @orderNum;
主要作用:是将查询结果保存在 变量里,为了下面的使用。
其实也可以使用 set 赋值的方式 实现 上面的作用
1 set @orderNum =(select COUNT(1) from [Sales.Orders]) 2 print @orderNum
2、批处理
使用“go”,go前面的 所有的 语句处于在一个 批里面。不同批 的变量是不能互相调用。
3、流程控制
1)条件控制
1 declare @minute int ; 2 set @minute =DATEPART(minute,getdate()); 3 if @minute>20 4 begin--一条语句可以将 begin end 省略 5 print '马上睡觉'; 6 end 7 else 8 print '继续快乐玩耍';