在这里先介绍几个和编程有管的术语。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
变量:
可以变化的量,存放于内存中,由变量名和变量值
常量:
固定不变的量
变量的操作:
先声明变量。
语法为:
declare
变量名
变量类型
目的:
为了在内存中分配相应的空间。
例:声明变量用于存放姓名。
Uname
可变字符型
8
个字符
如:
declare @uname varchar
(
8
)
Sql
规定:所有的用户变量必须以
@
开头
所有的系统变量必须以
@@
开头。
一
.
常用的系统变量。
@@version
用于显示当前的
sql server
版本号
例:
select @@version

@@servername
用于显示当前数据库服务器的名称
例
select @@servername

变量赋值:
Set
变量名
=
值
或者
select
变量名
=
值
例:
set @uname=
‘小文’
输出变量值
Print
变量名
例:
print @uname
综合起来有一个小实例。
语法为:
Declare @uname varchar(8)
Declare @score int
Set @uname=
‘小文’
Set @score=
‘<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />
90
’
Print @uname
Print @score
Print @uname
我相信大家能明白上面的语法是什么意思。

程序的三种基本执行结构。
顺序:
分支:单分支和双分支
循环:
特殊:
go to
强制跳转
一
.
我们先来看看单分支的操作。
语法为:简单的
If
条件
Begin
Sql
语句
End
条件:只有两种结果:真和假
例如:看一个小实例,判断成绩是否及格。
Declare @score int
Set @score=60
If @score>=60
Begin
Print ‘
及格了!!!
’
end

标准的语法为:
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

例
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

多分支:
语法为:
Case
字段名
/
变量名
When
值
1 then
表达式
1
When
值
2 then
表达式
2
………………..
When
值
n then
表达式
n
【
else
表达式
m
】
End
例
1.
在这里用到如下图类型的表,表名为
shuai

Vip
:
0
为游客,
1
为会员,
2
为贵宾,其他
用户名
身份
Gwsh
游客
Li
其他
Lch
会员
Wjl
贵宾
Wp
其他
语法为:
Select uname
,
case vip
When 0 then
‘游客’
When 1 then
‘会员’
When 2 then
‘贵宾’
Else
‘其他’
End as guo from shuai

例
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
表如下图所示,


上调后的
yuangong
表。

二.循环。
语法为:
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

例
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))

例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

例1.
现有和尚
100
人,馒头
100
个,大和尚一人吃
4
个,小和尚
4
个人吃一个,大小和尚各几个。
Declare @h int
Set @h=1
While @h<=100
Begin
If @h*4+(100-@h)*0.25=100
Begin
Print @h
Print 100-@h
End
Set @h=@h+1
end

例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

例四
.
做一个正立的等腰三角形。
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

转载于:https://blog.51cto.com/guoweishuai/245466