MySQL存储过程和Function

一、存储过程

MySQL中提供存储过程存储函数机制,将其统称为存储程序

SQL语句要先编译,然后执行,存储程序是一组为了完成特定功能的SQL语句,编译后存到数据库中。

用户通过指定存储程序的名字并给定参数来调用才会执行。

存储程序的优点:

1.存储过程能提高应用程序的性能。存储过程被编译后存储在数据库中。

2.编译存储过程之后,MySQL将其放入缓存中。存储过程可以减少应用和服务器之间的流量,应用不用发送多个冗长的SQL语句,只需要发送存储过程的名称和参数。

缺点:

1.若大量使用存储过程,使用存储过程的每个连接的内存使用量会很大。

如果在存储过程中使用大量逻辑操作,CPU使用率也会增加。

2.不能调试存储过程,只有少数数据库管理系统允许调试存储过程。

MySQL不提供调试存储过程的功能。

3.公司开发中不使用存储过程,分析三层架构,业务逻辑一般放到业务层,也就是Tomcat,而不是把业务放到数据库处理。
使用存储过程使业务和数据库严重耦合。

4.对于业务层性能扩容的手段有很多,搭建集群、使用缓存提高响应速度等。

大多数情况下,业务层并不是整个项目性能的瓶颈,而是数据库。

业务层性能扩容相比数据库性能扩容方便的多。

所以通常尽可能优化数据库性能,降低数据层压力。

存储过程的使用

1.语法

CREATE PROCEDURE procedure_name([parmeters[...]])
begin
--SQL语句
end;

2.举例

create procedure test()
beginselect 'Hello';
end;

3.调用 存储过程

call test();

二、MySQL的Function

MySQL中,Function(函数)是一种被定义在数据库中并可以在SQL查询中调用的可重用代码块

MySQL支持用户自定义函数,用户可以根据需求创建函数执行特定任务。

Function(函数)的特点:

1.函数是一段封装好的SQL代码,接收输入参数并返回单一的值
2.函数可用来简化复杂的SQL查询、计算和数据处理操作。
3.函数可以作为查询中的表达式使用,也可以在其他SQL语句中调用。
4.函数提供了代码重用的机制,可以减少重复编码。

MySQL中,可以用CREATE FUNCTION语句创建函数。

CREATE FUNCTION function_name(parameter_list)
RETURNS return_type
BEGIN --函数体,包含具体的SQL代码
END;

比如,创建一个Function计算两个数字的和:

CREATE FUNCTION calculate_sum(a INT, b INT)
RETURNS INT
BEGINDECLARE result INT;SET result = a + b;RETURN result;
END;

创建Function(函数)后,可以通过SELECT语句调用该函数

SELECT calculate_sum(5,3);-- 调用calculate_sum函数计算5和3的和

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/714597.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

扩展学习|大数据分析的现状和分类

文献来源:[1] Mohamed A , Najafabadi M K , Wah Y B ,et al.The state of the art and taxonomy of big data analytics: view from new big data framework[J].Artificial Intelligence Review: An International Science and Engineering Journal, 2020(2):53. 下…

蓝桥杯(3.2)

1209. 带分数 import java.io.*;public class Main {static BufferedReader br new BufferedReader(new InputStreamReader(System.in));static PrintWriter pw new PrintWriter(new OutputStreamWriter(System.out));static final int N 10;static int n, cnt;static int[…

LabVIEW流量控制系统

LabVIEW流量控制系统 为响应水下航行体操纵舵翼环量控制技术的试验研究需求,通过LabVIEW开发了一套小量程流量控制系统。该系统能够满足特定流量控制范围及精度要求,展现了其在实验研究中的经济性、可靠性和实用性,具有良好的推广价值。 项…

tritonserver学习之八:redis_caches实践

tritonserver学习之一:triton使用流程 tritonserver学习之二:tritonserver编译 tritonserver学习之三:tritonserver运行流程 tritonserver学习之四:命令行解析 tritonserver学习之五:backend实现机制 tritonserv…

【C++初阶】内存管理

目录 一.C语言中的动态内存管理方式 二.C中的内存管理方式 1.new/delete操作内置类型 2.new和delete操作自定义类型 3.浅识抛异常 (内存申请失败) 4.new和delete操作自定义类型 三.new和delete的实现原理 1.内置类型 2.自定义类型 一.C语…

C++学习笔记:二叉搜索树

二叉搜索树 什么是二叉搜索树?搜索二叉树的操作查找插入删除 二叉搜索树的应用二叉搜索树的代码实现K模型:KV模型 二叉搜索树的性能怎么样? 什么是二叉搜索树? 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树…

Linux安装Nginx详细步骤

1、创建两台虚拟机,分别为主机和从机,区别两台虚拟机的IP地址 2、将Nginx素材内容上传到/usr/local目录(pcre,zlib,openssl,nginx) 附件 3、安装pcre库   3.1 cd到/usr/local目录 3.2 tar -zxvf pcre-8.36.tar.gz 解压 3.3 cd…

MATLAB图像噪声添加与滤波

在 MATLAB 中添加图像噪声和进行滤波通常使用以下函数: 添加噪声:可以使用imnoise函数向图像添加各种类型的噪声,如高斯噪声、椒盐噪声等。 滤波:可以使用各种滤波器对图像进行滤波处理,例如中值滤波、高斯滤波等。 …

前端学习、HTML

html是由一些标签构成的,标签之间可以嵌套,每个标签都有开始标签和结束标签,也有部分标签只有开始标签,没有结束标签。html的标签也可以成为元素。(树形结构) html文件的最顶层标签就是html。 head用来放…

**蓝桥OJ 178全球变暖 DFS

蓝桥OJ 178全球变暖 思路: 将每一座岛屿用一个颜色scc代替, 用dx[]和dy[]判断他的上下左右是否需要标记颜色,如果已经标记过颜色或者是海洋就跳过.后面的淹没,实际上就是哪个块上下左右有陆地,那么就不会被淹没,我用一个tag标记,如果上下左右一旦有海洋,tag就变为false.如果tag…

用冒泡排序模拟C语言中的内置快排函数qsort!

目录 ​编辑 1.回调函数的介绍 2. 回调函数实现转移表 3. 冒泡排序的实现 4. qsort的介绍和使用 5. qsort的模拟实现 6. 完结散花 悟已往之不谏,知来者犹可追 创作不易,宝子们!如果这篇文章对你们有帮助的话,别忘了给个免…

机器学习:模型评估和模型保存

一、模型评估 from sklearn.metrics import accuracy_score, confusion_matrix, classification_report# 使用测试集进行预测 y_pred model.predict(X_test)# 计算准确率 accuracy accuracy_score(y_test, y_pred) print(f"Accuracy: {accuracy*100:.2f}%")# 打印…

整数和浮点数在内存中的存储(大小端字节序,浮点数的存取)

目录 1.整数在内存中的存储 2.大小端字节序和字节序判断 2.1什么是大小端? 2.2为什么会有大小端 3.浮点数在内存中的存储 3.1浮点数的存储 3.1.1 浮点数存的过程 3.1.2 浮点数取的过程 3.2 解析 3.3 验证浮点数的存储方式 1.整数在内存中的存储 整数的二进…

PAT (Basic Level) Practice | 朋友数

如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”。例如 123 和 51 就是朋友数,因为 123 51 6,而 6 就是它们的朋友证号。给定一些整数,要求你统计一下它们中有多少个不…

亿道信息轻工业三防EM-T195,零售、制造、仓储一网打尽

厚度仅10.5mm,重量仅0.65千克的EM-T195,其紧凑而纤薄的设计为以往加固型平板带来了全新的轻薄概念。尽管设计时尚、轻薄,但经过军用认证的强固性仍然能够承受所有具有挑战性的环境条件。随身携带无负担的轻便性加上抗震功能使其成为餐厅、酒店…

C++_数据类型_字符型

作用 字符型变量用于显示单个字符 语法 char ch a;注意 在显示字符型变量时,用单引号将字符括起来,不要用双引号单引号只能有一个字符,不可以是字符串 C和C中字符型变量只占用一个字节字符型变量并不是把字符本身放到内存中存储&#xf…

Excel导出

目录 Maven依赖 实体类 表头列宽自适应处理器 行列冻结处理器 合并单元格处理器 工具类 Maven依赖 <!--easy excel--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.2</vers…

数独游戏(dfs)

代码注释如下 #include <iostream> using namespace std; const int N 10; bool col[N][N], rol[N][N], cell[3][3][N]; char g[N][N]; bool dfs(int x, int y) { //用bool这样在找到一个方案就可以迅速退出if(y 9) x, y 0; //若y超出边界&#xff0c;则第二…

S1---FPGA硬件板级原理图实战导学

视频链接 FPGA板级实战导学01_哔哩哔哩_bilibili FPGA硬件板级原理图实战导学 【硬件电路设计的方法和技巧-哔哩哔哩】硬件电路设计的方法和技巧01_哔哩哔哩_bilibili&#xff08;40min&#xff09; 【高速板级硬件电路设计-哔哩哔哩】 高速板级硬件电路设计1_哔哩哔哩_bil…

【RT-Thread基础教程】邮箱的使用

文章目录 前言一、邮箱的特性二、邮箱操作函数2.1 创建邮箱创建动态邮箱创建静态邮箱 2.2 删除邮箱2.3 发邮件2.4 取邮件 三、示例代码总结 前言 RT-Thread是一个开源的实时嵌入式操作系统&#xff0c;广泛应用于各种嵌入式系统和物联网设备。在RT-Thread中&#xff0c;邮箱是…