MySQL 基础 ———— 存储过程与函数

一、存储过程介绍

存储过程是一组预先编译好的SQL语句的集合,可理解成批处理语句。它的优点主要有以下几点:

1、提高代码的重用性;

2、简化操作;

3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率。

二、存储过程的创建

DELIMITER 定界符
CREATE PROCEDURE 存储过程名(形参列表)
BEGIN存储过程体(一组合法的SQL语句)
END 定界符

但MySQL实际存储的存储过程定义可能并没有这么简单:

在使用存储过程的时候,一定要注意参数列表中,每个形参的定义都包含三部分:

参数模式 (IN、OUT、INOUT)、参数名、参数类型

例如:

IN stuname VARCHAR(10)

 牢记参数模式分为三种:

IN : 该模式参数仅可以作为输入值使用。

OUT : 该模式参数仅可以作为输出值使用,从存储过程并没有类似函数那样的返回值,通过定义OUT 模式的参数,可以让存储过程携带返回值。

INOUT : 该模式参数既可以作为输入,也可以作为输出。

 另外,如果存储过程体仅有一句话,可以省略 BEGIN 和 END 。存储过程体的每条SQL 语句要求必须以分号结尾

定义存储过程需要设置一个定界符,代表存储过程定义完毕,一般使用 $ 、& 等特殊字符均可。

注意,存储过程一旦创建,将无法修改(存储体),如果希望修改,可以删除后重建。删除存储过程的方法和 DROP TABLE 类似,只是将 TABLE 关键字换为 PROCEDURE 即可。

查看创建好的存储过程可以使用:

SHOW CREATE PROCEDURE 存储过程名;

三、存储过程的调用

CALL 存储过程名(实参列表);

四、MySQL 函数

函数和存储过程很类似,也是是一组预先编译好的SQL语句的集合,类似于批处理语句。提供了代码重用性,简化操作,同时减少了编译次数,并且减少了和数据库服务器的连接次数,提供了效率。

但是和存储过程也有所不同,他们的区别主要是:

存储过程:可以没有返回值,也可以有多个返回值,适合做批量插入,批量更新。

函数:有且仅有 1 个返回值,适合做处理数据后返回一个结果。

五、函数的创建

CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型
BEGIN函数体
END

参数列表中的每个参数包含两部分:

参数名、参数类型

函数体必须要有 RETURN 语句,并且与"函数签名" 中的 RETURNS 类型相对应,否则会报错。一般将 RETURN 语句放在函数体的最后,其他位置不建议。

函数体如果只有一句话,同样可以像存储过程一样省略 BEGIN 和 END 。

函数定义同样需要 DELIMITER 设置定界符。

六、函数的调用

SELECT 函数名(实参列表);

 

 

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

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

相关文章

MySQL 基础 ———— 流程控制结构

引言 MySQL 中的流程控制作为基础知识的最后一块拼图,显得并不是特别重要,而且,在实际生产开发中,也往往不需要通过它来进行程序的控制,那么为什么还要学习它呢?我认为有以下几点: 1、知识的完…

MySQL 高级 ———— MySQL逻辑架构图简介

引言 本篇文章介绍MySQL的逻辑架构图。 MySQL并不完美,但足够灵活,能够适应高要求环境。MySQL不仅可以嵌入到应用程序中,同时也可以支持数据仓库、内容搜索、和部署软件、高可用的冗余系统、在线事务处理系统等各种应用类型。 一、MySQL逻…

Java正则表达式总结

引言 正则表达式(英文:regular expression)是用于描述字符串规则的工具,是记录文本规则的代码。 它可以用来搜索、编辑、处理文本。现有编程语言都支持正则表达式的处理,但每种语言都有细微的差别。 在Java 中&…

Linux 实操 —— Linux 系统性能分析

引言 最近配合解决压测(性能测试)方面的问题,了解到了一些可以监控 Linux 系统性能指标,如CPU、IO、内存等的工具。 此篇博客主要讲解 Linux 系统监控的一些重点内容以及 sar 命令的使用。 一、Linux 性能分析聚焦 Linux 性能…

Java 动态代理解析

引言 本博客总结自《Java 编程思想》第十四章 一、实现第一个动态代理程序 代理是软件设计中重要的设计思想,它允许我们在调用实际操作之前或之后解耦式地编写额外的操作,而一旦不需要这些操作了,就可以轻易的移除它们。 浏览了《编程思想…

MySQL 基础 ————高频函数总结

一、MySQL函数调用方式 函数调用的基本语法: SELECT 函数(实参列表) [FROM 表] 其中,对于函数,需要重点关注三点: 1、函数的名称 2、参数列表 3、函数功能 二、函数的分类 在 MySQL中,函数分为两类:1、…

MySQL 高级 —— 复合索引简介(多列索引)

引言 复合索引是指包含多个数据列的索引,与之概念相对的是单列索引,仅包含一个数据列。在大多数情况下,建立多列索引的好处都要多于单列索引。另外,复合索引最多支持16个列,但请一定不要让复合索引包含太多的列&#…

MySQL 高级 —— 索引实现的思考

引言 最近看了一个公开课,是有关MySQL对索引设计的思考。详细讲解了几种索引实现的设计思考与利弊辨析,讨论了为什么MySQL默认情况下会使用B树索引,B树索引又对B树做了哪些结构改进。 本片博客通过个人的学习理解和总结,由几种简…

Git 初学札记(十)—— Reset 回退的三种状态解析

引言 工作中经常会涉及到需要本地代码覆盖更新的操作。有时候可能是从远端git 上直接覆盖更新,或者是其他本地分支覆盖更新当前分支等等。这个时候就需要用到 reset 操作。 reset 操作分为三种类型:Soft、Mixed、Hard。今天我们就来说说这三种类型究竟…

MySQL 高级 —— 深入理解 InnoDB 与 MyISAM

引言 在文件系统中,MySQL将每个数据库(也可以称之为schema)保存为数据目录下的一个子目录。创建表时,MySQL会在数据库子目录下创建一个与表同名的.frm文件保存表的定义。因为MySQL使用文件系统的目录和文件来保存数据库和表的定义…

关于 OutOfMemoryError 的总结与解决方法

引言 本文总结自周志明的《深入理解Java虚拟机》第二章部分内容。 这部分内容,可以为后续性能调优方面的工作起到铺垫作用。 一、什么是 OutOfMemoryError OurOfMemory 简称“OOM”, 直译为“内存耗尽”或“内存溢出”,当然,并…

Windows误关闭资源管理器重启的办法

引言 有时候Windows系统在开机后,在桌面底部的任务栏中无法正常加载必要的网络连接图标或音量图标等,导致无法手动操作音量或连接网络。这时候就会需要打开“任务管理器”重新启动“资源管理器”使其重新加载这些必要的控制图标。 但是由于操作失误&am…

MySQL高级 —— 高性能索引

引言 最近一直在抱着《高性能MySQL(第三版)》研究MySQL相关热点问题,诸如索引、查询优化等,这阶段的学习是前一段时间MySQL基础与官方的“阅读理解”的进一步延伸。 书中第五章详细阐述了如何设计高性能的索引,以及索…

MySQL高级 —— 查询性能优化

引言 承接《MySQL高级 —— 高性能索引》,本篇博客将围绕《高性能MySQL(第三版)》第六章内容进行总结和概括。 与索引的部分一样,SQL优化也是广大程序员深入MySQL的又一条必经之路。希望通过本篇博客的总结,能够为我…

Java常用设计模式————适配器模式

引言 由于无法直接使用某个类中的方法而采取的一种中间类转换的策略。将一个类的接口转换成另一个接口,让原本接口不兼容的类可以兼容。 适配器模式可以分为三种:类适配器、对象适配器、接口适配器。它们之间的区别主要体现在适配器角色与被适配角色之…

Java常用设计模式————桥接模式

引言 在实际的业务中,经常会遇到多维度的概念组合,公园的门票,颐和园有年票、月票、日票,故宫也有年票、月票、日票。那么不同的公园和票种类型就可以视为两种不同的纬度,它们之间会形成相互组合的关系。 在类的设计…

Java常用设计模式————装饰者模式

引言 装饰者模式,又叫装饰器模式。它可以动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更灵活,同时装饰者模式也体现了OCP原则。 在客户端调用使用了装饰者模式的对象时,就好像在使用构造器层层包裹核心对象&#x…

Java常用设计模式————组合模式

引言 组合模式,是一种类似递归算法的结构性设计模式,通过以简单的 List ,组合本类对象,实现树状对象结构的“部分、整体”的层次。 它可以让调用程序不需要关心复杂对象与简单对象的区别,而统一地实现处理逻辑。 对…

Java常用设计模式————外观模式

引言 外观模式(Facade Pattern),又叫“过程模式”。外观模式为子系统中的一组接口提供一个一致的入口,此模式定义了一个高层接口,这个接口使得这一组子系统更加易用。 一、案例分析 生活中有很多类似的案例&#xf…

Java常用设计模式————享元模式

引言 享元模式,也叫蝇量模式(Flyweight Pattern)。运用共享技术有效地支持大量细粒度的对象。 享元模式常用于系统底层开发,解决系统的性能问题。例如数据库连接池,里面都是创建好的连接对象,在这些连接对…