mysql进阶 - 存储过程

news2024/9/23 5:21:42

目录

1. 用途:

2. 相关语法

2.1 创建

2.1.1 语法

2.1.2 示例

2.2 查看存储过程

2.3 调用

2.4 修改存储过程

2.5 删除存储过程


1. 用途:

存储过程广泛存在于一些遗留系统,可以减少代码的编写。而近些年,存储过程很少再用于数据库中,个人认为大概有以下2个原因

1)存储过程并不适用于所有的数据库,例如oracle于mysql就不同,而程序写在代码中确是通用的。

2)存储过程在程序中是比较影响数据库性能,而把逻辑放在应用确是非常利于扩展的。

2. 相关语法

2.1 创建存储过程

2.1.1 语法

CREATE PROCEDURE 存储过程名 ([ IN | OUT | INOUT] 参数名称 类型 ...)程序体

参数含义:

IN 表示输入的参数,存储过程只是读取这个参数的值。如果没有定义参数种类,默认就是 IN,表示输入参数。

OUT 表示输出的参数,存储过程在执行的过程中,把某个计算结果值赋给这个参数,执行完成之后,调用这个存储过程的客户端或者应用程序就可以读取这个参数返回的值了

INOUT 表示这个参数既可以作为输入参数,又可以作为输出参数使用

类型: mysql的字段类型

2.1.2 示例

创建一个存储过程:往商品表插入100条数据

delimiter ;;
create procedure insertGoodData()
begin
  declare i int;
  set i=1;
  while(i<=100)do
        INSERT INTO `ys_t1`.`t_good`( `good_name`) VALUES ( concat('松子',i));
    set i=i+1;
  end while;
end;;
delimiter ;

商品表结构:非常简单

CREATE TABLE `t_good` (
  `good_id` int(12) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `good_name` varchar(20) DEFAULT NULL COMMENT '商品名称',
  PRIMARY KEY (`good_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

说明:

1) delimiter ;; 语句, 把 SQL 语句的分隔符改为“;;”,因为存储过程中包含很多 SQL 语句,如果不修改分隔符的话,MySQL 会在读到第一个 SQL 语句的分隔符“;”的时候,认为语句结束并且执行,这样就会导致错误。

2) create procedure insertGoodData()语句,声明创建一个存储过程

3) begin和 end 关键字把存储过程中的 SQL 语句包裹起来,形成存储过程的程序

4)delimiter ;语句,把 SQL 语句的分隔符改为“;”

2.2 查看存储过程

语句查看:例如查看上边创建的insertGoodData()存储过程,如下

SHOW CREATE PROCEDURE insertGoodData

管理软件如navicat,可在如下位置查看:

2.3 调用存储过程

调用语句如下:

call 存储过程名称;

示例:call insertGoodData();

2.4 修改存储过程

在navicat的管理页面如下,右击选择设计函数:

可以在弹出的窗口中进行修改,然后点击保存即可,如下图。

2.5 删除存储过程

DROP PROCEDURE 存储过程名称;

例如:drop procedure insertGoodData;

本次分享至此。

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

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

相关文章

【期末不挂科-C++考前速过系列P4】大二C++实验作业-继承和派生(3道代码题)【解析,注释】

前言 大家好吖&#xff0c;欢迎来到 YY 滴C考前速过系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《…

试用统信服务器操作系统UOS 20

作者&#xff1a;田逸&#xff08;formyz&#xff09; 试用统信Linux操作系统UOS&#xff0c;想了解一下用已有的Linux经验能否轻松驾驭它。以便在某些场景下&#xff0c;可以多一种选择。本次试验在Proxmox VE 8&#xff08;以下简称PVE 8&#xff09;平台下进行&#xff0c;采…

杨中科 .NETCORE ENTITY FRAMEWORK CORE-1 EFCORE 第一部分

一 、什么是EF Core 什么是ORM 1、说明: 本课程需要你有数据库、SOL等基础知识。 2、ORM: ObjectRelational Mapping。让开发者用对象操作的形式操作关系数据库 比如插入: User user new User(Name"admin"Password"123”; orm.Save(user);比如查询: Book b…

串行Nor Flash的结构和参数特性

文章目录 引言1、Nor Flash的结构2、Nor Flash的类别3.标准Serial Nor Flash的特征属性1.Wide Range VCC Flash2.Permanent Lock3.Default Lock Protection4.Standard Serial Interface5.Multi-I/O6.Multi-I/O Duplex (DTR)7.XIP&#xff08;片上执行&#xff09; 4.标准Serial…

【LabVIEW FPGA入门】LabVIEW FPGA 实现SPI通信协议

该实现由两个组件组成&#xff1a;在 LabVIEW FPGA 中实现的 SPI 协议以及用于从主机 PC 或实时控制器与 FPGA 进行通信的 LabVIEW 主机接口。该架构允许从单个主机程序控制多个 SPI 端口&#xff0c;同时仍然允许定制 FPGA VI 以进行其他数据采集和处理。该实现不使用任何DMA&…

运算电路(1)——加法器

一、引言 微处理器是由一片或少数几片大规模集成电路组成的中央处理器。这些电路执行控制部件和算术逻辑部件的功能。微处理器能完成取指令、执行指令&#xff0c;以及与外界存储器和逻辑部件交换信息等操作&#xff0c;是微型计算机的运算控制部分。它可与存储器和外围电路芯片…

FasterNet(CVPR 2023)论文解读

paper&#xff1a;Run, Dont Walk: Chasing Higher FLOPS for Faster Neural Networks official implementation&#xff1a;https://github.com/jierunchen/fasternet 存在的问题 为了设计轻量、速度快的网络&#xff0c;许多工作都专注于减少floating-point operations (F…

点餐新体验:老板自研扫码点餐小程序的成果

为了提高餐厅的效率和顾客的用餐体验&#xff0c;餐饮店老板们纷纷开始探索新的技术手段。其中&#xff0c;扫码点餐小程序就是一种非常受欢迎的解决方案。 扫码点餐小程序是一种基于微信小程序开发的餐饮点餐系统&#xff0c;它通过扫描桌码或菜品二维码&#xff0c;实现快速点…

图神经网络|图注意网络Graph Attention Network

图注意网络Graph Attention Network Leaky ReLU 有利于压低负数对结局的影响。 图注意网络Graph Attention Network的流程 输入向量 h i h_i hi​乘上权重矩阵W得到对应的向量 h i ∗ h_i^* hi∗​,并将 h i ∗ h_i^* hi∗​计算出对应的 a i a_i ai​,从而得到最终对结果向量…

2023年第十四届中国数据库技术大会(DTCC2023):核心内容与学习收获(附大会核心PPT下载)

随着信息化时代的深入发展&#xff0c;数据库技术作为支撑信息化应用的核心技术&#xff0c;其重要性日益凸显。本次大会以“数据价值&#xff0c;驱动未来”为主题&#xff0c;聚焦数据库领域的前沿技术与最新动态&#xff0c;吸引了数千名业界专家、企业代表和数据库技术爱好…

STL篇一:string

文章目录 前言1. STL的简单理解1.1 什么是STL1.2 STL的版本1.3 STL的六大组件1.4 STL的重要性1.5 STL的缺陷 2. string类2.1 为什么学习string类&#xff1f;2.1.1 C语言中的字符串2.1.2 两个面试题 2.2 标准库中的string类2.2.1 string类(了解)2.2.2 string类的常用接口说明 2…

Selenium 测试 Electron 应用

Electron 介绍 Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript代码代码库并创建 在Windows、macOS和Linux上运行的跨平台应用。 • 有哪些应用 有许多我们常见的桌面应用&am…

SpringBoot+SSM项目实战 苍穹外卖(09) day9作业

继续上一节的内容&#xff0c;本节是作业课&#xff0c;要求独立完成&#xff1a;用户端历史订单模块、商家端订单管理模块相关业务新功能开发和已有功能优化。 目录 作业要求用户端历史订单模块查询历史订单查询订单详情取消订单再来一单 商家端订单管理模块订单搜索各个状态的…

数据库练习题

素材&#xff1a; 表名&#xff1a;worker-- 表中字段均为中文&#xff0c;比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 varchar(10) NO…

Django教程|数据统计图表(echarts、highchart)

前言 highchart&#xff0c;国外。 echarts&#xff0c;国内。 本项目集成 hightchart和echarts图表库实现数据统计功能。 包括&#xff1a;折线图&#xff0c;柱状图&#xff0c;饼图和数据集图。 效果图 echats Highcharts 源代码 编写模板&#xff08;Template&#x…

使用 C++/WinRT 创作 API

如果 API 位于 Windows 命名空间中 这是你使用 Windows 运行时 API 最常见的情况。 对于元数据中定义的 Windows 命名空间中的每个类型&#xff0c;C/WinRT 都定义了 C 友好等效项&#xff08;称为投影类型 &#xff09;。 投影类型具有与 Windows 类型相同的完全限定名称&…

Redis高并发高可用(主从复制、哨兵)

复制 在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他机器,满足故障恢复和负载均衡等需求。Redis也是如此,它为我们提供了复制功能,实现了相同数据的多个Redis 副本。复制功能是高可用Redis的基础,哨兵和集群都是在复制的基础上实现高可用的。 默认…

【新特性演示】YOLOv8实现旋转对象检测

学习《OpenCV应用开发&#xff1a;入门、进阶与工程化实践》一书 做真正的OpenCV开发者&#xff0c;从入门到入职&#xff0c;一步到位&#xff01; YOLOv8旋转对象检测 YOLOv8框架在在支持分类、对象检测、实例分割、姿态评估的基础上更近一步&#xff0c;现已经支持旋转对象…

ps安装缺少msvcp140.dll如何解决,分享六种msvcp140.dll丢失的解决方法

在学习和工作中&#xff0c;我们经常会遇到各种各样的问题。最近&#xff0c;我在使用Photoshop&#xff08;简称PS&#xff09;时遇到了一个问题&#xff0c;即找不到msvcp140.dll文件。经过一番研究和尝试&#xff0c;我终于找到了解决这个问题的方法。在此&#xff0c;我想分…

搞懂 三次握手四次挥手

计算机网络体系结构 在学习TCP 三次握手四次挥手之前&#xff0c;让我们先来看下计算机网络分层:主要分为OSI模型和TCP/IP模型.OSI模型比较复杂且学术化&#xff0c;所以我们实际使用的TCP/IP模型。 // 以连接Mysql服务器为例理解这五层 // 应用层 应用层包含各种应用和服务…