【MySQL 第十天 自定义函数|创建和使用自定义函数|循环判断语句的使用】

article/2025/9/24 18:08:03

【MySQL 第十天 自定义函数|创建和使用自定义函数|循环判断语句的使用】

  • 【1】mysql自定义函数的介绍
  • 【2】mysql创建和使用自定义函数
  • 【3】mysql删除自定义函数
  • 【4】mysql流控的使用
    • 【4.1】mysql流程控制语句
    • 【4.2】mysql IF语句
    • 【4.3】mysql CASE语句
    • 【4.4】mysql WHILE循环语句
    • 【4.5】mysql LOOP循环语句
    • 【4.6】mysql REPEAT循环语句

在这里插入图片描述

==1024 程序员 真的很累了 ==


【1】mysql自定义函数的介绍

在这里插入图片描述

select book_name ,length(book_name) from book_bak;

在这里插入图片描述


在这里插入图片描述

create function funtion_name(func_parameter)
returns type 
[characteritics ...]routine_body【1】SQL_security:安全 {definer(规定)|invoker(祈求者)}
【2】comment :解释
【3】characteritics :特征

在这里插入图片描述

begin    end

在这里插入图片描述


举例开始
在这里插入图片描述

-- 先看一个日期格式化的函数
select date_format(return_date,'%Y-%m') from borrowinfo;-- 创建自定义函数 希望通过指点列名就可以查询到日期信息 YYYY-mm
create function fun(column_name date)
returns varchar(15) -- 指定返回的类型
return date_format(column_name,'%Y-%m'); -- 指定返回的结果-- 使用自定义的函数查询
select fun(return_date)from borrowinfo;

在这里插入图片描述

自定义函数的完整举例

-- 先看一个日期格式化的函数
select date_format(return_date,'%Y-%m') from borrowinfo;-- 创建自定义函数 希望通过指点列名就可以查询到日期信息 YYYY-mm
delimiter //   -- 开始 如果没有,指定返回结果哪里的 ; 会报错 解决这个问题的关键字
create function fun(column_name date)
returns varchar(15) -- 指定返回的类型
begin
return date_format(column_name,'%Y-%m'); -- 指定返回的结果
end // -- 没有
delimiter ; -- 结束-- 使用自定义的函数查询
select fun(return_date)from borrowinfo;

在这里插入图片描述


【2】mysql创建和使用自定义函数

在这里插入图片描述

-- 创建无参数的自定义函数 对日期函数进行封装和简化
create function  a()
returns varchar(11)
return date_format(curdate(),'%Y年%m月%d日');select a();

在这里插入图片描述


在这里插入图片描述

-- 创建带有参数的自定义函数 传入一个参数 
create function b(column_name int )
returns varchar(50) -- 返回值的数据类型
return (select concat_ws('-',book_id,book_name,store) from bookinfo where book_id = column_name);-- 以图书信息表为例 传入一个图书信息表已有的图书编号select b(1);

在这里插入图片描述


【3】mysql删除自定义函数

drop function [if exists ] fun_name;

在这里插入图片描述

-- 删除自定义函数 
DROP FUNCTION if EXISTS a;-- 删除不存在的函数会报错 FUNCTION rb_sql.a does not existDROP FUNCTION  a;-- 删除自定义函数 函数不存在时会警告  (0 row(s) affected, 1 warning(s))
DROP FUNCTION if EXISTS a;

在这里插入图片描述


【4】mysql流控的使用

在这里插入图片描述

begin ... and

在这里插入图片描述

declare : 声明
//定义整形 num 默认值=10
declare num int default 10;

在这里插入图片描述


into :(表示方向)进入…中; (表示所属)输入; (表示状态)进入…状态; (表示时间)持续到;
set num =10;
//将图书信息表的value 赋值给num
select value into num from bookinfo;

在这里插入图片描述


在这里插入图片描述

drop FUNCTION show_name_store;create FUNCTION show_name_store(val int)
returns varchar(30)
return (select concat_ws('---',book_name,store) from bookinfo where val = book_id);select show_name_store(1);

在这里插入图片描述

== 简化以上方法 实际运用建议采用以下方法==

-- 删除自定义函数
drop FUNCTION show_name_store;-- 创建自定义函数 定义变量 接收函数的返回值delimiter //
create FUNCTION show_name_store(val int)
returns varchar(30)
begin 
declare result varchar(40); -- 定义变量
select concat_ws('---',book_name,store) into result  from bookinfo where val = book_id;
return result;
end //
delimiter;-- 调用函数 返回结果
select show_name_store(4);

在这里插入图片描述


【4.1】mysql流程控制语句

loop: 圈,环; []宫内避孕环; 回路; 弯曲部分;
repeat :重说;重申;再做;重复做;在口中留下余味;重复;重

在这里插入图片描述


【4.2】mysql IF语句

== IF语句==
在这里插入图片描述


在这里插入图片描述

== 图书信息表==
在这里插入图片描述

读者信息表在这里插入图片描述
== 借阅信息表==
在这里插入图片描述


-- 第一题  注意分号 和不要漏写
delimiter //
create FUNCTION show_level(cid char(18))
returns varchar(10)
begin 
declare lev varchar(10);
declare money decimal(7,3);
select balance into money from readerinfo where card_id = cid;
if money >= 500 then set lev = '金牌会员';
elseif money >=300 then set lev = '高级会员';
elseif money >= 200 then set lev = '普通会员';
else set lev ='非会员,余额不足';
end if;
return lev;
end //
delimiter ; -- 查询
select show_level(card_id) ,balance from readerinfo;

在这里插入图片描述


【4.3】mysql CASE语句

statement :  陈述;声明;报表;报道;账单;结算单;官方声明;

在这里插入图片描述

delimiter //
create FUNCTION show_case(cid char(18))
returns varchar(10)
begin 
declare a varchar(10);
declare money DECIMAL(7,3);
declare num int;
select balance into money from readerinfo where card_id = cid;
set num = truncate(money/100,0); -- 截断函数 保留整数
case num
when 0 then set a ='非会员,余额不足';
when 1 then set a='非会员,余额不足';
when 2 then set a= '普通会员';
when 3 then set a='等级会员';
when 4 then set a='高级会员';
else set a= '金牌会员';
end case;
return a;
end //
delimiter; 
-- 查询
select show_case(card_id),balance from readerinfo;

在这里插入图片描述


在这里插入图片描述

delimiter //
create FUNCTION show_case2(cid char(18))
returns varchar(10)
begin 
declare a varchar(10);
declare money DECIMAL(7,3);
select balance into money from readerinfo where card_id = cid;
case 
when money>=500 then set a='金牌会员';
when money>=200 then set a= '普通会员';
when money>=300 then set a='高级会员';
else set money= '非会员,余额不足';
end case;
return a;
end //
delimiter; 
-- 查询
select show_case2(card_id),balance from readerinfo;

在这里插入图片描述


【4.4】mysql WHILE循环语句

在这里插入图片描述

-- 求N以内的数求和
delimiter //
create function test1(n int)
returns int
begin declare num int default 0;declare sum int default 0;
while num<n doset num = num + 1;set sum = sum + num;
end while;
return sum;
end//
delimiter ;select test1(3);

在这里插入图片描述


【4.5】mysql LOOP循环语句

在这里插入图片描述

-- 求N以内的数求和
delimiter //
drop function if exists test1//
create function test1(n int)
returns int
begin declare num int default 0;declare sum int default 0;
label:loopset num = num + 1;set sum = sum + num;if(num>=n) then leave label; -- 退出loop循环end if;
end loop label;
return sum;
end//
delimiter ;select test1(3);

在这里插入图片描述


【4.6】mysql REPEAT循环语句

在这里插入图片描述

-- 求N以内的数求和
delimiter //
drop function if exists test1//
create function test1(n int)
returns int
begin declare num int default 0;declare sum int default 0;
repeatset num = num + 1;set sum = sum + num;
until num>=n
end repeat;
return sum;
end//
delimiter ;select test1(3);

在这里插入图片描述


== mysql 还未结束,生命不息,创作不息,程序员保持:/😕😕:/==
在这里插入图片描述


http://chatgpt.dhexx.cn/article/xqMPhEKU.shtml

相关文章

SQL Function 自定义函数

目录 产生背景&#xff08;已经有了存储过程&#xff0c;为什么还要使用自定义函数&#xff09; 发展历史 构成 使用方法 适用范围 注意事项 疑问 内容 产生背景&#xff08;已经有了存储过程&#xff0c;为什么还要使用自定义函数&#xff09; 与存储过程的区别&…

【精品】MySQL 自定义函数

语法 CREATE FUNCTION <函数名>(参数列表) RETURNS <返回值数据类型> BEGINRETURN(<SQL语句>); END示例一&#xff1a;生成随机的电话号码 CREATE FUNCTION generatePhone() RETURNS char(11) CHARSET utf8 DETERMINISTIC BEGINDECLARE head VARCHAR(100)…

sql:mysql:自定义函数

一、基本语法 delimiter 自定义符号  -- 如果函数体只有一条语句, begin和end可以省略, 同时delimiter也可以省略create function 函数名(形参列表) returns 返回类型  -- 注意是retrunsbegin函数体    -- 函数内定义的变量如&#xff1a;set x 1; 变量x为全局变量&am…

mysql之自定义函数

本文内容&#xff1a; 什么是函数函数的创建函数的调用函数的查看函数的修改函数的删除 首发日期&#xff1a;2018-04-18 什么是函数&#xff1a; 函数存储着一系列sql语句&#xff0c;调用函数就是一次性执行这些语句。所以函数可以降低语句重复。【但注意的是函数注重返回值&…

SQL Server 自定义函数(Function)

SQL Server 自定义函数&#xff08;Function&#xff09;——参数默认值 sql server 自定义函数分为三种类型&#xff1a;标量函数&#xff08;Scalar Function&#xff09;、内嵌表值函数&#xff08;Inline Function&#xff09;、多声明表值函数&#xff08;Multi-Statemen…

mysql自定义函数实现

mysql自定义函数实现 环境准备 查看mysql版本 select version();查看mysql存储引擎 show variables like %storage_engine%;创建测试表 CREATE TABLE dsp_user_media_tag (id int(11) NOT NULL AUTO_INCREMENT,imei varchar(50) COLLATE utf8_bin DEFAULT NULL,tagname va…

MySQL自定义函数用法详解

MySQL自定义函数用法详解-复合结构自定义变量/流程控制 自定义函数 (user-defined function UDF)就是用一个象ABS() 或 CONCAT()这样的固有&#xff08;内建&#xff09;函数一样作用的新函数去扩展MySQL。 所以UDF是对MySQL功能的一个扩展 创建和删除自定义函数语法: 创建UDF:…

SQL server 自定义函数FUNCTION的使用

前言&#xff1a; 在SQL server中不仅可以可以使用系统自带的函数&#xff08;时间函数、聚合函数、字符串函数等等&#xff09;&#xff0c;还可以根据需要自定义函数。 一、定义&#xff1a; 用户自定义函数的类型&#xff1a; 1、标量值函数&#xff08;返回一个标量值&a…

功能测试用例设计方法分享

测试用例可以用来衡量一个项目测试质量&#xff0c;因此在平时的测试流程中&#xff0c;编写测试用例就是测试过程中很重要的一步&#xff0c;每一个测试工程师都需要并且非常熟练的编写测试用例&#xff0c;能在编写测试用例中尽可能的覆盖任何异常的测试点&#xff1b;如何能…

判定表测试用例方法——实例

测试用例设计方法——判定表法 判定表法表示的是有多个输入&#xff0c;和多个输出&#xff0c;而且输入与输入之间有相互的组合关系、输入和输出之间有相互的制约和依赖关系, 判定表由四个组成部分 判定表基本概念  条件桩&#xff1a;输入条件, 列出了系统的所有输入&…

测试用例编写方法

测试用例编写方法 等价类划分法 一、等价类划分法的定义 把程序的输入域和输出域划分成若干部分&#xff0c;然后从各个部分中选取若干代表性数据作为测试用例。这些数据在测试中的作用等价于其所属部分的其他值。 二、等价类划分法的术语 等价类&#xff1a;输入域的各个…

软件测试用例设计方法(一)

目录 软件测试用例设计之等价类划分法一、等价类划分法的定义二、等价类划分法的术语三、等价类划分原则四、实例演示&#xff08;三角形问题和档案管理系统问题&#xff09; 软件测试用例之边界值分析法一、边界值分析法定义二、等价类划分法和边界值分析法的区别三、内部边界…

测试用例方法-判定表法

判定表法案例 若用户欠费或关机&#xff0c;则不允许主被叫 等价类划分法和边界值分析法都是着重考虑单个输入的输入条件&#xff0c;但是没有考虑输入条件的各种组合&#xff0c;输入条件与输出条件之间的相互制约关系。所以要使用判定表法才能解决上述案例编写测试用例的过…

编写测试用例方法之错误推测法

今天我们再来介绍另外一个编写测试用例的方法&#xff1a;错误推测法。话不多说&#xff0c;开始整干货&#xff0c;老规矩&#xff0c;首先全图镇楼。 错误推测法其实它不同于等价类划分法或者边界值分析法&#xff0c;它是对有效等价类和边界值分析法的一个补充。因为错误推测…

【测试】编写测试用例的常用方法

文章目录 1&#xff09;等价类划分法1.1 什么是等价类有效等价类&#xff1a;无效等价类&#xff1a; 1.2 划分标准1.3 划分方法1、确立等价类2、转化为测试用例 1.4 实例&#xff1a;三角形问题1.4.1 分析对输入条件的要求&#xff08;显性和隐性&#xff09;1.4.2 列出等价类…

编写测试用例的方法

编写测试用例的方法 一、等价类划分法&#xff08;重点&#xff09;1、应用场景&#xff1a;多用于输入框。2、概念&#xff1a;3、等价类&#xff1a;4、示例&#xff1a; 二、边界值法&#xff08;重点&#xff09;三、场景法&#xff08;重点&#xff09;1、概念&#xff1a…

编写测试用例的七种方法

1 测试用例的概念 测试用例是为了实施测试而向被测试系统提供的一组集合&#xff0c;这组集合包括&#xff1a;测试环境、操作步骤、测试数据、预期结果等要素 2 常见编写测试用例的七种方法 基于需求的设计方法 等价类 边界值 因果图 场景设计法 错误猜测法 3 基于需…

【路径规划】(4) 蚁群算法,附python完整代码

大家好&#xff0c;今天和各位分享一下蚁群算法&#xff0c;并基于 tkinter 完成一个旅行商问题。完整代码可以从我的 GitHub 中获得&#xff1a; https://github.com/LiSir-HIT/Mathematical-Programming/tree/main/Path%20Planning 1. 算法介绍 蚁群算法是由 Mr.Dorigo 博士…

Python编程实现蚁群算法详解

这篇文章主要介绍了Python编程实现蚁群算法详解,涉及蚂蚁算法的简介,主要原理及公式,以及Python中的实现代码,具有一定参考价值,需要的朋友可以了解下 简介 蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型算法。它由Marco…

智能优化算法:蝙蝠算法-附代码

智能优化算法&#xff1a;蝙蝠算法-附代码 文章目录 智能优化算法&#xff1a;蝙蝠算法-附代码1.算法原理2.算法流程3.算法结果4.参考文献5.MATLAB代码6.python代码 摘要&#xff1a;蝙蝠算法&#xff08;Bat Algorithm&#xff0c;BA&#xff09;[1] 是受蝙蝠回声定位捕食行为…