2015-05-27
1、MySQL存储过程
我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。
一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。
2、存储过程通常有以下优点:
(1)存储过程增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。
(2)存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。
(3)存储过程能实现较快的执行速度。如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。
(4)存储过程能过减少网络流量。针对同一个数据库对象的操作(如查询、修改),如果这一操作所涉及的Transaction-SQL语句被组织程存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量并降低了网络负载。
(5)存储过程可被作为一种安全机制来充分利用。系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。
3、PHP调用MySQL案例
实例一:无参的存储过程
$conn = mysql_connect('localhost','root','root') or die ("数据连接错误!!!");mysql_select_db('test',$conn);$sql = "create procedure myproce()beginINSERT INTO user (id, username, sex) VALUES (NULL, 's', '0');end; ";mysql_query($sql);//创建一个myproce的存储过程$sql = "call test.myproce();";mysql_query($sql);//调用myproce的存储过程,则数据库中将增加一条新记录。实例二:传入参数的存储过程
$sql = "create procedure myproce2(in score int)beginif score >= 60 thenselect 'pass';elseselect 'no';end if;end; ";mysql_query($sql);//创建一个myproce2的存储过程$sql = "call test.myproce2(70);";mysql_query($sql);//调用myproce2的存储过程,看不到效果,可以在cmd下看到结果。实例三:传出参数的存储过程
$sql = "create procedure myproce3(out score int)beginset score=100;end; ";mysql_query($sql);//创建一个myproce3的存储过程$sql = "call test.myproce3(@score);";mysql_query($sql);//调用myproce3的存储过程$result = mysql_query('select @score;');$array = mysql_fetch_array($result);echo '';print_r($array);
实例四:传出参数的inout存储过程$sql = "create procedure myproce4(inout sexflag int)beginSELECT * FROM user WHERE sex = sexflag;end; ";mysql_query($sql);//创建一个myproce4的存储过程$sql = "set @sexflag = 1";mysql_query($sql);//设置性别参数为1$sql = "call test.myproce4(@sexflag);";mysql_query($sql);//调用myproce4的存储过程,在cmd下面看效果
实例五:使用变量的存储过程 $sql = "create procedure myproce5(in a int,in b int)begindeclare s int default 0;set s=a+b;select s;end; ";mysql_query($sql);//创建一个myproce5的存储过程$sql = "call test.myproce5(4,6);";mysql_query($sql);//调用myproce5的存储过程,在cmd下面看效果
实例六:case语法$sql = "create procedure myproce6(in score int)begincase scorewhen 60 then select '及格';when 80 then select '及良好';when 100 then select '优秀';else select '未知分数';end case;end; ";mysql_query($sql);//创建一个myproce6的存储过程$sql = "call test.myproce6(100);";mysql_query($sql);//调用myproce6的存储过程,在cmd下面看效果
实例七:循环语句$sql = "create procedure myproce7()begindeclare i int default 0;declare j int default 0;while i实例八:repeat语句$sql = " create procedure myproce8()begindeclare i int default 0;declare j int default 0;repeatset j=j+i;set i=i+1;until j>=10end repeat;select j;end; ";mysql_query($sql);//创建一个myproce8的存储过程$sql = "call test.myproce8();";mysql_query($sql);//调用myproce8的存储过程,在cmd下面看效果
实例九:loop语句$sql = "create procedure myproce9()begindeclare i int default 0;declare s int default 0;loop_label:loopset s=s+i;set i=i+1;if i>=5 thenleave loop_label;end if;end loop;select s;end; ";mysql_query($sql);//创建一个myproce9的存储过程$sql = "call test.myproce9();";mysql_query($sql);//调用myproce9的存储过程,在cmd下面看效果
实例十:删除存储过程mysql_query("drop procedure if exists myproce");//删除test的存储过程
1
CI框架连接数据库配置操作以及多数据库操作
09-05
2
asp 简单读取数据表并列出来 ASP如何快速从数据库读取大量数据
05-17
3
C语言关键字及其解释介绍 C语言32个关键字详解
04-05
4
C语言中sizeof是什么意思 c语言里sizeof怎样用法详解
04-26
5
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
09-05
6
将视频设置为Android手机开机动画的教程
12-11
7
PHP中的(++i)前缀自增 和 (i++)后缀自增
09-05
8
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
04-12
常用dos命令及语法
2014-09-27
PHP中include和require区别之我见
2014-09-05
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
2017-05-03
php递归返回值的问题
2014-09-05
单片机编程好学吗?单片机初学者怎样看懂代码
2022-03-21
PHP 教程之如何使用BLOB存取图片信息实例
2014-09-05
学ug编程如何快速入门?
2022-03-17
PHP数组函数array
2014-09-05
学习使用C语言/C++编程的7个步骤!超赞~
2022-03-20
零基础的初学者怎样学习java,或者应该先学什么?
2022-03-21
收割者剑客传奇免谷歌汉化版下载v2.0.1 安卓版
其它手游 40.19MB
下载
reaper收割者破解版下载v2.0.1 安卓完美版
其它手游 40.19MB
下载
reaper汉化版下载v2.0.1 安卓中文版
其它手游 40.19MB
下载
死神苍白剑士的传说中文版(Reaper)下载v2.0.1 安卓版
其它手游 40.19MB
下载
宝宝巴士迷宫小镇下载v9.89.99.01 官方安卓版
其它手游 113.4MB
下载
宝宝迷宫大作战游戏下载v9.89.99.01 安卓版
其它手游 113.4MB
下载
宝宝巴士干净的妙妙游戏下载v9.89.99.00 安卓版
其它手游 76.43MB
下载
妙妙爱干净宝宝巴士下载v9.89.99.00 安卓版
其它手游 76.43MB
下载翻炒厨师游戏下载v2.1.3 安卓版
下载
维塔战士游戏最新版下载v976 安卓版
下载
泡泡小镇城堡游戏下载v1.1.5 安卓完整版
下载
3d蚊子模拟器游戏最新版下载v2023.08.22 安卓版
下载
超级机器人英雄游戏下载v1.1.3 安卓版
下载
robot super游戏下载v1.1.3 安卓版
下载
zombie tsunami游戏下载v4.6.8 安卓版
下载
2026僵尸尖叫正版下载v4.6.8 安卓官方版
下载