MySQL 分支和循环结构

一、if函数
在mysql中if()函数的用法类似于java中的三目表达式,其用处也比较多,具体语法如下:IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值。注意:if函数可以用在任何位置。
例如:select * ,if(role_id=1,‘管理员’,‘普通用户’) as role from user_p;当role_id为1时,返回管理员,role_id非1返回普通用户。
在这里插入图片描述
二、case语句
1、情景一(case函数)
类似于Java总的switch-case结构,代码和运行截图如下:
语法:
case 表达式
when 值1 then 结果1或语句1(如果是语句,需要加分号)
when 值2 then 结果2或语句2(如果是语句,需要加分号)

else 结果n或语句n(如果是语句,需要加分号)
end 【case】(如果是放在begin end中需要加上case,如果放在select后面不需要)

select *,
	case role_id 
		when 1 then "管理员" 
		when 2 then "普通用户" 
		else "游客" end
	as role
from user_p;

在这里插入图片描述
2、情景二(case搜索函数)
类似于多重if,可以用在任何位置。代码和运行截图如下:
语法:
case
when 条件1 then 结果1或语句1(如果是语句,需要加分号)
when 条件2 then 结果2或语句2(如果是语句,需要加分号)

else 结果n或语句n(如果是语句,需要加分号)
end 【case】(如果是放在begin end中需要加上case,如果放在select后面不需要)

select *,case
	when age <19 then "少年"
	when age <30 then "青年"
	when age >30 and age <50 then "中年"
	else "老年"
	end "状态"
from info;

在这里插入图片描述
三、if elseif语句
注意:只能用在begin end中
语法:
if 情况1 then 语句1;
elseif 情况2 then 语句2;

else 语句n;
end if;

#定义分号
DELIMITER $$
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
CREATE FUNCTION age_status(age int) RETURNS varchar(20)
BEGIN
  
    DECLARE status varchar(20)  DEFAULT "老年";
 
    IF age < 19  THEN SET status ="少年";
    ELSEIF age <30 THEN SET status ="青年";
    ELSEIF 30<age<50 THEN SET status ="中年";
    ELSE SET status ="老年";
    END IF;
    RETURN status;
END $$
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#重新定义分号
DELIMITER ;
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
 select age_status(45);

在这里插入图片描述
四、循环

DELIMITER $$
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
CREATE FUNCTION insertUser(num INT) RETURNS varchar(15)
BEGIN 

    DECLARE i INT DEFAULT(1);
   
    while i<= num DO
        INSERT INTO info(name,sex,classname,age) 
		VALUES (CONCAT("name",i),CONCAT("sex",i),CONCAT("classname",i),i);
        SET i=i+1;
        END WHILE;
	RETURN "success";
END $$
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
DELIMITER ;
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
select insertUser(5);

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值