重学MySql数据库(十八) 分支结构与循环结构总结

一. 分支结构

1. if 函数:

功能:实现简单双分支
语法:
if(条件,值1,值2)
位置:
可以作为表达式放在任何位置

2. case 结构:

功能:实现多分支

语法1:
case 表达式或字段
when 值1 then 语句1;
when 值2 then 语句2;
..
else 语句n;
end [case];

语法2:
case 
when 条件1 then 语句1;
when 条件2 then 语句2;
..
else 语句n;
end [case];
	
位置:
可以放在任何位置,
如果放在begin end 外面,作为表达式结合着其他语句使用
如果放在begin end 里面,一般作为独立的语句使用

3. if 结构:

功能:实现多分支

语法:
if 条件1 then 语句1;
elseif 条件2 then 语句2;
...
else 语句n;
end if;

位置:
只能放在begin end中

二. 循环结构

1. 位置:

只能放在begin end中

特点:都能实现循环结构

2. while 结构:

语法:
【名称:】while 循环条件 do
		循环体
 end while 【名称】;

3. loop 结构:

语法:
【名称:】loop
		循环体
 end loop 【名称】;

3. repeat 结构:

语法:
【名称:】repeat
		循环体
 until 结束条件 
 end repeat 【名称】;

4. 循环控制语句:

leave:类似于break,用于跳出所在的循环

iterate:类似于continue,用于结束本次循环,继续下一次

5. 三种循环对比:

(1)、这三种循环都可以省略名称,但如果循环中添加了循环控制语句(leave或iterate)则必须添加名称

(2)、位于哪里?
	loop 一般用于实现简单的死循环
	
	while 先判断后执行
	
	repeat 先执行后判断,无条件至少执行一次

SQL代码演示

1. 综合案例:

/*一、已知表stringcontent
其中字段:
id 自增长
content varchar(20)

向该表插入指定个数的,随机的字符串
*/

DROP TABLE IF EXISTS stringcontent;

CREATE TABLE stringcontent(
	id INT PRIMARY KEY AUTO_INCREMENT,
	content VARCHAR(20)
	
);

DELIMITER $
CREATE PROCEDURE test_randstr_insert(IN insertCount INT)
BEGIN
	DECLARE i INT DEFAULT 1;
	DECLARE str VARCHAR(26) DEFAULT 'abcdefghijklmnopqrstuvwxyz';
	DECLARE startIndex INT;#代表初始索引
	DECLARE len INT;#代表截取的字符长度
	WHILE i<=insertcount DO
		SET startIndex=FLOOR(RAND()*26+1);#代表初始索引,随机范围1-26
		SET len=FLOOR(RAND()*(20-startIndex+1)+1);#代表截取长度,随机范围 1*(20-startIndex+1 +1
		INSERT INTO stringcontent(content) VALUES(SUBSTR(str,startIndex,len));
		SET i=i+1;
	END WHILE;

END $

CALL test_randstr_insert(10)$

总结: MySql基础总结完毕。

猜你喜欢

转载自blog.csdn.net/w_x_A__l__l/article/details/107444686