【0】README
0.1)本文旨在 review source 命令, 这一直是我的痛,为什么一直导入 sql 文件不成功,一直没有写 blog 吧他 记录下来(事实上,也间接证明我就是个小白);
0.2)还将intro delimiter 命令
【1】source 导入sql 不需要加 分号(分隔符)
【2】delimiter的使用
problem+solution)
problem:默认的MySQL 语句分隔符为;(分号),MySQL 命令行实用程序(mysql.exe)也使用;作为分隔符;如果命令行实用程序要解释存储过程自身内的; 字符,则它们最终不会称为存储过程 的一部分,这会使得存储过程中的SQL 出现句法错误;solution:解决方法是 临时更改命令行实用程序的语句分隔符,如下所示:delimiter // drop procedure if exists avg_price // -- 注意这里的分隔符是 // 而不是 ; create procedure avg_price() begin select avg(price) as avg_price from product; end // delimiter ;
对以上代码的分析(Analysis):
A1)delimiter // :告诉命令行实用程序使用 // 作为新的语句结束分隔符,可以看到标志存储过程结束的end 定义为 end // 而不是 end;A2)这样在存储过程体内的保持不动,并且正确地传递给数据库引擎。最后为恢复为原来的 分隔符,可以使用 delimieter;A3)除了 '\' 符号外,任何字符都可以用作语句分隔符;