zoukankan      html  css  js  c++  java
  • Mysql流程构造语句 变量定义,判断分支,循环

    一 流程构造语句
        1>语法
                      分隔符 概念 用于区分过程的开始和结束的符号
           delimiter //
              /**定义存储过程**/
           //
        2变量定义
           1>全局变量 必须是show variables存在的变量
                 通过自动提交变量演示
             local/session  修改了 只对当前的session有效
             global         修改了 对所有的session都有效
             1>查看变量是否支持 session或者 global
           SHOW [GLOBAL|LOCAL|SESSION] VARIABLES LIKE 'autocommit'
             2>通过变量的方式去获取
               SELECT @@autocommit
           SELECT @@session.autocommit
           SELECT @@global.autocommit
             3>设置变量
               set  @@autocommit=off     --修改session
               set  @@global.autocommit=off 或者 set global autocommit=off  --修改全局的 
          2>临时变量     
              1>session级别临时变量
                                  直接使用  @变量名称 无需定义 
                    set @sex='男';
              2>局部变量
                  declare 变量名  类型  default 默认值
                    set 变量名=值      
                    SELECT 列1,列2 INTO 变量1,变量2 FROM 表 WHERE 条件
         3 if条件分支
                 IF search_condition THEN statement_list
                   [ELSEIF search_condition THEN statement_list] ...
                   [ELSE statement_list]
               END IF;
          case分支
               sql语句中    使用case
                 SELECT CASE gname
                   WHEN 'aa' THEN '1501' 
                   WHEN 'nn' THEN '1502' 
                   END AS gradename FROM grade;
               过程语句使用    
                 DELIMITER //
                   CREATE PROCEDURE testdefine(sex INT)
                   BEGIN
                      CASE WHEN sex=1 THEN
                        SELECT '男';
                        WHEN sex=2 THEN
                        SELECT '女';
                        ELSE
                        SELECT '未知';
                        END CASE;
                   END
                   //
                          
          4 循环       
           1>loop循环 
                     循环的定义:
               [begin_label:] LOOP
                   statement_list
               END LOOP [end_label]
               LEAVE label
               这个语句被用来退出任何被标注的流程控制构造。它和BEGIN ... END或循环一起被使用。 
               ITERATE label
               ITERATE只可以出现在LOOP, REPEAT, 和WHILE语句内。ITERATE意思为:“再次循环。” 
                       举例 输出 1-10
                DROP PROCEDURE IF EXISTS testdefine;
                   DELIMITER //
                   CREATE PROCEDURE testdefine()
                   BEGIN
                     SET @i=0;
                     SET @result='';
                     loc: LOOP 
                        IF(@i=10) THEN
                           LEAVE loc;
                        ELSE
                           SET @i=@i+1;
                           SET @result=CONCAT(@result,' ',@i);
                           ITERATE loc;
                        END IF;
                     
                     END LOOP;
                     SELECT @result;
                   END
                   //   
             2>repeat循环   
                    循环的定义:
                   [begin_label:] REPEAT
                       statement_list
                    /**直到满足条件后就退出**/    
                   UNTIL search_condition
                   END REPEAT [end_label]
                   举例  循环输出1-10
                       DELIMITER //
                       CREATE PROCEDURE testdefine()
                       BEGIN
                         SET @i=0;
                         SET @result='';
                         REPEAT 
                           SET @i=@i+1;
                           SET @result=CONCAT(@result,' ',@i);
                           /**知道满足条件后就退出**/
                           UNTIL @i=10
                         END REPEAT;
                         SELECT @result;
                       END
                       //
                 3while循环
                         循环的定义:
                           [begin_label:] WHILE search_condition DO
                               statement_list
                           END WHILE [end_label]
     
                           举例  循环输出1-10
                               DELIMITER //
                                   CREATE PROCEDURE testdefine()
                                   BEGIN
                                     SET @i=0;
                                     SET @result='';
                                     WHILE(@i<10) DO
                                       SET @i=@i+1;
                                       SET @result=CONCAT(@result,' ',@i);
                                     END WHILE;
                                     SELECT @result;
                                   END
                                   //
  • 相关阅读:
    75
    74
    接口理论知识
    软件测试计划的编写
    软件测试的生命周期&软件测试工作流程
    软件测试分类体系系统学习
    Mysql之高级查询
    数据库的DML操作
    Mysql之数据完整性约束
    Mysql之DDL操作
  • 原文地址:https://www.cnblogs.com/t0404/p/10291054.html
Copyright © 2011-2022 走看看