T-SQL中逻辑控制语句在很多时候都有运用,它大大的加强了SQL语句的使用范围和处理能力,下面就简单介绍一下这些逻辑语句。
逻辑控制语句
一 IF-ELSE条件语句
语法:IF()
语句或语句块
ELSE
语句或语句块
若有多条语句,则使用语句块,语句块使用BEGIN...END表示,其作用相当于Java语句的“{}”符号。
IF()
BEGIN
语句1
语句1
.....
END
ELSE
如我们运用比较多的判断数据库或者表是否存在:
use master
go
if exists(select * from sysdatabases where name = '数据库名')
drop database 数据库名
go
还有例如从成绩表TScore中查询,本班的平均分数在70分以上,则显示“成绩优秀”显示前3名的考试信息;否则显示“成绩较差”并显示后3名的考试信息。
declare @myavg float
select @myavg = avg(score) from TScore
print '本班平均分'+convert(varchar(5),@myavg)
if(@myavg > 70)
begin
print '本班成绩优秀,前三名成绩为:'
select top 3 * from TScore order by score desc
end
else
begin
print '本班成绩较差,后三名成绩为:'
select top 3 * from TScore order by score
end
二:CASE 多分支语句:相当于多重if语句
语法:
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
[ELSE 其他结果]
END
例如:成绩表TScore中,用等级来评成绩分数。A:90分以上,B:80~89,C:60~79,D:60分以下,并显示他们的学号stuNO。
代码:select stuNO,成绩 = CASE
when score >= 90 then 'A'
when score between 80 and 89 then 'B'
when score between 60 and 79 then 'C'
else 'D'
end from TScore
三: WHILE 循环语句 :在循环语句中使用continue和break关键字来控制语句的执行。
语法:
WHILE(条件)
语句或语句块
[BREAK]
使用break关键字从最内层的while循环中退出。
例如本次考试成绩较差,要提分,确保每人的成绩都通过,提分规则,先给每人加2分,看是否通过,如没有全通过,继续加2分,直到每人都通过为止。
declare @n int
while(1=1)
begin
select @n = count(*) from TScore where score < 60
if(@n > 0)
update TScore set score = score + 2
else
break
end