1.流程控制结构分类
a.顺序结构 程序自上而下执行代码
b.分支结构 程序有至少两条路径,从中选择一条路径执行
c.循环结构 程序在满足一定条件的基础上,循环执行
2.if函数
if(表达式1,1为true执行表达式2,1为false执行表达式3)
3.case结构
a.类似java中switch语句,等值判断
case 变量/字段/表达式
when 判断的条件 then 返回值
when 判断的条件 then 返回值
...
else 返回值
end;
case 变量/字段/表达式
when 判断的条件 then 语句;
when 判断的条件 then 语句;
...
else 语句;
end case;
b.类似java中多重if语句,区间判断
case
when 判断条件 then 返回值
when 判断条件 then 返回值
...
else 返回值
end;
case
when 判断条件 then 语句
when 判断条件 then 语句
...
else 语句
end case;
注意:
case作为表达式,嵌套在其他语句中使用,可在任何位置;作为独立的语句,必须在 begin end中
例:
/*创建存储过程,给成绩分区间*/
delimiter $
create procedure grade_p (in score tinyint)
begin
/*case作为独立的语句*/
case
when score<=100 && score>=90 then select 'A';
when score>=70 then select 'B';
else select 'c';
end case ;
end $
call grade_p(79)$
4.if结构
if结构实现多重分支
语法
if 条件1 then 语句1;
elseif 条件2 then 语句2;
...
[else 语句n;]
end if;
在begin end中,即存储过程 函数中使用
/*给成绩划分等级,返回*/
delimiter $
create function grade_f(score tinyint) returns char(1)
begin
if score>90 && score<=100 then return 'a';
elseif score>=70 then return 'b';
else return 'c';
end if;
end $
select grade_f(70) $
5.循环
分类:
while loop repeat
循环控制
iterate 类似于continue 结束本次循环,继续下一次循环
leave 类似于break 跳出循环
a. while
[标签:] while 循环条件 do 循环体;
end while [标签];
可能执行0次
b. loop
[标签:] loop 循环体;
end loop [标签];
模拟死循环
c.repeat
[标签:] repeat 循环体;
until 循环结束条件
end repeat [标签];
至少执行一次
例:
delimiter $
create procedure insert_p (in time int )
begin
declare temp int default 1;
m: while temp<=time do
insert into major (id, majorName) values (temp,'fgh');
set temp=temp+1;
end while m ;
end $
call insert_p(100)$
添加leave
delimiter $
create procedure insert_p (in time int )
begin
declare temp int default 1;
m: while temp<=time do
insert into major (id, majorName) values (temp,'fgh');
set temp=temp+1;
if temp>=20 then leave m;
end if;
end while m ;
end $
call insert_p(100)$
跳过偶数执行
delimiter $
create procedure insert_p (in time int )
begin
declare temp int default 0;
m: while temp<time do
set temp=temp+1;
if mod (temp,2)=0 then iterate m;
end if;
insert into major (id, majorName) values (temp,'fgh');
end while m ;
end $
call insert_p(100)$