MySQL分支和循环结构方式

 更新时间:2024年10月25日 08:39:07   作者:Carver0808  
在MySQL中,IF函数用于根据条件返回不同的值,类似于Java的三目运算符,CASE语句则提供了两种形式:简单CASE函数和搜索CASE函数,分别类似于Java中的switch-case结构和多重if判断,这些控制流函数在数据库查询和数据处理中非常有用,可以实现复杂的逻辑判断

一、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);

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mysql实现合并同一ID对应多条数据的方法

    mysql实现合并同一ID对应多条数据的方法

    这篇文章主要介绍了mysql实现合并同一ID对应多条数据的方法,涉及mysql GROUP_CONCAT函数的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • 一文带你了解MySQL之事务隔离级别和MVCC

    一文带你了解MySQL之事务隔离级别和MVCC

    这篇文章主要带大家详细了解一下MySQL之事务隔离级别和MVCC,文中有详细的代码示例,具有一定的参考价值,感兴趣的同学可以借鉴月u的
    2023-06-06
  • mysql如何按首字母进行检索数据

    mysql如何按首字母进行检索数据

    这篇文章介绍了如何根据学生的首字母检索学生信息的需求,并提供了一种不增加表字段的实现方法,通过利用汉字的拼音排序特性,结合数据库的排序和转换函数,实现了根据首字母模糊匹配检索学生信息的功能
    2024-11-11
  • MySQL创建用户的三种方法

    MySQL创建用户的三种方法

    在对MySQL的日常管理和操作中,为了避免有人恶意使用root用户控制数据库,尽可能地不用或少用 root 用户登录系统,本文主要介绍了MySQL创建用户的三种方法,感兴趣的可以了解一下
    2023-08-08
  • MySql范围查找时索引不生效问题的原因分析

    MySql范围查找时索引不生效问题的原因分析

    这篇文章主要给大家介绍了关于MySql范围查找时索引不生效问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • MySQL学习必备条件查询数据

    MySQL学习必备条件查询数据

    这篇文章主要介绍了MySQL学习必备条件查询数据,首先通过利用where语句可以对数据进行筛选展开主题相关内容,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你有所帮助
    2022-03-03
  • ubuntu20安装配置mysql8.0.23步骤详解

    ubuntu20安装配置mysql8.0.23步骤详解

    这篇文章主要为大家介绍了ubuntu20安装配置mysql8.0.23步骤详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 详解标准mysql(x64) Windows版安装过程

    详解标准mysql(x64) Windows版安装过程

    这篇文章主要介绍了标准mysql(x64) Windows版安装过程,需要的朋友可以参考下
    2017-08-08
  • 深入mysql外键关联问题的详解

    深入mysql外键关联问题的详解

    本篇文章是对mysql外键关联问题进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • MySQL DISTINCT 的基本实现原理详解

    MySQL DISTINCT 的基本实现原理详解

    这篇文章主要介绍了MySQL DISTINCT 的基本实现原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07

最新评论