程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 細細研究MySql中delimiter起到的作用

細細研究MySql中delimiter起到的作用

編輯:MySQL綜合教程

  MySql中delimiter究竟可以起到些什麼作用呢?可能不少人都有這樣的疑惑,下文就為您介紹MySql中delimiter的作用,供您參考。

  MYSQL導出一個SQL後:

 

  1. DELIMITER $$     
  2. DROP TRIGGER IF EXISTS `updateegopriceondelete`$$     
  3. CREATE     
  4.     TRIGGER `updateegopriceondelete` AFTER  DELETE ON  `customerinfo`     
  5.     FOR EACH ROW BEGIN     
  6. DELETE FROM egoprice  WHERE customerId=OLD.customerId;     
  7.     END$$     
  8. DELIMITER ;  

  其中DELIMITER 定好結束符為"$$", 然後最後又定義為";", MYSQL的默認結束符為";".

  詳細解釋:

  其實就是告訴mysql解釋器,該段命令是否已經結束了,mysql是否可以執行了。

  默認情況下,delimiter是分號;。在命令行客戶端中,如果有一行命令以分號結束,

  那麼回車後,mysql將會執行該命令。如輸入下面的語句

  mysql> select * from test_table;

  然後回車,那麼MySQL將立即執行該語句。

  但有時候,不希望MySQL這麼做。在為可能輸入較多的語句,且語句中包含有分號。

  如試圖在命令行客戶端中輸入如下語句

 

  1. mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)     
  2. mysql>     RETURNS varchar(255)     
  3. mysql> BEGIN     
  4. mysql> IF ISNULL(S) THEN     
  5. mysql>     RETURN ;     
  6. mysql> ELSEIF N<15 THEN     
  7. mysql>     RETURN LEFT(S, N);     
  8. mysql> ELSE     
  9. mysql>     IF CHAR_LENGTH(S) <=N THEN     
  10. mysql>    RETURN S;     
  11. mysql>     ELSE     
  12. mysql>    RETURN CONCAT(LEFT(S, N-10), ..., RIGHT(S, 5));     
  13. mysql>     END IF;     
  14. mysql> END IF;     
  15. mysql> END;   

  默認情況下,不可能等到用戶把這些語句全部輸入完之後,再執行整段語句。

  因為mysql一遇到分號,它就要自動執行。

  即,在語句RETURN ;時,mysql解釋器就要執行了。

  這種情況下,就需要事先把delimiter換成其它符號,如//或$$。

 

  1. mysql> delimiter //     
  2. mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)     
  3. mysql>     RETURNS varchar(255)     
  4. mysql> BEGIN     
  5. mysql> IF ISNULL(S) THEN     
  6. mysql>     RETURN ;     
  7. mysql> ELSEIF N<15 THEN     
  8. mysql>     RETURN LEFT(S, N);     
  9. mysql> ELSE     
  10. mysql>     IF CHAR_LENGTH(S) <=N THEN     
  11. mysql>    RETURN S;     
  12. mysql>     ELSE     
  13. mysql>    RETURN CONCAT(LEFT(S, N-10), ..., RIGHT(S, 5));     
  14. mysql>     END IF;     
  15. mysql> END IF;     
  16. mysql> END;//   

  這樣只有當//出現之後,mysql解釋器才會執行這段語句

  以上就是MySql中delimiter起到的作用介紹。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved