在这里先介绍几个和编程有管的术语。
变量:可以变化的量,存放于内存中,由变量名和变量值
常量:固定不变的量
变量的操作:先声明变量。
语法为:declare 变量名 变量类型
目的:为了在内存中分配相应的空间。
例:声明变量用于存放姓名。
Uname   可变字符型 8个字符
如:declare @uname varchar8
Sql规定:所有的用户变量必须以@开头
所有的系统变量必须以@@开头。
.常用的系统变量。
@@version 用于显示当前的sql server 版本号
例:select @@version
Sql 编程.九_sql
@@servername  用于显示当前数据库服务器的名称
select @@servername
Sql 编程.九_数据库_02
变量赋值:
Set 变量名= 或者select 变量名=
例:set @uname=‘小文’
输出变量值
Print 变量名
例:print @uname
综合起来有一个小实例。
语法为:
Declare @uname varchar(8)
Declare @score int
Set @uname=‘小文’
Set @score=90
Print @uname
Print @score
Print @uname
我相信大家能明白上面的语法是什么意思。
Sql 编程.九_职场_03
程序的三种基本执行结构。
顺序:
分支:单分支和双分支
循环:
特殊:go  to  强制跳转
.我们先来看看单分支的操作。
语法为:简单的
If 条件
Begin
Sql 语句
End
条件:只有两种结果:真和假
例如:看一个小实例,判断成绩是否及格。
Declare @score int
Set @score=60
If @score>=60
Begin
 Print ‘及格了!!!
end
Sql 编程.九_职场_04
标准的语法为:
If 条件
Begin
Print  sql  语句一
End
Else
Begin
Print   sql  语句二
End
分析:判断条件是否成立,如果成立,则执行语句一,如果不成立则执行语句二。
语句一和语句二是不可能同时执行的或也不可能同时不执行。
1:判断成绩是否及格,大于等于60及格,否则是不及格。
Declare @a int
Set @a=55
If @a>60
Begin
Print ‘不及格
End
Else
Begin
Print ‘及格了’
end
Sql 编程.九_休闲_05
2.判断成绩小于60不及格 60-70及格 71-80良好 81-100优秀。
语法为:
declare @y int
set @y=87
if @y<60
begin
  print '不及格'
end
else
begin
if @y>60 and @y<70
begin
 print '及格'
end
else
begin
 if @y>71 and @y<80
begin
print '良好'
end  
else
begin
print '优秀'
end
 end
 end
Sql 编程.九_职场_06
多分支:
语法为:
Case 字段名/变量名
When 1 then 表达式1
When 2 then 表达式2
………………..
When n then 表达式n
else 表达式m
End
1.在这里用到如下图类型的表,表名为shuai
Sql 编程.九_数据库_07
Vip0为游客,1为会员,2为贵宾,其他
用户名  身份
Gwsh   游客
Li      其他
Lch    会员
Wjl   贵宾
Wp   其他
语法为:
Select unamecase vip
When 0 then  ‘游客’
When 1 then   ‘会员’
When 2 then   ‘贵宾’
Else ‘其他’
End as guo from shuai
Sql 编程.九_数据库_08
2.按级别上调工资。用yuangong表那个类型的。
级别1 高级工程师 上调8%
级别2 普通工程师 上调6%
级别3 员工  上调4%
其它  上调2%
语法为:
Update yuangong set 工资=
Case 工作级别
When 1 then  工资*1.08
When 2 then  工资*1.06
When3 then  工资*1.04
Else  工资*1.02
end
上调前的yuangong表如下图所示,
Sql 编程.九_休闲_09
Sql 编程.九_职场_10
上调后的yuangong表。
Sql 编程.九_sql_11
二.循环。
语法为:
While 条件
Begin
Sql 语句 又称为(循环体)
End
1.输出1.2.3.4.5.6….100
Declare @s int
Set @s=1
While @s<100
Begin
Print @s
Ser @s=@s+1
end
Sql 编程.九_职场_12
2.1+2+3+4+5+6……+99+100=5050
declare @a int,@s int
set @a=1
set @s=0
while @a<=100
begin
 set @s=@s+@a
set @a=@a+1
end
print '1+2+3+4+5+6...+99+100='+cast
 (@s as varchar(5))
Sql 编程.九_职场_13
例1.       经典案例“鸡兔同笼”
今有鸡,兔同笼,上有36个头,下有94爪,问鸡兔各有多少只。
Declare @j int
Set @j=1
While @j<=36
Begin
If @j*2+(36-@j)*4=94
Begin
Print @j
Print 36-@j
End
Set @j=@j+1
end
Sql 编程.九_职场_14
例1.       现有和尚100人,馒头100个,大和尚一人吃4个,小和尚4个人吃一个,大小和尚各几个。
Declare  @h int
Set @h=1
While @h<=100
Begin
Begin
Print @h
Print 100-@h
End
Set @h=@h+1
end
Sql 编程.九_休闲_15
例1.       水仙花数。
Declare @s int,@a int,@b int,@c int
Set @s=1
While @s<1000
Begin
Set @a=@s/100
Set @b=(@s-@a*100)/10
Set @c=@s-@a*100-@b*10
If @s=@c*@c*@c+@b*@b*@b+@a*@a*@a
Begin
Print @s
End
Set @s=@s+1
end
Sql 编程.九_职场_16
例四.做一个正立的等腰三角形。
Declare @a int,@b int,@s varchar(100)
Set @a=1
While @a<=4
Begin
Set @b=1
Set @s=‘’
While @b<=2*@a-1
Begin
Set @s=@s+*
Set @b=@b+1
End
Print space(40-@a)+@s
Set @a=@a+1
end
Sql 编程.九_休闲_17