MySQL基础总结(八) 结构控制

你离开我真会死。 提交于 2019-12-18 10:05:28

MySQL基础总结(八)
控制结构

控制结构

分支结构

if函数

语法

if(<表达式>,<表达式正确返回的值>,<表达式错误返回的值>)
case

语法 1 用于实现等值判断

case <变量|表达式|字段>
when <要判断的值1> then <返回的值1或执行的语句1>;
when <要判断的值2> then <返回的值2或执行的语句2>;
when <要判断的值3> then <返回的值3或执行的语句3>;
...
when <要判断的值n> then <返回的值n或执行的语句n>;
else <如果都不满足返回的值或者执行的语句>
end case;

语法 2

case <变量|表达式|字段>
when <要判断的条件1> then <返回的值1或执行的语句1>;
when <要判断的条件2> then <返回的值2或执行的语句2>;
when <要判断的条件3> then <返回的值3或执行的语句3>;
...
when <要判断的条件n> then <返回的值n或执行的语句n>;
else <如果都不满足返回的值或者执行的语句>
end case;

注意

_1. case语句可以作为表达式嵌套在其他语句中使用,也可以放在任何地方(如begin end中或外)

2. 也可以作为独立的语句去使用,但是只能放在begin end

3. else可以省略,定时如果省略else,when中的语句又没有匹配成功,就返回null

举例 创建存储过程,根据传入的成绩来显示等级

delimiter $
create procedure level(in  score int)
begin
	case 
	when score<=100 and score>=90 then select 'A';
	when score<90 and score>=80 then select 'B';
	when score<80 and score>70 then select 'C';
	when score<70 and score>=60 then select 'D';
	else select 'E';
	end case;
end $

测试

call level(55)$
call level(75)$
if结构(注意不是if函数)

语法

if <条件1> then <语句1>;
elseif <条件2> then <语句2>;
elseif <条件3> then <条件3>;
...
elseif <条件n> then <条件n>;
else <语句>;
end if;

注意

1. else可以省略

2. if结构只能应用在begin end

举例 根据传入的成绩来显示等级

delimiter $
create function level(score int) returns char(1)
begin
	if score<=100 and score >=90 then select 'A';
	elseif score<=100 and score >=90 then return 'B';
	elseif score<=100 and score >=90 then return 'C';
	elseif score<=100 and score >=90 then return 'D';
	else return 'E';
	end if;
end $

测试

select level(80)$
select level(30)$

循环结构

注意

所有的循环结构都可以添加一个标签,也可以不加,但是如果使用了跳出语句,必须加一个标签

while

先判断,再执行

语法

[标签:]while <循环条件> do
	<循环体>;
end while [标签];

举例 1 批量插入

delimiter $
create procedure while_insert(in insertCount int)
begin
	declare i int default 1;
	while i<=insertCount do
		insert into user(username,password) values(concat('user',i),'123456');
		set i=i+i;
	end while;
end $

测试

call while_insert(100)$
loop

没有结束条件,一直循环下去,只能通过跳出语句结束循环,可以用来模拟死循环

语法

[标签:] loop
	<循环体>;
end loop [标签];
repeat

先执行一次,然后再判断条件,类似于 do…while…

语法

[标签:] repeat
	<循环体>;
until <结束循环的条件>
end repeat [标签];
iterate (类似于continue)

举例 批量插入,只插入偶数次

delimiter $
create procedure leave_test(in insertCount int)
begin
	declare i int default 0;
	a: while i<=insertCount do
		set i=i+1;
		if mod(i,2)!=0 then iterate a;
		insert into user(username,password) values(concat('user',i),'123456');
		end if;
	end while a;
end $

测试

call leave_test(100)$
leave (类似于break)

举例 批量插入数据,如果次数>20就停止

delimiter $
create procedure leave_test(in insertCount int)
begin
	declare i int default 1;
	a: while i<=insertCount do
		insert into user(username,password) values(concat('user',i),'123456');
		if i>=20 then leave a;
		end if;
		set i=i+1;
	end while a;
end $

测试

call leave_test(100)$

efault 1;
a: while i<=insertCount do
insert into user(username,password) values(concat(‘user’,i),‘123456’);
if i>=20 then leave a;
end if;
set i=i+1;
end while a;
end $


测试

```mysql
call leave_test(100)$


PS MySQL的基础部分到这里算是更完了,接下来要开始更MySQL的高级部分了,新人博主,希望大家多多支持,有问题可以在评论区提出来或者私信给我,谢谢大家啦!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!