MySQL存储进程理会
副问题[/!--empirenews.page--]
1. 存储进程简介 我们常用的操纵数据库说话SQL语句在执行的时辰必要要先编译,然后执行,而存储进程(StoredProcedure)是一组为了完成特定成果的SQL语句集,经编译后存储在数据库中,用户通过指定存储进程的名字并给定参数(假如该存储进程带有参数)来挪用执行它。 一个存储进程是一个可编程的函数,它在数据库中建设并生涯。它可以有SQL语句和一些非凡的节制布局构成。当但愿在差异的应用措施或平台上执行沟通的函数,可能封装特定成果时,存储进程长短常有效的。数据库中的存储进程可以看做是对编程中面向工具要领的模仿。它应承节制数据的会见方法。 存储进程凡是有以下利益: (1).存储进程加强了SQL说话的成果和机动性。存储进程可以用流节制语句编写,有很强的机动性,可以完成伟大的判定和较伟大的运算。 (2).存储进程应承尺度组件是编程。存储进程被建设后,可以在措施中被多次挪用,而不必从头编写该存储进程的SQL语句。并且数据库专业职员可以随时对存储进程举办修改,对应用措施源代码毫无影响。 (3).存储进程能实现较快的执行速率。假如某一操纵包括大量的Transaction-SQL代码或别离被多次执行,那么存储进程要比批处理赏罚的执行速率快许多。由于存储进程是预编译的。在初次运行一个存储进程时查询,优化器对其举办说明优化,而且给出最终被存储在体系表中的执行打算。而批处理赏罚的Transaction-SQL语句在每次运行时都要举办编译和优化,速率相对要慢一些。 (4).存储进程能过镌汰收集流量。针对统一个数据库工具的操纵(如查询、修改),假如这一操纵所涉及的Transaction-SQL语句被组织程存储进程,那么当在客户计较机上挪用该存储进程时,收集中传送的只是该挪用语句,从而大大增进了收集流量并低落了收集负载。 (5).存储进程可被作为一种安详机制来充实操作。体系打点员通过执行某一存储进程的权限举办限定,可以或许实现对响应的数据的会见权限的限定,停止了非授权用户对数据的会见,担保了数据的安详。 2. 关于MySQL的存储进程 存储进程是数据库存储的一个重要的成果,可是MySQL在5.0早年并不支持存储进程,这使得MySQL在应用上大打折扣。亏得MySQL 5.0终于开始已经支持存储进程,这样即可以大大进步数据库的处理赏罚速率,同时也可以进步数据库编程的机动性。 3. MySQL存储进程的建设 (1). 名目 MySQL存储进程建设的名目:CREATE PROCEDURE 进程名 ([进程参数[,...]]) [特征 ...]进程体 这里先举个例子:
mysql> DELIMITER // mysql> CREATE PROCEDURE proc1(OUT s int) -> BEGIN -> SELECT COUNT(*) INTO s FROM user; -> END -> // mysql> DELIMITER ; 注: (1)这里必要留意的是DELIMITER //和DELIMITER ;两句,DELIMITER是支解符的意思,由于MySQL默认以";"为脱离符,假如我们没有声明支解符,那么编译器会把存储进程当成SQL语句举办处理赏罚,则存储进程的编译进程会报错,以是要事先用DELIMITER要害字阐明当前段脱离符,这样MySQL才会将";"当做存储进程中的代码,不会执行这些代码,用完了之后要把脱离符还原。 (2)存储进程按照必要也许会有输入、输出、输入输出参数,这里有一个输出参数s,范例是int型,假若有多个参数用","支解开。 (3)进程体的开始与竣事行使BEGIN与END举办标识。 这样,我们的一个MySQL存储进程就完成了,是不是很轻易呢?看不懂也不要紧,接下来,我们具体的讲授。 (2). 声明支解符 着实,关于声明支解符,上面的注解已经写得很清晰,不必要多说,只是轻微要留意一点的是:假如是用MySQL的Administrator打点器材时,可以直接建设,不再必要声明。 (编辑:厦门网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |