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

存储过程

存储过程的概念和优点

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

创建存储过程

  • 创建语法

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

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

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

    DELIMITER $  # 不能加分号CREATE PROCEDURE myprocedure1()
    BEGININSERT INTO admin(username,passwd)VALUES ('jack','0000'),('lily','0000');
    END; $DELIMITER ;
    
    DELIMITER $ # 不能加分号CREATE PROCEDURE myprocedure2(IN name VARCHAR(20))
    BEGINSELECT *FROM boys AS bRIGHT JOIN girls AS gON b.id = g.idWHERE b.name = name;
    END; $DELIMITER ;
    
    DELIMITER $ # 不能加分号CREATE PROCEDURE myprocedure3(IN username VARCHAR(20), IN passwd VARCHAR(20))
    BEGINDECLARE result VARCHAR(20) DEFAULT ''; # 声明局部变量SELECT COUNT(*) INTO result # 为局部变量赋值FROM adminWHERE admin.username = username AND admin.passwd = passwd;SELECT result; # 使用局部变量
    END; $DELIMITER ;
    
    DELIMITER $ # 不能加分号CREATE PROCEDURE myprocedure4(IN girlName VARCHAR(20), OUT boyName VARCHAR(20))
    BEGINSELECT b.name INTO boyNameFROM boys AS bJOIN girls AS gON b.id = g.idWHERE 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.mzph.cn/pingmian/28623.shtml

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

相关文章

JavaFX HBox

JavaFX API具有将UI控件显示到场景图上的布局类。HBox布局类将JavaFX子节点放在水平行中。 新的子节点附加到右侧的末尾。默认情况下,HBox布局尊重子节点的首选宽度和高度。 当父节点不可调整大小时,例如Group节点,HBox的行高度设置为子节点的…

【车载开发系列】专业术语汇总(CAN网络管理关联)

【车载开发系列】专业术语汇总(CAN网络管理关联) 【车载开发系列】专业术语汇总 【车载开发系列】专业术语汇总(CAN网络管理关联) 英文缩写英文全称中文说明ACKAcknowledge应答-SNISource Node Identifier源节点标识符-CBVControl…

RSS Channel 元素

RSS Channel 元素 概述 RSS(Really Simple Syndication)是一种广泛使用的消息来源格式,允许用户订阅并接收他们感兴趣的内容更新。RSS文档通常包含一个或多个<channel>元素,每个元素代表一个特定的内容源。本文将详细探讨<channel>元素的结构和用途,以及如何…

【工作】计算机行业相关的十六类工作简介

本文简单介绍了计算机行业相关的工作类别&#xff0c;共16种&#xff0c;包括常见招聘要求与平均工资。平均工资信息来源&#xff1a;米国企业点评职场社区glassdoor&#xff08;https://www.glassdoor.com/index.htm&#xff09; &#xff08;一&#xff09;软件工程师 软件…

003、浅谈Neo4j的数据模型

Neo4j 数据模型概述 Neo4j 是一种图数据库&#xff0c;采用图数据模型来存储和管理数据。这个模型由节点&#xff08;nodes&#xff09;、关系&#xff08;relationships&#xff09;和属性&#xff08;properties&#xff09;组成&#xff0c;特别适合表示复杂的连接关系和网…

图书馆图书可视化分析+大屏

&#x1f31f;欢迎来到 我的博客 —— 探索技术的无限可能&#xff01; &#x1f31f;博客的简介&#xff08;文章目录&#xff09; 目录 摘要前言技术栈开发环境数据说明 正文数据获取数据存储数据清理数据分析数据挖掘关联规则二分类预测 数据可视化书籍价格区间柱状图书籍评…

质疑标普,理解标普,加入标普

上周我在文章里提到过&#xff0c;标普信息科技LOF(161128)出现套利机会。每天申购卖出&#xff0c;到现在一个账户56*6336润。 得益于美股七巨头轮流领涨&#xff0c;161128依旧坚挺&#xff0c;每天溢价都是10%&#xff0c;成交量1个多亿&#xff0c;场内新增份额才400万份&…

c中编程题最有效率的方法算出2乘以8等於几

在C语言中&#xff0c;计算2乘以8的方法也是直接进行乘法操作。C语言提供了乘法运算符*&#xff0c;你可以直接使用它来计算两个数的乘积。 下面是一个简单的C语言程序&#xff0c;展示了如何计算2乘以8&#xff1a; c #include <stdio.h> int main() { int result …

Vue中双向数据绑定是如何实现的

Vue.js 的双向数据绑定是通过其响应式系统实现的。当 Vue 实例创建时&#xff0c;它会遍历 data 对象中的所有属性&#xff0c;并使用 Object.defineProperty 将它们转化为 getter/setter&#xff0c;使得 Vue 能够追踪每个属性的变化&#xff0c;并在变化时通知相关的依赖进行…

python学习:语法(2)

目录 对象的布尔值 分支结构 双分支结构 多分支结构 嵌套if的使用 条件表达式 Pass语句 range()函数的使用 流程控制语句 对象的布尔值 Python一切皆对象&#xff0c;所有对象都有一个布尔值&#xff0c;通过内置函数bool&#xff08;&#xff09;获取对象的布尔值 这些…

路由器虚拟服务器有什么作用

现如今在IPv4时代&#xff0c;由于公网IP地址的匮乏&#xff0c;约有70%的电脑都处于内网中&#xff0c;上网需要通过路由器。如果反过来想要访问身处内网的电脑&#xff0c;我们就需要在路由器里开放相应的端口才能实现。而这开放端口的功能&#xff0c;在路由器里就叫做虚拟服…

NASA数据:南极海洋生物资源

Antarctic Marine Living Resources (AMLR) program 南极海洋生物资源许可证 南极海洋生物资源保护委员会公约区受到管制。任何打算从该区域捕获海洋生物的人都必须获得许可证。 简介 美国是南极海洋生物资源保护委员会&#xff08;Commission for the Conservation of Anta…

JVM面试重点-2

16. 吞吐量优先和响应时间优先的回收器是哪些&#xff1f; 吞吐量优先&#xff1a;Parallel Scavenge Parallel Old&#xff08;多线程并行&#xff09;->简称&#xff1a; PSPO -> JDK1.8默认响应时间优先&#xff1a;ParNew CMS&#xff08;并发回收垃圾&#xff09…

git 分支管理规范

分支命名 master 分支 master 为主分支&#xff0c;也是用于部署生产环境的分支&#xff0c;需要确保master分支稳定性。master 分支一般由 release 以及 hotfix 分支合并&#xff0c;任何时间都不能直接修改代码。 develop 分支 develop 为开发环境分支&#xff0c;始终保持…

VMware 桥接网络突然无法上网

VMware 桥接网络突然无法上网 0. 问题1. 解决方法 0. 问题 昨天&#xff0c;VMware 桥接网络正常使用&#xff0c;今天突然无法上网。 1. 解决方法 打开VMware的虚拟网络编辑器&#xff0c;将桥接模式的网络从“自动”改成你要使用的网卡&#xff0c;问题解决。 完成&#…

通过命令行启动MySQL

通过命令行启动MySQL 右击&#xff0c;选择管理员运行 停止MySQL net stop你的服务名称 net stop MySQL启动MySQL net start你的服务名称 net start MySQL

ElasticSearch地理空间数据了解

ElasticSearch地理空间数据了解 使用场景 Elasticsearch 的地理空间数据处理功能在现代社会中有着广泛的应用&#xff0c;以下是一些常见的使用场景和方向&#xff1a; 1. 位置搜索和导航 本地服务发现&#xff1a;应用程序可以使用 Elasticsearch 查找用户附近的餐馆、商店…

【java分布式计算】分布式计算程序设计基础

期末复习 自留 重点只抓考点 目录 基本技术 SOCKETS网络套接字 多线程 数据序列化 Java I/O流 集合容器 范型 内部类、匿名类、Lambda&#xff08;代码&#xff09; 项目构建管理工具 高级技术 注解&#xff08;代码&#xff09; 反射&#xff08;代码&#xff09;…

C语言笔记第15篇:文件操作

1、为什么使用文件&#xff1f; 如果没有文件&#xff0c;我们写的程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失了&#xff0c;等再次运行程序&#xff0c;是看不到上次程序的数据的&#xff0c;如果要将数据进行持久化…

【PL理论】(29) OOP:面向对象编程 | 案例研究:C++ 中的类 | 继承 | 继承和指针 | Object-oriented Programming

&#x1f4ad; 写在前面&#xff1a;本章我们将进入 Object-oriented Programming&#xff0c;面向对象编程的讲解&#xff0c;探讨 C 中的类&#xff0c;继承等。 目录 0x00 面向对象编程 0x01 C语言中的结构体 0x02 案例研究&#xff1a;C 中的类 0x03 术语 0x04 继承&…