一、存储过程
MySQL中提供存储过程和存储函数机制,将其统称为存储程序。
SQL语句要先编译,然后执行,存储程序是一组为了完成特定功能的SQL语句,编译后存到数据库中。
用户通过指定存储程序的名字并给定参数来调用才会执行。
存储程序的优点:
1.存储过程能提高应用程序的性能。存储过程被编译后存储在数据库中。
2.编译存储过程之后,MySQL将其放入缓存中。存储过程可以减少应用和服务器之间的流量,应用不用发送多个冗长的SQL语句,只需要发送存储过程的名称和参数。
缺点:
1.若大量使用存储过程,使用存储过程的每个连接的内存使用量会很大。
如果在存储过程中使用大量逻辑操作,CPU使用率也会增加。
2.不能调试存储过程,只有少数数据库管理系统允许调试存储过程。
MySQL不提供调试存储过程的功能。
3.公司开发中不使用存储过程,分析三层架构,业务逻辑一般放到业务层,也就是Tomcat,而不是把业务放到数据库处理。
使用存储过程使业务和数据库严重耦合。
4.对于业务层性能扩容的手段有很多,搭建集群、使用缓存提高响应速度等。
大多数情况下,业务层并不是整个项目性能的瓶颈,而是数据库。
业务层性能扩容相比数据库性能扩容方便的多。
所以通常尽可能优化数据库性能,降低数据层压力。
存储过程的使用
1.语法
CREATE PROCEDURE procedure_name([parmeters[...]])
begin
--SQL语句
end;
2.举例
create procedure test()
beginselect 'Hello';
end;
3.调用 存储过程
call test();
二、MySQL的Function
MySQL中,Function(函数)是一种被定义在数据库中并可以在SQL查询中调用的可重用代码块。
MySQL支持用户自定义函数,用户可以根据需求创建函数执行特定任务。
Function(函数)的特点:
1.函数是一段封装好的SQL代码,接收输入参数并返回单一的值。
2.函数可用来简化复杂的SQL查询、计算和数据处理操作。
3.函数可以作为查询中的表达式使用,也可以在其他SQL语句中调用。
4.函数提供了代码重用的机制,可以减少重复编码。
MySQL中,可以用CREATE FUNCTION
语句创建函数。
CREATE FUNCTION function_name(parameter_list)
RETURNS return_type
BEGIN --函数体,包含具体的SQL代码
END;
比如,创建一个Function计算两个数字的和:
CREATE FUNCTION calculate_sum(a INT, b INT)
RETURNS INT
BEGINDECLARE result INT;SET result = a + b;RETURN result;
END;
创建Function(函数)后,可以通过SELECT语句调用该函数
SELECT calculate_sum(5,3);-- 调用calculate_sum函数计算5和3的和