内容正文:
第7章 存储过程
本单元教学目标
了解存储过程的种类
认识、了解存储过程的作用
掌握存储过程的开发语法
熟练使用数据库IDE开发、调试存储过程
存储过程概念(一)
SQL语句:
SQL语句在执行的时候需要先编译,然后执行
存储过程:
存储过程(Stored Procedure)
是一组为了完成特定功能的SQL语句集
经编译后存储在数据库中
用户通过指定存储过程的名字与参数(如果该存储过程带有参数)来调用执行它。
3
存储过程概念(二)
一个存储过程是一个可编程的函数
它在数据库中创建并保存
它由SQL语句和一些特殊的控制结构组成
存储过程适用于以下场合
在不同的平台(应用程序)上执行相同的函数
封装特定功能
是数据库编程中面向对象方法的模拟
4
存储过程优点(一)
(1).存储过程增强了SQL语言的功能和灵活性
存储过程可以用流控制语句编写,有很强的灵活性
可以完成复杂的判断和较复杂的运算
(2).存储过程是允许编程的标准组件
被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句
数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响
(3).存储过程能实现较快的执行速度
如果某一操作包含大量的SQL代码或分别被多次执行,
存储过程比批处理执行速度快很多,因存储过程是预编译的
批处理的SQL语句在每次运行时要进行编译,速度相对慢
5
存储过程优点(二)
(4).存储过程能过减少网络流量。
当同一操作所涉及的众多SQL语句被编码到存储过程中
在客户机上调用该存储过程时,网络中只需传送该调用语句
从而大大减少了网络流量并降低了网络负载
(5).存储过程被作为一种安全机制来充分利用
系统管理员通过执行某一存储过程的权限进行限制
能够实现对相应的数据的访问权限的限制,
避免了非授权用户对数据的访问,从而保证了数据的安全
6
存储过程的创建
MySQL格式:
CREATE PROCEDURE 存储过程名 ([过程参数[,...]])
BEGIN
…
过程控制语句(Transaction-SQL)
…
END
7
存储过程案例|创建User表
CREATE DATABASE IF NOT EXISTS mydb;
USE mydb;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`user_id` int(10) unsigned NOT NULL auto_increment,
`user_name` varchar(45) NOT NULL,
`pass_word` varchar(45) NOT NULL,
`email` varchar(45) NOT NULL,
`phone` varchar(45) NOT NULL,
`sex` char(1) NOT NULL,
`score` int(10) unsigned NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
INSERT INTO `user` (`user_id`,`user_name`,`pass_word`,`email`,`phone`,`sex`,`score`) VALUES
(1,'LiMing','LiMing','LiMing@qq.com','83278904','0',60),
(2,'ZhuangPing','ZhuangPing','ZhuangPing@qq.com','83278678','0',70),
(3,'LuMei','LuMei','LuMei@qq.com','83278904','1',80),
(4,'QiaoBing','QiaoBing','QiaoBing@qq.com','83278452','1',70),
(5,'Kerry','Kerry','Kerry@qq.com','83278678','1',50),
(6,'Jetty','Jetty','Jetty@qq.com','83278904','0',90),
(7,'Lucy','Lucy','Lucy@qq.com','83278904','0',40),
(8,'Honey','Honey','Honey@qq.com','83278904','1',80),
(9,'Wendy','Wendy','Wendy@qq.com','83278452','0',50),
(10,'Rose','Rose','Rose@qq.com','83278904','0',30);