数据库MySQL-函数
函数
含义:一组预先编译好的sql 语句的集合,理解成批处理语句。
好处:
1 、提高代码的重用性
2 、简化操作
3 、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率
函数和存储过程的区别:
存储过程:可以有0 个返回,也可以有多个返回。适合做批量的插入、批量的更新。
函数:只能有一个返回,适合做处理数据后返回一个结果。
* /
一、创建语法
CREATE FUNCTION 函数名( 参数列表) RETURNS 返回类型
BEGIN
函数体
END
注意:
1 、参数列表包括两部分:
参数名 参数类型
2 、函数体:肯定会有return 语句,如果没有也会报错
如果return 语句没有放在函数体的最后也不报错,但不建议。
3 、函数体中仅有一句话,则可以省略begin end
4 、使用delimiter 语句设置结束标记
* /
二、调用语法:
SELECT 函数名( 参数列表)
CREATE FUNCTION myf1( ) RETURNS INT
BEGIN
DECLARE a INT DEFAULT 0 ;
SELECT COUNT ( * ) INTO a
FROM ` employees` ;
RETURN a;
END $
DROP myf1;
CREATE FUNCTION myf2( NAME VARCHAR ( 20 ) ) RETURNS DOUBLE
BEGIN
SET @sal = 0 ;
SELECT salary INTO @sal
FROM employees
WHERE last_name = NAME;
RETURN @sal ;
END $
CREATE FUNCTION myf3( departmentName VARCHAR ( 20 ) ) RETURNS DOUBLE
BEGIN
DECLARE ans DOUBLE DEFAULT 0 ;
DECLARE t VARCHAR ( 20 ) DEFAULT NULL ;
SELECT d. ` department_name` , AVG ( salary) INTO t, ans
FROM ` departments` d
INNER JOIN ` employees` e
ON e. ` department_id` = d. ` department_id`
WHERE d. ` department_name` = departmentName;
RETURN ans;
END $
SELECT myf3( 'IT' ) $
三、查看函数
SHOW CREATE FUNCTION myf3;
四、删除函数
DROP FUNCTION myf3;