在这里先介绍几个和编程有管的术语。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

变量: 可以变化的量,存放于内存中,由变量名和变量值

常量: 固定不变的量

变量的操作: 先声明变量。

语法为: declare 变量名 变量类型

目的: 为了在内存中分配相应的空间。

例:声明变量用于存放姓名。

Uname   可变字符型 8 个字符

如: declare @uname varchar ( 8 )

Sql 规定:所有的用户变量必须以 @ 开头

所有的系统变量必须以 @@ 开头。

一 . 常用的系统变量。

@@version 用于显示当前的 sql server 版本号

例: select @@version

sql server 变量作为表名 sql中什么是变量名_变量名

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

例 select @@servername

sql server 变量作为表名 sql中什么是变量名_变量名_02

变量赋值:

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

我相信大家能明白上面的语法是什么意思。

sql server 变量作为表名 sql中什么是变量名_sql_03

程序的三种基本执行结构。

顺序:

分支:单分支和双分支

循环:

特殊: go  to  强制跳转

一 . 我们先来看看单分支的操作。

语法为:简单的

If 条件

Begin

Sql 语句

End

条件:只有两种结果:真和假

例如:看一个小实例,判断成绩是否及格。

Declare @score int

Set @score=60

If @score>=60

Begin

 Print ‘ 及格了!!! ’

end

sql server 变量作为表名 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 server 变量作为表名 sql中什么是变量名_sql server 变量作为表名_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 server 变量作为表名 sql中什么是变量名_sql_06

多分支:

语法为:

Case 字段名 / 变量名

When 值 1 then 表达式 1

When 值 2 then 表达式 2

………………..

When 值 n then 表达式 n

【 else 表达式 m 】

End

例 1. 在这里用到如下图类型的表,表名为 shuai

sql server 变量作为表名 sql中什么是变量名_变量名_07

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

sql server 变量作为表名 sql中什么是变量名_sql server 变量作为表名_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 server 变量作为表名 sql中什么是变量名_sql_09

sql server 变量作为表名 sql中什么是变量名_数据库_10

上调后的 yuangong 表。

sql server 变量作为表名 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 server 变量作为表名 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 server 变量作为表名 sql中什么是变量名_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 server 变量作为表名 sql中什么是变量名_变量名_14

例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

sql server 变量作为表名 sql中什么是变量名_sql server 变量作为表名_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 server 变量作为表名 sql中什么是变量名_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 server 变量作为表名 sql中什么是变量名_数据库_17

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