MySQL复习day07:函数

MySQL函数

    • 函数
      • 函数特点
      • 存储过程vs函数
      • 创建函数
      • 函数示例
      • 查看函数
      • 删除函数
      • 简单例子
    • MySQL学习列表
    • 致谢



函数

一组预先编译好的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)

致谢

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



你可能感兴趣的:(数据库,mysql,数据库)