数据库学习笔记(8)——mysql中的函数和存储过程

2023-11-20

1、MySQL中的函数:

  • 1、数据库主要做存储和查询操作,逻辑操作一般不在数据库中进行操作
  • 2、MySQL中的函数主要是自定义函数,其中自定义函数格式如下:
-- 修改语句结束符
delimiter $$
create function 函数名(参数名 数据类型, 参数名 数据类型) returns 返回值类型
begin 
	函数体
	return 返回值;
end $$
-- 定义完成之后改回默认的
delimiter ;

注意:因为函数体中肯定会写SQL语句,SQL语句结束标记:; 会和函数结束之后end之后的:; 重合,所以定义函数之前需要修改下sql语句的结束符。
注意:可能会遇到安全等级不够的报错信息,实际操作中可能需要修改安全等级。

  • 4、分支举例
-- Error Code: 1046. No database selected Select the default 
-- DB to be used by double-clicking its name in the SCHEMAS list in the sidebar.
use db_exercise;

-- Error Code: 1418. This function has none of DETERMINISTIC, 
-- NO SQL, or READS SQL DATA in its declaration and binary 
-- logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
set global log_bin_trust_function_creators=1;


-- 第一个简单函数
-- 修改结束符
delimiter $$
create function `add_a_b`(a int, b int) returns int
begin 
	return (a+b)/2;
end $$
-- 定义完成之后改回默认的
delimiter ;
-- 调用函数
select add_a_b(6,4);

-- 第二个分支函数
-- 修改结束符
delimiter $$
create function `chose_H_A_N`(a decimal(5,2)) returns char(1)
begin 
	if a >= 60 then return 'H';
    elseif a >= 30 then return 'A';
    else return 'N';
    end if;
end $$
-- 定义完成之后改回默认的
delimiter ;
-- 调用函数
select chose_H_A_N(70.23);
  • 5、循环
    循环主要有三种结构,分别如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    练习:
-- 第三个循环自定义函数
delimiter $$
create function g_sum(num int) returns int
begin
	-- 定义变量
    declare r int default 0;
    declare i int default 1;
    while i <= num do
		set r=r+i;
        set i=i+1;
	end while;
    return r;
end $$
delimiter ;
select g_sum(4);
  • 6、删除函数
drop function 函数名;

2、存储过程:

  • 1、存储过程可以理解成在服务器上保存一组SQL代码(或者可以理解为对SQL代码的封装)
  • 2、存储过程的意义:将SQL语句设置成存储过程,要比一条条的sql语句执行性能效率快捷一些
  • 3、存储过程语句如下:
-- 修改语句结束符
delimiter $$
create function 存储过程名(参数名 数据类型, 参数名 数据类型)
begin 
	存储过程体
	return 返回值;
end $$
-- 定义完成之后改回默认的
delimiter ;

-- 删除存储过程的语句
drop procedure 存储过程名;
  • 4、举例
    在这里插入图片描述
  • 注意:存储过程的数据也可以拿出来,需要对参数设置修饰符(in,out)
  • 注意:函数和存储过程在workbench的图形化界面中也可以设置
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库学习笔记(8)——mysql中的函数和存储过程 的相关文章

随机推荐

  • oracle批量修改某个字段的值的一部分

    有个字段是id aaa10 aaa12 aaa13 要改成 kkk10 kkk12 kkk13 UPDATE tablename SET id REPLACE id aaa kkk
  • Java与C#一些区别(学习笔记)

    一 基础语法 1 Console表示控制台 2 输入 Console ReadLine 格式 string name name Console ReadLine 3 输出 Console WriteLine 这个自带换行 Console W
  • Vscode中Python无法将pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

    在Python需要pip下载插件时报错 是因为没有把Python安装路径下的Scripts添加到系统的path路径中 设置完之后重新启动Vscode就可以使用pip了
  • [需求管理-4]:需求分析全过程:需求分析+资源评估+项目计划

    前言 需求收集后 需要经过漫长的需求分析和所需要评估过程 才能正式在某个软件版本中实现需求 在软件开发人员通过编程实现需求前 中间经过了多种角色的辛苦劳动 最终才会生成需要规格说明书 需求规格说明书是逐步由粗到细的分解过程 一个需求 要进入
  • Postgresql vacuum 和 vacuum full

    转载自 https www modb pro db 63663 dead tuples tuple 元组 也就是一行数据 首先 简要解释什么是 死元组 和 膨胀 当您在PostgreSQL中执行DELETE时 行不会立即从数据文件中删除 而
  • 11.面向对象概述,类的创建,对象的创建

    一 面向对象程序设计概述 1 知识点面向对象程序设计的目的 1 从程序设计的角度来看 事物的属性就可以用变量来表示 行为则可以用方法来反映 2 客观世界中事物的属性和行为可以进行传递 当某一个事物得到另一个事物传给它的属性和行为 我们就说该
  • 证书 vivo_vivo官宣首款商用5G手机iQOO Pro,8月上市

    环球网科技综合报道 7月30日 vivo子品牌iQOO通过官微宣布支持5G网络的iQOO Pro将于8月发布 即vivo首款商用5G手机将是iQOO Pro iQOO自发布之初便备受关注 首款产品以游戏手机的定位切入市场对当时首批商用高通骁
  • 优雅,在SpringBoot项目中一键轻松接入ChartGPT

    最近体验了火爆全网的 ChartGPT 深刻体会了其强大的能力 这让我们程序猿对AI的未来突然有了广大的畅想空间 我也在网上看到不少大牛通过 ChartGPT 来获取收益 就寻思着能否自己接入 ChartGPT 的 API 来做些什么事情
  • Linux宝塔面板命令大全,快速学会

    cd www server panel python tools py panel 123456 查看宝塔日志 cat tmp panelBoot pl 查看软件安装日志 cat tmp panelExec log 站点配置文件位置 www
  • AppsFlyer 研究(三)OneLink平台归因、跳转、深度链接

    一 OneLink 简介 OneLink是AppsFlyer的对平台归因 跳转和深度链接的解决方案 OneLink在设备点击时检测到设备类型 并将用户重定向到匹配的目的地 例如Google Play商店 iOS应用商店 第三方应用商店 或者
  • "我为区块链赋能实体经济代言"第二批代言人:复旦大学张江研究院教授陈文君

    我为区块链赋能实体经济代言 推出以来 颇受行业关注 为进一步规范行业发展 落实区块链赋能实体经济的目标 为行业发展 正本清源而发声 新一轮的 我为区块链赋能实体经济代言 于9月3日重磅启动 我为区块链赋能实体经济代言100人第二批 第3位代
  • JPEG编码原理与解码分析

    JPEG编码原理 JPEG Joint Photographic Experts Group 是JPEG标准的产物 该标准由国际标准化组织 ISO 制订 是面向连续色调静止图像的一种压缩标准 JPEG格式是最常用的图像文件格式 后缀名为 j
  • 数据挖掘—数据预处理

    文章目录 数据预处理 1 数据清洗 缺失值处理 异常值处理 2 数据集成 实体识别 冗余属性识别 数据变换 简单函数变换 规范化 连续属性离散化 属性构造 3 数据规约 属性归约 数值归约 Python主要数据预处理函数 数据预处理 数据预
  • 【uniapp】使用canvas组件编译到微信小程序兼容出错问题

    使用uniapp编译跨平台项目会遇到不少兼容问题 这里主要讲canvas组件的 编译到微信小程序会有兼容出错问题 这里给讲一下解决方案 希望有帮助 常见问题 draw无法绘制图形 如果使用CanvasContext绘制 以下代码 编译到微信
  • 值得收藏的UmiJS 教程

    点击上方关注 前端技术江湖 一起学习 天天进步 前言 网上的umi教程是真的少 很多人都只写了一点点 很多水文 所以打算自己写一篇 自己搭建umi 并封装了一下常用的功能 并用到公司实际项目中 umi介绍 Umi 是什么 Umi 中文可发音
  • maven学习笔记 maven的使用

    新建maven项目 使用mvn archetype generate命令新建一个maven项目 maven会自动下载必要的插件 还会下载一个所有项目模板的分类文件 这个文件有好几兆的大小 因此可能会持续比较长的时间 下载完毕之后 就会列出所
  • JAVA 8 新特性及使用

    1 前言 2019年9月19日java13已正式发布 感叹java社区强大 经久不衰 由于国内偏保守 新东西总要放一放 让其他人踩踩坑 等稳定了才会去用 并且企业目的还是赚钱 更不会因为一个新特性去重构代码 再开发一套程序出来 甚者国内大多
  • 不一样的联宇益通,不一样的SD-WAN+

    点击上方 中国云报 可关注 笔者有点挠头 究竟该用哪个词来描述联宇益通 Netpas 公司呢 低调 技术控 特立独行 还是自得其乐 似乎都有些影子 但又都不是最准确的表达 与联宇益通创始人兼CEO谢毅斌聊得越深入 感觉联宇益通身上矛盾的地方
  • 软件测试 app自动化02 Appium常用的元素定位工具 元素的属性 元素定位方法

    文章目录 1 Appium常用的元素定位工具 1 1 uiautomatorviewer 1 2 Appium Inspector 1 3 Weditor 2 元素的属性 3 元素定位方法 小结 1 Appium常用的元素定位工具 1 1
  • 数据库学习笔记(8)——mysql中的函数和存储过程

    1 MySQL中的函数 1 数据库主要做存储和查询操作 逻辑操作一般不在数据库中进行操作 2 MySQL中的函数主要是自定义函数 其中自定义函数格式如下 修改语句结束符 delimiter create function 函数名 参数名 数