此Mysql的学习从最早的3天上手,到近几期的高级特性,逐步靠近实际工作的应用。本文也终于来到ETL工作的门口了(当然有很多其他ETL模式),是非常有意思的工作。
存储过程与昨天分享的的Mysql自定义函数相似,文章依然分三部分:存储过程讲解、实战演示、总结。
一、存储过程
1、增删改查
表的数据有增删改查,自定义函数有增删改查,存储过程也同样有增删改查。
1.1增,新建存储过程
1.2查列表,全部存储过程
1.3查定义,存储过程的完整代码内容
1.4删
--通常会加ifexists,保持这个习惯dropprocedureifexistsp_rows;
1.5改
能修改一些属性,但不支持修改body代码,要先删除再新建。
2、属性
暂不影响,后续文章再分享。
3、参数和变量
只是有参的参数与函数的有点差异特点,定义了3种参数的类型,参考经典的《菜鸟教程》,如下:
3.1in
仅输入型参数in,像自定义函数的参数。在body中引用参数。参数前面加上in关键词。
3.2out
3.3inout
参数值既要传入存储过程中,又要运算处理后返回出来新值(通常会变化,不然直接就用in类型就成了)。
比如2个存储过程共用一个类似于全局唯一自增id参数,那么这个id既要传入当前值又要返回更新后新值。
再比如A
B两个存储过程模拟A
B两人聊天,那A输入B发来的信息且要输出给B的回复信息,再传入B。
二、实战演示
1、封装
把常用的sql封装在存储过程中,简单调用即可,不需要每次复制sql再执行。
2、ETL简单示例
每天都要执行一遍的sql统计,直接把这段代码封装为存储过程,手动调用或定时调用执行一下即可。如下的示例,把创建表结构、统计数据、入库封装在一个存储过程中,只需执行一下,非常方便。
三、总结
(1)存储过程也很好学习,与自定义函数非常相似,方便学习,所以再次印证之前说的sql学习曲线是很平缓的。
(2)存储过程,把一连串的步骤任务,封装在一起,复杂的逻辑也隐藏起来,方便外层调度管理、任务调度。
(3)ETL没有想象的复杂,尤其是初学者用Mysql来实现,会更有感觉,因为不需要先上来了解一大堆工具,笔者分享Mysql系列数据分析是一条很平缓、很实用的路径,小而美、短平快。
若对您有帮助,请