(复习笔记之数据库)数据库流程控制语句

来源:互联网 发布:js事件三个阶段 编辑:程序博客网 时间:2024/05/29 10:55

这里只是介绍BEGIN...END、IF...ELSE、CASE、WHILE这四个比较常用的流程控制语句

BEGIN...END

IF 1=1BEGINSELECT * FROM zhuisuo WHERE id=1SELECT * FROM zhuisuo WHERE id=2ENDELSE SELECT * FROM zhuisuo WHERE id=2


如果上面少了BEGIN...END就会报错,BEGIN...END就是定义语句块,BEGIN和END必须成对出现

IF...ELSE

IF 1=2SELECT * FROM zhuisuo WHERE id=1ELSE IF 1=2SELECT * FROM zhuisuo WHERE id=2ELSE SELECT * FROM zhuisuo WHERE id=3

值得注意的是IF后面是逻辑表达式,然后是语句块

CASE

SELECT * FROM zhuisuo WHERE id=CASE zhuisuo.id/1WHEN 1 THEN 1WHEN 2 THEN 2WHEN 3 THEN 3ELSE 4END
值得注意的是,CASE不是语句,它不能单独执行,而是作为语句的一部分来使用

WHILE

DECLARE @a intSET @a=1WHILE @a<3BEGININSERT INTO zhuisuo2 VALUES(15+@a,'132')SET @a=@a+1END

用法没什么特别的地方,值得注意的是可以使用BREAK和CONTINUE控制循环的流程,这表示如果WHILE里面可以灵活使用IF语句,作多重循环判断
来一个有点复杂的示例,题目是在zhuisuo表中,从id=1开始,把name改为‘修改’,直到name为‘追索5’并把‘追索5’的name改为‘完成’
DECLARE @a intSET @a=1WHILE (SELECT COUNT(id) FROM zhuisuo)>@aBEGINIF (SELECT name FROM zhuisuo WHERE id=@a)='追索5'BEGINUPDATE zhuisuo SET name='完成' WHERE id = @aBREAKENDELSEUPDATE zhuisuo SET name='修改' WHERE id = @aSET @a=@a+1END
数据库的基本就复习到先这里,当然还有运算符的使用(不必记太多,记住几个常用的,其他可以使用时查),游标的使用等等。