引入:
我们要实现对数据库表的一个操作,实现这一个需要使用多条SQL语句进行操作。同时,这样的操作在我的程序中是使用比较频繁的。回想我们以前学习java的时候。我们需要需要完成一个特定的功能,而这一个功能使用的频率比较多。那么这一个时候我们是选用了把实现的代码抽取出来,写成一个方法,每当我需要实现这一个功能的时候就去调用这一个方法即可。那么在数据库中有没有类似的操作呢?可以实现对一些特定的功能实现类似方法的操作?那么就是存储过程。
存储过程概述
存储过程概述
1.概述
所谓的存储过程就是一组预先编译好的SQL语句的集合,理解成批处理语句。
2.使用存储过程的好处
(1)、提高代码的重用性。
(2)、简化操作。
(3)、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率。
存储过程创建
存储过程的创建
1.创建存储过程语法:
CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
存储过程体(一组合法的SQL语句)
END
2.创建过程注意事项
(1)、参数列表包含三部分
参数模式 参数名 参数类型
如:
in stuname varchar(20)
参数模式:
in:该参数可以作为输入,也就是该参数需要调用方传入值
out:该参数可以作为输出,也就是该参数可以作为返回值
inout:该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值
(2)、使用注意事项
A:如果存储过程体仅仅只有一句话,begin end可以省略。
B:存储过程体中的每条sql语句的结尾要求必须加分号。
C 存储过程的结尾可以使用 delimiter 重新设置
语法:
delimiter 结束标记
如:
delimiter $
存储过程的调用
存储过程的调用:
CALL 存储过程名(实参列表);
类似于方法的调用。
存储过程使用测试
1. 空参列表,存储多条记录(实际存储过程在存储多条记录效果更佳),创建以及调用
创建测试使用数据库表
DROP TABLE IF EXISTS `admin`;
CREATE TABLE `admin` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(10) NOT NULL,
`password` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
创建存储过程并调用
2.参数模式的基本使用,如使用带'in'模式参数的存储过程,传入参数,找出其对应的值
表beauty
表boys
创建存储过程并调用
3.out 模式参数的存储过程,实现结果以及数据库表如2
4.创建带inout模式参数的存储过程,实现传入a和b两个值,最终a和b都翻倍并返回
存储过程的删除操作
删除存储过程语法
语法:drop procedure 存储过程名;
如:删除存储过程myp1;
查看存储过程的相关信息
查看存储过程的信息
语法:SHOW CREATE PROCEDURE 存储过程名称;
如:查看myp1存储过程的相关信息