- | 作者:新一、
- | 简书:https://www.jianshu.com/u/b3263fc54bce
- | 微信公众号:1024笔记
- | GitHub:https://github.com/JangYt?tab=repositories
- | 博客地址:https://blog.csdn.net/qq_41153943
今天项目需要写个存储过程,长时间没有写存储过程有点生疏和忘记了,所以想着写一篇文章来总结下存储过程的一些相关知识,算是复习一下加深记忆。
一、基本概念
这里有两个概念:存储过程和存储函数。
存储过程和存储函数是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程和函数可以简化应用开发人员的工作,减少数据在数据库和应用服务器之间的传输,能够提高数据库的处理效率。存储过程在高并发数据中使用的比较多。
存储过程和存储函数的区别在于存储函数是必须有返回值的,而存储过程并没有。存储过程的参数可以是in ,out ,inout类型,存储函数的参数类型只能是in。所以可以说存储函数是一个有返回值的存储过程,而存储过程是一个没有返回值的存储函数。
二、存储过程相关操作1、创建、调用存储过程
创建存储过程的基本语法:
create procedure procedure_name([params,.....])
begin
----SQL语句
end;
调用存储过程的语法:
call procedure_name();
实例:
首先创建一个employee表,并插入数据:
DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`lastName` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`departmentID` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- ----------------------------
INSERT INTO `employee` VALUES ('1', '亚索', '123qq.com', '201');
INSERT INTO `employee` VALUES ('2', '李青', '12345@qq.com', '201');
INSERT INTO `employee` VALUES ('3', '艾欧尼亚', '774855@qq.com', '203');
INSERT INTO `employee` VALUES ('4', '德玛西亚', '6565@qq.com', '203'
创建一个存储过程
create procedure demo1()
begin
select * from employee
end$
调用刚刚创建的存储过程
call demo1()$
2、查看和删除存储过程
查看存储过程的基本语法:
查询指定数据库的所有的存储过程
如果不指明type 则默认shi存储过程
select name from mysql.proc where db='数据库名字 and type = 'PROCEDURE'
示例:
select name from mysql.proc where db='jdbc'$
查看指定存储过程的定义
show create procedure [数据库名].存储过程名 G$
查看存储过程的状态
show procedure status G$
删除存储过程
drop procedure 存储过程名称$
三、存储函数相关操作
存储函数的基本语法与存储过程基本相似:
create function function_name([params type,.....])
returns type
begin
.....
end;
实例:
定义一个存储过程,返回刚刚创建的employee表中departmentID为203的数据有几条
create function numofemployee(department_ID int)
returns int
begin
declare count int;
select count(*) into count from employee where departmentID=department_ID ;
return count;
end$
调用存储函数与存储过程有点不一样
select function_name(params)$
查看存储函数的基本语法:
查询指定数据库的所有的存储函数
select name from mysql.proc where db = '数据库名字' and type= 'FUNCTION'
查看存储过程的状态
show function status G$
删除存储函数基本语法:
drop function fun_name$
这篇文章就是介绍一下关于存储过程和存储函数的一些基本概念和相关的操作,下一篇文章将会着重介绍下存储过程的一些相关语法和使用。
本文原创首发于微信公众号:1024笔记,关注公众号可免费获取更多学习资源。