• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    详解 Mysql中的delimiter定义及作用

    初学mysql时,可能不太明白delimiter的真正用途,delimiter在mysql很多地方出现,比如存储过程、触发器、函数等。

    学过oracle的人,再来学mysql就会感到很奇怪,百思不得其解。

    其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。

    默认情况下,delimiter是分号(;) 。

    在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。如输入下面的语句

    mysql> select * from test_table;

    然后回车,那么MySQL将立即执行该语句。

    但有时候,不希望MySQL这么做。在为可能输入较多的语句,且语句中包含有分号。

    如试图在命令行客户端中输入如下语句

    mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)
    mysql>   RETURNS varchar(255)
    mysql> BEGIN
    mysql> IF ISNULL(S) THEN
    mysql>  strong> RETURN '';/strong>
    mysql> ELSEIF N15 THEN
    mysql>   RETURN LEFT(S, N);
    mysql> ELSE
    mysql>   IF CHAR_LENGTH(S) =N THEN
    mysql>  strong>RETURN S;/strong>
    mysql>   ELSE
    mysql>  RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5));
    mysql>   END IF;
    mysql> END IF;
    mysql> END; 

      默认情况下,不可能等到用户把这些语句全部输入完之后,再执行整段语句。

      因为mysql一遇到分号,它就要自动执行。

           即,在语句RETURN '';时,mysql解释器就要执行了。

          这种情况下,就需要事先把delimiter换成其它符号,如//或$$。

    mysql> delimiter //
    mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)
    mysql>   RETURNS varchar(255)
    mysql> BEGIN
    mysql> IF ISNULL(S) THEN
    mysql>  RETURN '';
    mysql> ELSEIF N15 THEN
    mysql>   RETURN LEFT(S, N);
    mysql> ELSE
    mysql>   IF CHAR_LENGTH(S) =N THEN
    mysql>  RETURN S;
    mysql>   ELSE
    mysql>  RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5));
    mysql>   END IF;
    mysql> END IF;
    mysql> END;// 

      这样只有当//出现之后,mysql解释器才会执行这段语句。

    其外。再mysql的存储过程中,需要注意的一点是:

    drop PROCEDURE if EXISTS proc_while_test;
    delimiter ;;
    CREATE DEFINER = root@localhost PROCEDURE proc_while_test(IN n int)
    BEGIN 
      DECLARE i int;
      DECLARE s int;
     SET i = 0;
      SET s = 0;
      WHILE i = n DO
        SET s = s + i;          set i++;
        set i = i + 1;
      end WHILE;
      select s;
    end
    ;;
    delimiter ; 

      在上面的例子中,set i++;是会导致整个while循环报错。在mysql的存储过程中,i++是不允许这样写的。需要写成i=i+1这种形式才可以。

    补充:下面看下Mysql中delimiter作用

    1. delimiter

    delimiter是mysql分隔符,在mysql客户端中分隔符默认是分号(;)。
    如果一次输入的语句较多,并且语句中间有分号,这时需要新指定一个特殊的分隔符。

    2. delimiter使用

    在前一篇中有设置mysql的触发器时使用例子

    mysql> delimiter // 
    mysql> create trigger upd_check before update on account  
      -> for each row 
      -> begin 
      -> if new.amount  0 then 
      -> set new.amount=0; 
      -> elseif new.amount > 100 then 
      -> set new.amount = 100; 
      -> end if; 
      -> end; 
      -> // 
    Query OK, 0 rows affected (0.00 sec) 
    mysql> delimiter ; 

    上面就是,先将分隔符设置为 //,

    直到遇到下一个 //,才整体执行语句。

    执行完后,最后一行, delimiter ; 将mysql的分隔符重新设置为分号;

    如果不修改的话,本次会话中的所有分隔符都以// 为准。

    总结

    以上所述是小编给大家介绍的详解 Mysql中的delimiter的作用,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

    您可能感兴趣的文章:
    • MySql delimiter的作用是什么
    上一篇:mysql server 8.0.3安装配置方法图文教程
    下一篇:Navicat修改MySQL数据库密码的多种方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    详解 Mysql中的delimiter定义及作用 详解,Mysql,中的,delimiter,