顺序、分支、循环
一、分支结构
if函数
语法:if(条件,值1,值2)
实现分支 要用到begin end
case结构
语法:类似于switch
case 变量或表达式
when 值1 then 语句1;
when 值2 then 语句2;
...
else 语句n;
end
if结构(类似于多重if)
if 条件1 then 语句1;
else if 条件2 then 语句2;
...
else 语句n;
end if;
SELECT studentNo FROM school;
CREATE PROCEDURE spre()
BEGIN
SELECT studentNo FROM school WHERE sex='男';
END;
#调用存储过程
CALL 存储过程名()
CREATE PROCEDURE exc(IN a INT)
BEGIN
IF a=1 THEN
SELECT 1;
ELSE
SELECT 3;
END IF;
END;
CALL exc(3);
循环结构
while、loop、repeat
循环控制:
iterate:结束本次循环,继续下一次循环(类似continue)
leave:结束循环,跳出,(类似break)
一、while
语法:
【标签:】while 循环条件 do
循环体;
end while【标签】;
loop 语法:
【标签:】loop
循环体
end loop【标签】;
一般用来模拟简单的死循环
repeat 语法:
【标签:】repeat
循环体;
until 结束循环的条件
end repeat【标签】;
类似java中的do-while循环,先执行循环体,再判断条件
循环插入数据
DELIMITER $$
CREATE PROCEDURE whide(IN insertcount INT)
BEGIN #开始存储过程
DECLARE i INT DEFAULT 1;#等同于于int i = 1;
WHILE i<insertcount DO #等同于while(i<10){
INSERT INTO school(studentNo,sex)
VALUES(1,'男'); #等同于循环操作
SET i=i+1; #等同于循环变量的改变
END WHILE; #等同于} 结束循环
END $$ #结束存储过程all whide(10);#调用存储过程
SELECT * FROM school;
作业:
#批量插入数据到表school中,根据次数插入多条记录,
#如果次数>5停止(提示:使用leave关键字)
循环套IF IF里面放break;
CREATE TABLE school(
studentNo INT,sex CHAR(2)
)
DELIMITER $$
CREATE PROCEDURE prdd(IN incount INT)
BEGIN
DECLARE i INT DEFAULT 1; #声明变量
a:WHILE i<=incount DO
INSERT INTO school(studentNo,sex)
VALUES (22,'女');
IF i=5 THEN LEAVE a;
END IF;
SET i =i+1;
END WHILE a;
END $$
CALL prdd(20);
SELECT * FROM school;
#批量插入数据,只插入偶数次数(提示:使用iterate)
java中 循环 嵌套IF(i%2!=0)CONTINUE
mysql中 MOD(i,2)!=0
DELIMITER $$
CREATE PROCEDURE doo(IN inscount INT)
BEGIN
DECLARE i INT DEFAULT 1; #初始值
b:WHILE i<=inscount DO #循环条件
SET i = i+1; #循环变量的改变
IF MOD(i,2)!=0 THEN ITERATE b;
END IF;
INSERT INTO school(studentNo,sex)
VALUES (33,'男');
END WHILE b;
END $$
CALL doo(20);