数据库-控制语句

1、控制语句的概念和函数模板代码

控制语句的概念

  • 控制语句

用来实现对程序流程的选择、循环、转向和返回等进行控制(IF、CASE、LOOP、WHILE、LEAVE、ITERATE、REPEAT)

  • 分类

选择语句

循环语句

转向语句

返回语句

--创建函数

delimiter //
DROP FUNCTION IF EXISTS fun_name;
CREATE FUNCTION fun_name()
RETURNS VARCHAR(20)
BEGIN
    RETURN 'Hello';
END //
delimiter;

--调用函数

SELECT fun_name();


2、IF分支控制语句

IF语句

  • IF语句可以进行条件判断,根据是否满足条件,将执行不同的分支语句
  • IF search_condition  THEN statement_list

     [ELSEIF  search_condition  THEN  statement_list]

...

   [ELSE  statement_list]

  END  IF

search_condition参数表示条件判断语句

statement_list参数表示不同条件的执行语句

eg:

1)创建函数

-- 1:IF
-- 传入一个memberId,返回会员是否是土豪(>40000)、无产(<10000)、中产(10000<X<40000)
delimiter //
DROP FUNCTION IF EXISTS f_is_tuhao;
CREATE FUNCTION f_is_tuhao(memberId INT)
RETURNS VARCHAR(20)
BEGIN
-- 定义msg保存输出信息
  DECLARE _msg VARCHAR(20);

-- 定义一个局部变量保存查询出来的该会员的余额
  DECLARE _amount DECIMAL(18,2);

-- 查询出来的该会员的余额,保存到局部变量_amount中
  SELECT leaveAmount INTO _amount FROM member WHERE id=memberId;

-- 通过IF分支结构对局部变量_amount进行判断
  IF _amount<10000 THEN 
        SET _msg = '我是无产阶级';
  ELSEIF _amount>=10000 AND _amount<40000 THEN
    SET _msg = '我是中产阶级';
  ELSE
    SET _msg = '我是土豪';
  END IF;

    RETURN _msg;
END//
delimiter;

2)调用函数

select  f_is_tuhao(1);


3、CASE语句

  • 条件判断语句,可以实现比IF语句更复杂的条件判断
  • 语法1:

CASE  case_value

WHEN when_value THEN statement_list

[WHEN  when_value THEN statement_list]...

[ELSE statement_list]

END CASE

case_value参数表示条件判断的变量

when_value参数表示变量的取值

statement_list参数表示不同when_value值的执行语句

eg:

1)创建函数:

-- 创建一个函数,传入一个memberId,返回用户的类型(1:普通   2:内部   其他)
delimiter //
DROP FUNCTION IF EXISTS f_get_member_type_msg;
CREATE FUNCTION f_get_member_type_msg(memberId INT)
RETURNS VARCHAR(20)
BEGIN
    DECLARE _msg VARCHAR(20);
    DECLARE _type TINYINT;

    SELECT type INTO _type FROM member WHERE id = memberId;
    -- 判断
    CASE _type
    WHEN 1 THEN SET _msg = '普通用户';
    WHEN 2 THEN SET _msg = '内部用户';
    ELSE SET _msg = '其他用户';
    END CASE;

    RETURN _msg;
END //
delimiter;

2)调用函数:

SELECT f_get_member_type_msg(3);

 

  • 语法2:

CASE 

       WHEN  search_condition THEN  statement_list

        [WHEN search_condition THEN statement_list]...

        [ELSE  statement_list]

END CASE

eg:

1)创建函数:

-- 1:CASE
-- 传入一个memberId,返回会员是否是土豪(>40000)、无产(<10000)、中产(10000<X<40000)
delimiter //
DROP FUNCTION IF EXISTS f_is_tuhao_case;
CREATE FUNCTION f_is_tuhao_case(memberId INT)
RETURNS VARCHAR(20)
BEGIN
-- 定义msg保存输出信息
  DECLARE _msg VARCHAR(20);

-- 定义一个局部变量保存查询出来的该会员的余额
  DECLARE _amount DECIMAL(18,2);

-- 查询出来的该会员的余额,保存到局部变量_amount中
  SELECT leaveAmount INTO _amount FROM member WHERE id=memberId;

-- case的条件判断、分支控制
    CASE 
    WHEN _amount>=40000 THEN SET _msg='我是土豪';
    WHEN _amount>=10000 AND _amount<=40000 THEN SET _msg='我是中产';
    ELSE SET _msg='我是无产';
    END CASE;

    RETURN _msg;
END//
delimiter;

2)调用函数:

SELECT f_is_tuhao_case(4);


4、LOOP循环控制语句

  • 循环控制结构
  • 用来重复执行某段算法
  • 减少代码重复书写工作量
  • 三要素:

循环变量:相当于开始和结束循环的一个信号

循环体:循环处理的逻辑语句

循环终止条件:合适的时候结束循环

LOOP语句

  • 循环语句
  • 使用LOOP使特定的语句重复执行
  • LOOP语句没有停止循环的语句,使用LEAVE才能停止
  • 语法:
  •    [begin_label:]   LOOP

  statement_list

  END LOOP [end_label]

  • begin_label

循环开始标志,end_label是循环结束的标志

两个标志必须相同,而且都可以省略

  • statement_list

表示需要循环执行的语句

LEAVE语句

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值