MySQL的source命令不加分号和delimiter的使用

来源:互联网 发布:软件著作权侵权案例 编辑:程序博客网 时间:2024/06/08 06:36

【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)除了 '\' 符号外,任何字符都可以用作语句分隔符;


0 0
原创粉丝点击