一、条件控制
1.if函数
在mysql中if()函数的用法类似于java中的三目表达式
语法:if(条件,值1,值2)
功能:实现双分支
应用在begin end中或外面
例:
select name,if(sex=0,'女','男') sex from t_test;
2.if结构
语法:
if 条件1 then 语句1;
elseif 条件2 then 语句2;
....
else 语句n;
end if;
只能应用在begin end 中
例1:if else结构
例2:if elseif else结构:
3、case结构
语法:
情况1:类似于switch
case 变量或表达式
when 值1 then 语句1;
when 值2 then 语句2;
...
else 语句n;
end
情况2:
case
when 条件1 then 语句1;
when 条件2 then 语句2;
...
else 语句n;
end
应用在begin end 中或外面
例
二、循环结构
循环控制:
iterate类似于 continue,继续,结束本次循环,继续下一次
leave 类似于 break,跳出,结束当前所在的循环
建表语句
CREATE TABLE `admin` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(10) NOT NULL,
`password` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1.while
语法:
while 循环条件 do
循环体;
end while
1.1、leave语句
批量插入,根据次数插入到admin表中多条记录,如果次数>20则停止
CREATE PROCEDURE while_leave_demo1(IN insertCount INT)
BEGIN
DECLARE i INT DEFAULT 1;
a:WHILE i<=insertCount DO
INSERT INTO admin(username,`password`) VALUES(CONCAT('leave',i),'0000');
IF i>=20 THEN LEAVE a;
END IF;
SET i=i+1;
END WHILE a;
END $
1.3 iterate语句
批量插入,根据次数插入到admin表中多条记录,只插入偶数次
CREATE PROCEDURE while_iterate_demo1(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;
END IF;
INSERT INTO admin(username,`password`) VALUES(CONCAT('iterate',i),'0000');
END WHILE a;
END $
2.loop
语法
loop
循环体;
end loop
例
3.repeat
语法
repeat
循环体;
until 结束循环的条件
end repeat