一 使用变量
  变量是可以存储数据值的对象,SQL中的变量分为局部变量和全局变量。局部变量的使用是先声明,再赋值。全局变量由系统定义和维护可以直接使用。
 
1 局部变量
  局部变量的名称必须以@标记作为前缀
 语法:declare @变量名 数据类型

 局部变量的赋值有两种方法:使用SET语句或select语句.

语法:Set @variable_name = value 或者 select @variable_name =value

Set 赋值语句一般用于赋给变量指定的数据常量,
select赋值语句一般用于从表中查询数据,然后在赋给变量。
注:Select语句需要确保筛选的记录不多于一条,否则把最后一条记录的值赋给变量。

例句:
declare @name varchar(8)
set @name='小白'
select * from stuinfo where stuname=@name
declare @stuno int
select @stuno=stuno from stuinfo where stuname=@name
select * from stuinfo where stuno=@stuno+1 or stuno=@stuno-1
 
2 全局变量
  Sql server 中的所有全局变量都使用两个@标志作为前缀。
 
变量    含义      
@@error    最后一个sql错误的错误号      
@@language    当前使用的语言名称      
@@connections    Sql Server自上次启动以来尝试的连接数      
@@max_connections    可以创建的同时连接的最大数目      
@@rowcount    受上一个sql语句影响的行数      
@@servername    本地服务器名称      
@@servicename     该计算机上的sql 服务名称      
@@version    Sql server的版本信息     

二 输出语句
 输出语句用来显示处理的数据结果,常用的输出语句有两种。
语法: print  局部变量或字符串
       Select 局部变量as自定义列名

 第二种方法也就是查询语句的特殊应用
例句:
print '服务器名称:'+@@servername
select @@servername as 服务器名称

三 逻辑控制语句
 1 if else 条件语句
 语法: if 条件
          语句或语句块
        Else
          语句或语句块
 如果有多条语句,需要使用语句块,语句块使用begin..end表示

declare @avgage float;
select @avgAge=avg(stuage) from stuinfo
 if (@avgage>20)
   begin
    print '平均年龄大于岁,年龄最大的为'
    select top 1 stuname from stuinfo order by stuage desc
   end
 else
   begin
    print '平均年龄不到岁,年龄最小的为'
    select top 1 stuname from stuinfo order by stuage
   end

2 while循环语句
 While循环语句可以根据某些条件重复执行一条sql语句或一个语句块,通过使用while关键字,可以确保只要指定的条件为true,就会重复执行语句,可以在while循环中使用continue和break关键字来控制语句的执行。
 语法:while  (条件)
          语句或语句块
         [break]
   使用break关键字从最内层的while循环中退出

declare @avgage float,@avg int;
select @avgage = avg(stuage) from stuinfo
 while (@avgage < 25)
      begin
        select @avg=count(*) from stuinfo where stuage < 25
        if @avg > 0
           update stuinfo set stuage=stuage+1
        else
         break
  end
go
select avg(stuage) from stuInfo

3 case多分支语句
 语法:case
           When 条件1 then 结果1
           When 条件2 then 结果2
           Else
      End

select * from stuinfo;
select stuname,stuage = case
        when stuage < 18 then '未成年'
        when stuage between 18 and 20 then '年轻人'
        when stuage >25 then '中年人'
       end
from stuinfo
 
4 批处理语句
 批处理语句是一条或多条sql 语句的集合,sql server 将批处理语句编译成一个可执行单元,此单元称为执行计划。一般将一些逻辑相关的操作语句放在同一批语句中,以GO关键字标志着批处理的结束,GO不是sql语句,它可以由任何用户执行。