分享

程序员学习笔记——MySQL的存储过程入门

 0璇玑玉衡0 2017-11-20

程序员学习笔记——MySQL的存储过程入门

big data

通常情况下,当我们输入SQL命令以后,MySQL引擎首先分析SQL命令的语法格式是否正确,如果正确则编译成MySQL引擎可以识别的命令,然后开始执行命令,最后将执行的结果返回给客户端。如果要将这个过程中的语法分析和编译的过程省略掉,那么MySQL的执行效率就会提升,这时就需要用到存储过程。

程序员学习笔记——MySQL的存储过程入门

SQL命令执行流程

存储过程就是SQL语句和控制语句的预编译集合,以一个名称存储作为一个单元来进行处理。有点类似于自定义函数,可以由应用程序调用执行,允许用户声明变量并且进行流程控制,存储过程可以接受输入类型的参数也可以接受输出类型的参数,并且可以由多个返回值。

存储过程的优点:

(1)由于在存储过程中可以写控制语句,因此使SQL语句的灵活性增强。

(2)存储过程只有在第一次执行时才进行分析和编译,在以后的执行过程中不再需要,因此执行速度快。

(3)单独发送SQL语句让服务器执行提交的信息量大,用存储过程只要把用到的参数传过去就可以,减少了网络流量。

程序员学习笔记——MySQL的存储过程入门

创建存储过程的语法格式

其中IN表示这个参数必须在调用的时候指定,这个值不能被返回,OUT表示参数的值可以在存储过程中被改变,而且这个值可以返回,INOUT表示这个参数在调用是指定,可以在存储过程中被改变,也可以返回。

存储过程中的过程体必须由合法的SQL语句构成,SQL语句包括CURD以及多表连接查询,过程体如果是复合结构则要用BEGIN...END将语句包含在内,在复合结构中可以使用流程控制语句,循环语句等。存储过程是用关键字CALL来调用。

(1)创建带IN类型参数的存储过程示例:

CREATE PROCEDURE remove_student_byId(in id INT UNSIGNED)DELETE FROM student WHERE stu_id = id;

(2)创建带有IN和OUT类型参数的存储过程:

CREATE PROCEDURE remove_student_return_num(IN id INT UNSIGNED,OUT num INT UNSIGNED)

BEGIN DELETE FROM student WHERE stu_id = id;SELECT COUNT(stu_id) FROM student into num;END

存储过程与自定义函数的区别:

程序员学习笔记——MySQL的存储过程入门

存储过程与自定义函数的区别

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多