Java学习 - MySQL数据存储过程 + 函数 + 触发器介绍实例

存储过程

存储过程的概念和优点

  • 概念:存储过程是一组预先编译好的SQL语句的集合
  • 类比:存储过程类似于 Go 中的函数
  • 优点:提高代码重用性,简化操作,减少编译次数

创建存储过程

  • 创建语法

    DELIMITER $  # 不能加分号
    
    CREATE PROCEDURE 存储过程名(参数列表)
    BEGIN
        存储过程语句块
    END;
    
    $
    
    DELIMITER ;
    
  • 参数形式

    参数模式 参数名 参数类型
    
    参数形式说明
    IN作为输入
    OUT作为输出
    INOUT既可作为输入,又可作为输出
  • 注意事项

    • 如果存储过程只有一句SQL,则可以省略BEGIN-END
    • 存储过程中的SQL都必须以分号结尾,所以存储过程结尾可以用 DELIMITER 重新设置
  • 例子

    DELIMITER $  # 不能加分号
    
    CREATE PROCEDURE myprocedure1()
    BEGIN
        INSERT INTO admin(username,passwd)
        VALUES ('jack','0000'),('lily','0000');
    END; 
    
    $
    
    DELIMITER ;
    
    DELIMITER $ # 不能加分号
    
    CREATE PROCEDURE myprocedure2(IN name VARCHAR(20))
    BEGIN
        SELECT *
        FROM boys AS b
        RIGHT JOIN girls AS g
        ON b.id = g.id
        WHERE b.name = name;
    END; 
    
    $
    
    DELIMITER ;
    
    DELIMITER $ # 不能加分号
    
    CREATE PROCEDURE myprocedure3(IN username VARCHAR(20), IN passwd VARCHAR(20))
    BEGIN
        DECLARE result VARCHAR(20) DEFAULT ''; # 声明局部变量
        
        SELECT COUNT(*) INTO result # 为局部变量赋值
        FROM admin
        WHERE admin.username = username AND admin.passwd = passwd;
        
        SELECT result; # 使用局部变量
    END; 
    
    $
    
    DELIMITER ;
    
    DELIMITER $ # 不能加分号
    
    CREATE PROCEDURE myprocedure4(IN girlName VARCHAR(20), OUT boyName VARCHAR(20))
    BEGIN
        SELECT b.name INTO boyName
        FROM boys AS b
        JOIN girls AS g
        ON b.id = g.id
        WHERE g.name = girlName;
    END; 
    
    $
    
    DELIMITER ;
    

删除存储过程

DROP PROCEDURE myprocedure1;

存储过程不能更改,如果想改变,可以先删除,再创建

查看存储过程创建

SHOW CREATE PROCEDURE myprocedure1;

查看有哪些存储过程

SHOW PROCEDURE STATUS;

调用存储过程

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

CALL myprocedure1();
CALL myprocedure2("小明");
CALL myprocedure3("xiaoming","123456");
CALL myprocedure4("小昭");

函数

函数的概念和优点

  • 概念:函数是一组预先编译好的SQL语句的集合
  • 类比:存储过程类似于 Go 中的函数
  • 优点:提高代码重用性,简化操作,减少编译次数

创建函数

  • 创建语法

    DELIMITER $
    
    CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型
    BEGIN
        函数语句块
    END;
    
    $
    
    DELIMITER ;
    
  • 参数形式

    参数名 参数类型
    
  • 注意事项

    • 如果存储过程只有一句SQL,则可以省略BEGIN-END
    • 存储过程中的SQL都必须以分号结尾,所以存储过程结尾可以用 DELIMITER 重新设置
    • 必须有且只能有一个返回值,且必须有return语句
    • 函数如果使用 SELECT,则必须配合INTO关键字,使用SELECT … INTO … 的结构,因为函数中不允许出现结果集
    • 返回类型如果是varchar必须带长度

删除函数

DROP FUNCTION myfunction;

查看有哪些函数

SHOW FUNCTION STATUS;

查看函数创建

SHOW CREATE FUNCTION myfunction;

调用函数

SELECT 函数名(参数列表);

触发器

触发器概念

  • 触发器概念:一类特殊的事务,可以监视某种DML操作,并触发相关DML操作

创建触发器

DELIMITER $

CREATE TRIGGER 触发器名字
AFTER|BEFORE INSERT|UPDATE|DELETE ON 表名
FOR EACH ROW  # 固定写法
BEGIN
    一句或多句DML操作SQL语句
END;

$
使用旧值与新值
  • 对于 INSERT
    • 用new表示插入的新行,比如 new.name,new.id
  • 对于 UPDATE
    • 用new表示修改后的行,old表示修改前的行
    • 比如 new.g_count,old.g_count
  • 对于 DELETE
    • 用old表示已经删除的行,比如old.name,old.id

删除触发器

DROP TRIGGER 触发器名

查看触发器

  • 查看所有的触发器

    SHOW TRIGGER STATUS;
    
  • 查看某个触发器的创建语句

    SHOW CREATE TRIGGER 触发器名;
    

调用触发器

  • 触发器是自动触发的,无法手动触发

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot原理篇-bean管理

springboot原理篇-bean管理(二) 我们今天主要学习IOC容器中Bean的其他使用细节,主要学习以下三方面: 如何从IOC容器中手动的获取到bean对象bean的作用域配置管理第三方的bean对象 一、获取Bean 了解即可,默认情况下…

基于Python的花卉识别分类系统【W9】

简介: 基于Python的花卉识别分类系统利用深度学习和计算机视觉技术,能够准确识别和分类各种花卉,如玫瑰、郁金香和向日葵等。这种系统不仅有助于植物学研究和园艺管理,还在生态保护、智能农业和市场销售等领域展现广泛应用前景。随…

可视化大屏搞这样,是对前端开发尊严的巨大挑战。

现在可视化大屏不搞点炫酷的效果和3D交互,出门都不好意思给别人打招呼,作为前端领域的老司机,我感觉尊严受到了巨大挑战,必须迎难而上,hold住他们,老铁们你们觉得呢?

构建高效API接口:五个关键技术要点解析

构建高效API接口是现代软件开发中至关重要的一环。以下是五个关键技术要点,它们可以帮助开发者设计、实现、和维护高性能的API接口: 1. RESTful设计原则和HTTP协议最佳实践 资源定位与可寻址性:为每个资源定义清晰的URL,使用HTT…

买灯必看!护眼台灯是智商税吗?护眼台灯真的有用吗?

随着人们健康意识的日益增强、儿童近视率的大幅度增加,眼睛健康逐渐成为人们关注的焦点。为了减轻长时间用眼带来的疲劳,许多人开始寻求高品质的照明设备来呵护双眼。照明技术的飞速发展,使得现代照明产品能够精准地调整光线亮度、色温和闪烁…

RTSP/Onvif安防监控平台EasyNVR抓包命令tcpdump使用不了,该如何解决?

安防视频监控汇聚EasyNVR智能安防视频监控平台,是基于RTSP/Onvif协议的安防视频平台,可支持将接入的视频流进行全平台、全终端分发,分发的视频流包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等格式。平台可提供的视频能力包括:…

区间DP——AcWing 282. 石子合并

区间DP 定义 区间 DP 是动态规划的一种特殊形式,主要是在一段区间上进行动态规划计算。 运用情况 通常用于解决涉及在一段区间内进行操作、计算最优值等问题。比如计算一个区间内的最大子段和、最小分割代价等。一些常见的场景包括合并操作、划分操作等在区间上…

华火新能源集成灶评测:创新与品质的融合

在厨房电器的不断推陈出新中,华火新能源集成灶以其独特的魅力进入了人们的视野。今天,我们就来深入评测这款备受关注的产品——华火新能源集成灶 一、华火新能源集成灶的创新与环保 首先,我们先来探讨新能源集成灶的整体表现。华火新能源集成…

如何将扫描的 PDF 转换为 Word

您是否正在寻找一种可靠且轻松的方式将扫描的 PDF 文档转换为可编辑的 Word 文件?要将 PDF 转换为可编辑的 Word 文档,神奇之处在于光学字符识别(OCR)。 使用 PDFgear,您可以无缝地将扫描的 PDF 转换为 Word,无论是在线还是离线。…

【电子实验4】TDA2030功率放大电路

🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…

【vue3|第8期】深入理解Vue 3 computed计算属性

日期:2024年6月10日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xf…

Aptos Builder Jam 亚洲首站|议程公布,无限畅想 Aptos 生态未来

作为一个新兴的 Layer1 公链,Aptos 自诞生之日起的理想便是 “A Layer 1 for everyone” 当 Web3 深陷熊市阴影之时,Aptos 奋力为开发者找到了全新的技术路径,正有 200 项目正在开发,并且已有大量 DeFi 项目落实部署工作&#xff…

【Kubernetes】k8s 自动伸缩机制—— HPA 部署

一、在K8s中扩缩容分为两种: ●Node层面:对K8s物理节点扩容和缩容,根据业务规模实现物理节点自动扩缩容 ●Pod层面:我们一般会使用Deployment中的Replicas参数,设置多个副本集来保证服务的高可用,但是这是…

【python中的转义字符】

在Python中,除了换行符(\n)和制表符(\t),还有许多其他的转义字符和字符串格式化符号可以使用。以下是一些常见的例子: 1、常见的转义字符 ### 常见的转义字符 1. **换行符**: \n 2. **制表符*…

高创新模型,基于STFT-SWT-双流CNN-SVM的小样本轴承故障诊断方法,MATLAB代码

。前言 现如今,大家为了找创新点发个小论文,也真是煞费苦心!各大博主推出的很多算法层出不穷,各式各样的组合真是看花了眼!但有时也不能为了创新而创新,效果好才是真的好! 本期推出一种《基于ST…

c语言哈夫曼中英文混合编码

一.需求文档 c语言实现哈夫曼编码 1.中文编码 2.英文编码 3.中英文混合编码 4.从文件读取进行编码 5.编码生成编码文件 6.从生成的编码文件进行解码 二.运行截图

洗护用品行业怎么做到数据安全管理?迅软DSE加密软件避免数据泄露

项目背景 公司全研发中心内部专家联合外部专家组织,充分发挥联合研究、探讨技术发展带来的重要性,产品开发、核心技术开发、工艺技术研究和创新,已形成了坚实的研发后盾,已拥有了大量的核心信息数据,为防患于未然&…

程序员画图工具?那必然是你了!!【送源码】

作为一个程序员,画图是必不可少的技巧。当然此画图不是搞艺术,而是画各种架构图、流程图、泳道图以及各种示意图。 平时我不论是记笔记、写技术文章,还是工作中写文档,都需要配上各种各样的示意图。不管是帮助自己更好的掌握知识…

【Netty】nio阻塞非阻塞Selector

阻塞VS非阻塞 阻塞 阻塞模式下,相关方法都会导致线程暂停。 ServerSocketChannel.accept() 会在没有建立连接的时候让线程暂停 SocketChannel.read()会在没有数据的时候让线程暂停。 阻塞的表现就是线程暂停了,暂停期间不会占用CPU,但线程…

1:25万基础电子地图(云南版)

我们在《50幅1:25万基础电子地图(四川版)》一文中,为你分享过四川的50幅基础电子地图。 现在我们再为你分享云南的1:25万基础电子地图,你可以在文末查看该数据的领取方法。 基础电子地图云南版 下载后可以看到该数据…