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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值