MySQL的高级应用 (2).ppt
《MySQL的高级应用 (2).ppt》由会员分享,可在线阅读,更多相关《MySQL的高级应用 (2).ppt(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第14章 MySQL的高级应用MySQL 5.0之前的版本并不支持存储过程,随之前的版本并不支持存储过程,随着着MySQL技术的日趋完善,存储过程将在以后技术的日趋完善,存储过程将在以后的项目中得到广泛的应用。曾几何时,虽然拥的项目中得到广泛的应用。曾几何时,虽然拥有高效等优点,有高效等优点,MySQL还是因为不支持存储过还是因为不支持存储过程、视图等功能而受到很多程序员的抵触,随程、视图等功能而受到很多程序员的抵触,随着着MySQL的发展,这些高级功能终于在的发展,这些高级功能终于在MySQL 5.0以后的版本中得以应用。以后的版本中得以应用。本章我们将介绍本章我们将介绍MySQL5的新特性
2、:存储过程、的新特性:存储过程、触发器和视图。触发器和视图。214.1 MySQL与存储过程存储过程能够允许绝大部分的数据库访问逻辑与程序存储过程能够允许绝大部分的数据库访问逻辑与程序逻辑分离开来。逻辑分离开来。存储过程的一个优点是,SQL可以被预先编译,由此提高了程序的速度,因为存储过程包含程序逻辑,可以在数据库服务器端执行更多的处理,由于存储在服务器上,所以存储过程是可复用的组件,客户端不管使用什么脚本语言与数据库连接,都可以直接调用它们;另一个优点是存储程序可以提供改良后的性能,因为只有较少的信息需要在服务器和客户端之间传送,程序的代码变得更加小巧和容易理解。代价是增加了数据库服务器系统
3、的负荷,因为更多的代价是增加了数据库服务器系统的负荷,因为更多的工作要在服务器端完成。工作要在服务器端完成。314.1.1 存储过程的创建一个存储过程包括名字、参数列表,并可以包一个存储过程包括名字、参数列表,并可以包括很多括很多SQL语句。在语句。在MySQL中,创建存储过程中,创建存储过程的语句是的语句是CREATE PROCEDURE。其用法是:。其用法是:CREATE PROCEDURE sp_name(proc_parameter,.)characteristic.routine_bodyMySQL中存储过程的建立以关键字中存储过程的建立以关键字CREATE PROCEDURE开始,
4、后面是存储过程的名称和开始,后面是存储过程的名称和参数、复合语句和变量,这些将在下面的小节参数、复合语句和变量,这些将在下面的小节中依次说明。中依次说明。414.1.2 存储过程的参数1.IN输入参数输入参数表示要向存储过程中传入的参数,该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认参数类型。2.OUT输出参数输出参数的值可在存储过程内部被改变,并可返回。3.INOUT输入输出参数输入输出参数在调用时指定,并且可被改变和返回。514.1.3 复合语句CREATE PROCEDURE命令的参数后面,就是存储命令的参数后面,就是存储过程的主体了,在主体中书写常规的
5、过程的主体了,在主体中书写常规的SQL语句,每句语句,每句以分号以分号(;)结束,主体中书写包含结束,主体中书写包含INSERT、UPDATE、DELETE、SELECT、DROP、CREATE、REPLACE的语句都是合法的,的语句都是合法的,SET、COMMIT以及以及ROLLBACK也是合法的。也是合法的。例如:例如:CREATE PROCEDURE sp_name()BEGINSET a=5;SET b=5;INSERT INTO t VALUES(a);SELECT s1*a FROM t WHERE s1=b;END;614.1.4 变量在复合语句中,声明变量的指令是在复合语句中,
6、声明变量的指令是DECLARE,DECLARE仅被用于仅被用于BEGIN/END复合语句内,并且必须被书写在复合语句的开头,书写顺序依复合语句内,并且必须被书写在复合语句的开头,书写顺序依次是次是DECLARE、变量名、变量类型,见如下、变量名、变量类型,见如下DECLARE语句的例子:语句的例子:CREATE PROCEDURE sp_name()BEGINDECLARE a INT;DECLARE b INT;SET a=5;SET b=5;INSERT INTO t VALUES(a);SELECT s1*a FROM t WHERE s1=b;END;还可以在声明变量的同时使用还可以在
7、声明变量的同时使用DEFAULT,赋给默认值:,赋给默认值:CREATE PROCEDURE sp_name()BEGINDECLARE a,b INT DEFAULT 5;/变量a、b被赋默认值5INSERT INTO t VALUES(a);SELECT s1*a FROM t WHERE s1=b;END;714.1.5 条件语句在复合语句中可以使用在复合语句中可以使用if条件机制,来根据不同条件机制,来根据不同的情况选择不同的分支运行,和的情况选择不同的分支运行,和PHP的的if条件语条件语句类似。用法如下:句类似。用法如下:if search_condition thenstatem
8、entelsestatementend if;if实现了一个基本的条件机制,如果实现了一个基本的条件机制,如果search_condition条件求值为真,相应的条件求值为真,相应的SQL语句列表被执行。语句列表被执行。814.1.6 循环语句1.WHILE循环语法形式为:WHILE expression DOstatementsEND WHILE;2.LOOP循环语法形式为:LOOPstatementsEND LOOP;3.REPEAT UNTIL循环语法形式为:REPEATstatementsUNTIL expressionEND REPEAT;914.1.7 存储过程的查看、更改和删除(
9、1)查看当前数据库中所有已存查看当前数据库中所有已存在的存储过程:在的存储过程:show procedure status;(2)查看某一个具体的存储过程:查看某一个具体的存储过程:show create procedure sp_name;1014.1.8 PHP5调用存储过程每次验证示例的存储过程时,我们都是使用每次验证示例的存储过程时,我们都是使用CALL关键字后面加存储过程名和参数来调用定关键字后面加存储过程名和参数来调用定义好的存储过程,用法是:义好的存储过程,用法是:CALL sp_name()需要再次重申的是,即使该存储过程没有参数需要再次重申的是,即使该存储过程没有参数传递,存
10、储过程名称后面也必须加括号。在一传递,存储过程名称后面也必须加括号。在一个存储过程中是不能删除另一个存储过程的,个存储过程中是不能删除另一个存储过程的,只能调用另一个存储过程。只能调用另一个存储过程。1114.2 MySQL与触发器触发程序是与表有关的命名数据库对象,当表上出现触发程序是与表有关的命名数据库对象,当表上出现特定的事件时,将激活该对象。触发器通常用于强制特定的事件时,将激活该对象。触发器通常用于强制业务规则,可以确保数据的完整性和一致性。业务规则,可以确保数据的完整性和一致性。对数据库中的表而言,创建触发器可以用来在特定事对数据库中的表而言,创建触发器可以用来在特定事件发生时执行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL的高级应用 2 MySQL 高级 应用
限制150内