MySQL复习day07:函数



函数

一组预先编译好的SQL语句的集合,可以完成批处理。

函数特点

1. 提高代码的重用性;
2. 简化操作;
3. 减少编译次数并且减少了和数据库服务器的连接次数,提高的效率;

存储过程vs函数

  • 存储过程:可以有0个返回,也可以有多个返回,适合做批量插入,批量更新;
  • 函数:有且仅有1 个返回,适合做处理数据后返回一个结果

创建函数

1.语法

create function 函数名(参数列表)returns  返回类型
begin
        函数体
end

2.注意

1.参数列表包含参数名参数类型 ,例如 myname int;
2.函数体:必须有return ,格式:return 返回值;
3.设置delimiter语句设置结束标记;

3.调用

select 函数名(参数列表);

函数示例

示例一

use stus;
---------------------------------------------------------------

drop procedure if exists p1;
set global log_bin_trust_function_creators=TRUE;

#创建函数f():无参有返回
delimiter $
create function f() returns  int
begin
     declare res int default 0;
     select count(*) into res
     from booktype;
     return res;
end $

#调用函数f()
select f() $

示例二

use stus;
---------------------------------------------------------------
delimiter $
drop function if exists sal ;

#创建函数sal():有参有返回
create function sal(n varchar(25)) returns int
begin
		set @res=0;
        select id into @res
        from booktype
        where name = n;
        return @res;
end $

#调用函数sal()
select sal('fiction')$

查看函数

show  create function  函数名;

删除函数

drop function 函数名;

简单例子

1.创建函数,实现传入两个一维float数,返回二者的距离。

delimiter $
drop function if exists f;
create function f(num1 float ,num2 float ) returns float
begin
     declare res float default 0.0;
     select if(num1-num2>0,num1-num2,num2-num1) into res;
     return res;
end $
 
select f(12.3,56.2) as 'ans';

1.创建函数,实现传入两个二维float坐标,返回二者的距离。

delimiter $
drop function if exists f1;
create function f1(x1 float ,y1 float ,x2 float ,y2 float ) returns float
begin
     declare res float default 0.0;
     set @a1 = pow(x1-x2,2);
     set @a2 = pow(y1-y2,2);
     select  pow(@a1+@a2,0.5) into res;
     return res;
end $
 
select f1(1,1,2,2) as 'ans';

MySQL学习列表

MySQL复习day01:数据库简介和 DQL数据查询语言
MySQL复习day02:DQL数据查询语言续
MySQL复习day03:DQL数据查询语言完结
MySQL复习day04:DML数据操作语言和DDL数据定义语言
MySQL复习day05:TCL事务控制语言和视图
MySQL复习day06:变量,存储过程
MySQL复习day07:函数
MySQL复习day08:流程控制结构
MySQL复习day09:逻辑架构和引擎,索引详解(explain)

致谢

感谢诸君观看,如果感觉有用的话,点个赞吧!🎉



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值