【一点分享】Mysq高级特性:存储过程,小而美的ETL工具。

此Mysql的学习从最早的3天上手,到近几期的高级特性,逐步靠近实际工作的应用。本文也终于来到ETL工作的门口了(当然有很多其他ETL模式),是非常有意思的工作。

存储过程与昨天分享的的Mysql自定义函数相似,文章依然分三部分:存储过程讲解、实战演示、总结。

一、存储过程

1、增删改查

表的数据有增删改查,自定义函数有增删改查,存储过程也同样有增删改查。

1.1 增,新建存储过程

1.2 查列表,全部存储过程

1.3 查定义,存储过程的完整代码内容

1.4 删

-- 通常会加if exists,保持这个习惯drop procedure if exists p_rows;

1.5 改

能修改一些属性,但不支持修改body代码,要先删除再新建。

2、属性

暂不影响,后续文章再分享。

3、参数和变量

只是有参的参数与函数的有点差异特点,定义了3种参数的类型,参考经典的《菜鸟教程》,如下:

3.1 in

仅输入型参数in,像自定义函数的参数。在body中引用参数。参数前面加上in关键词。

3.2 out

3.3 inout

参数值既要传入存储过程中,又要运算处理后返回出来新值(通常会变化,不然直接就用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系列数据分析是一条很平缓、很实用的路径,小而美、短平快。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容