mysql的存储过程初识_初识MySQL存储过程

存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。

MySQL 存储过程是从MySQL 5.0开始增加的新功能。大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性。 过程:封装起来的若干条语句,调用时这些封装体执行。把此过程存储到数据库中即存储过程. 函数:是一个有返回值的“过程”。 过程:没有返回值的函数。 存储过程的优点:

1、

存储过程增强了

SQL

语言的功能和灵活性(可以SQL编程,能使用变量,表达式、控制结构体)

2、

存储过程能实现较快的执行速度。(

存储过程要比批处理的执行速度快很多,

因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的

Transaction-SQL

语句在每次运行时都要进行编译和优化,速度相对要慢一些。

)

3、

存储过程能过减少网络流量。

针对同一个数据库对象的操作(如查询、修改),如果这一操作所涉及的

Transaction-SQL

语句被组织程存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量并降低了网络负载。

4、

存储过程可被作为一种安全机制来充分利用。

系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。

5、存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。

存储过程的创建:

DELIMITER $$ //定义分隔符

CREATE PROCEDURE p() //p为过程名

BEGIN

--sql语句 //封装语句体

END $$

查看已有的存储过程:show procedure status \G;

调用存储过程:call 存储过程名称();

删除存储过程:drop procedure 存储过程名称;

变量声明:存储过程中用declare声明变量

格式:declare变量名 变量类型 [default 默认值]

存储过程中,变量可以在SQL语句中合法的运算,如+ - * /

运算结果如何赋值 set变量:=表达式

存储过程传参:存储过程的括号里,可以声明参数。 语法是 create procedure p([in/out/inout] 参数名  参数类型 ..)

实例一:创建 运算 赋值

CREATE PROCEDURE p1()

BEGIN

DECLARE age INT DEFAULT 18;

DECLARE height INT DEFAULT 180;

SET age := age +20;

SELECT CONCAT('年龄是', age, '身高是', height);

END$$

0818b9ca8b590ca3270a3433284dd417.png

实例二 :if/else 控制结构

CREATE PROCEDURE p2()

BEGIN

DECLARE age INT DEFAULT 18;

DECLARE height INT DEFAULT 180;

IF age >= 18 THEN

SELECT "已成年";

ELSE

SELECT "未成年";

END IF;

END$$

0818b9ca8b590ca3270a3433284dd417.png

实例三:while/do 控制结构

求1-100的和

CREATE PROCEDURE p3()

BEGIN

DECLARE total INT DEFAULT 0;

DECLARE num INT DEFAULT 0;

WHILE num<=100 DO

SET total := num + total;

SET num := num + 1;

END WHILE;

SELECT total;

END$$

0818b9ca8b590ca3270a3433284dd417.png

实例四:case 控制结构

CREATE PROCEDURE p4()

BEGIN

DECLARE num INT DEFAULT 0;

SET num := FLOOR(4*RAND());

CASE num

WHEN 1 THEN SELECT "cat";

WHEN 2 THEN SELECT "dog";

WHEN 3 THEN SELECT "sheep";

ELSE SELECT "pig";

END CASE;

END$$

0818b9ca8b590ca3270a3433284dd417.png

实例五:repeat循环

CREATE PROCEDURE p5()

BEGIN

DECLARE num INT DEFAULT 0;

DECLARE total INT DEFAULT 0;

REPEAT

SET total = num + total;

SET num := num + 1;

UNTIL num>100 END REPEAT;

SELECT total;

END$$

0818b9ca8b590ca3270a3433284dd417.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值