在这里先介绍几个和编程有管的术语。
变量:可以变化的量,存放于内存中,由变量名和变量值
常量:固定不变的量
变量的操作:先声明变量。
语法为: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=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 &#64;y<60
begin
  print &#39;不及格&#39;
end
else
begin
if &#64;y>60 and &#64;y<70
begin
 print &#39;及格&#39;
end
else
begin
 if &#64;y>71 and &#64;y<80
begin
print &#39;良好&#39;
end  
else
begin
print &#39;优秀&#39;
end
 end
 end
多分支&#xff1a;

语法为&#xff1a;

Case 字段名/变量名
When 1 then 表达式1
When 2 then 表达式2
………………..
When n then 表达式n
else 表达式m
End
1.在这里用到如下图类型的表&#xff0c;表名为shuai
Vip&#xff1a;0为游客&#xff0c;1为会员&#xff0c;2为贵宾&#xff0c;其他
用户名  身份
Gwsh   游客
Li      其他
Lch    会员
Wjl   贵宾
Wp   其他
语法为&#xff1a;
Select uname&#xff0c;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%
语法为&#xff1a;
Update yuangong set 工资&#61;
Case 工作级别
When 1 then  工资*1.08
When 2 then  工资*1.06
When3 then  工资*1.04
Else  工资*1.02
end
上调前的yuangong表如下图所示&#xff0c;
上调后的yuangong表。
二&#xff0e;循环。

语法为&#xff1a;
While 条件
Begin
Sql 语句 又称为&#xff08;循环体&#xff09;
End
1.输出1.2.3.4.5.6….100
Declare &#64;s int
Set &#64;s&#61;1
While &#64;s<100
Begin
Print &#64;s
Ser &#64;s&#61;&#64;s&#43;1
end
2.1&#43;2&#43;3&#43;4&#43;5&#43;6……&#43;99&#43;100&#61;5050
declare &#64;a int,&#64;s int
set &#64;a&#61;1
set &#64;s&#61;0
while &#64;a<&#61;100
begin
 set &#64;s&#61;&#64;s&#43;&#64;a
set &#64;a&#61;&#64;a&#43;1
end
print &#39;1&#43;2&#43;3&#43;4&#43;5&#43;6...&#43;99&#43;100&#61;&#39;&#43;cast
 (&#64;s as varchar(5))
例1.       经典案例“鸡兔同笼”

今有鸡&#xff0c;兔同笼&#xff0c;上有36个头&#xff0c;下有94爪&#xff0c;问鸡兔各有多少只。
Declare &#64;j int
Set &#64;j&#61;1
While &#64;j<&#61;36
Begin
If &#64;j*2&#43;(36-&#64;j)*4&#61;94
Begin
Print &#64;j
Print 36-&#64;j
End
Set &#64;j&#61;&#64;j&#43;1
end
例1.       现有和尚100人&#xff0c;馒头100个&#xff0c;大和尚一人吃4个&#xff0c;小和尚4个人吃一个&#xff0c;大小和尚各几个。

Declare  &#64;h int
Set &#64;h&#61;1
While &#64;h<&#61;100
Begin
If &#64;h*4&#43;(100-&#64;h)*0.25&#61;100
Begin
Print &#64;h
Print 100-&#64;h
End
Set &#64;h&#61;&#64;h&#43;1
end
例1.       水仙花数。

Declare &#64;s int,&#64;a int,&#64;b int,&#64;c int
Set &#64;s&#61;1
While &#64;s<1000
Begin
Set &#64;a&#61;&#64;s/100
Set &#64;b&#61;(&#64;s-&#64;a*100)/10
Set &#64;c&#61;&#64;s-&#64;a*100-&#64;b*10
If &#64;s&#61;&#64;c*&#64;c*&#64;c&#43;&#64;b*&#64;b*&#64;b&#43;&#64;a*&#64;a*&#64;a
Begin
Print &#64;s
End
Set &#64;s&#61;&#64;s&#43;1
end
例四.做一个正立的等腰三角形。

Declare &#64;a int,&#64;b int,&#64;s varchar(100)
Set &#64;a&#61;1
While &#64;a<&#61;4
Begin
Set &#64;b&#61;1
Set &#64;s&#61;‘’
While &#64;b<&#61;2*&#64;a-1
Begin
Set &#64;s&#61;&#64;s&#43;*
Set &#64;b&#61;&#64;b&#43;1
End
Print space(40-&#64;a)&#43;&#64;s
Set &#64;a&#61;&#64;a&#43;1
end