【MySQL】数据库之存储过程(“SQL语句的脚本“)

news2025/1/18 18:49:53

目录

一、什么是存储过程?

二、存储过程的作用

三、如何创建、调用、查看、删除、修改存储过程

四、存储过程的参数(输入参数,输出参数,输入输出参数)

第一种:输入参数 

第二种:输出参数

第三种:输入输出参数

五、存储过程中的条件与循环语句

第一种:if条件的存储过程

第二种:while循环的存储过程 

六、如何一次性往数据库中插入上万条数据?

第一种存储过程实现上万数据插入

第二种shell脚本实现上万数据插入


一、什么是存储过程?

存储过程是一组为了完成特定功能的SQL语句的集合。有点shell脚本的意思

存储过程在使用过程中,是将常用或者复杂的工作预先使用SQL语句写好并用一个指定的名称存储起来,这个过程经编译和优化存储在数据库服务器中,当需要使用该存储过程的时候,只需要调用即可。存储过程在执行上比传统的SQL语句速度更快,执行的效率也更高。

二、存储过程的作用

优点:

1、执行一次后,会将生成的二进制代码驻留缓冲区,提高执行效率;

2、SQL语句加上控制语句的集合,灵活性高;

3、在服务器端存储,客户端调用时,降低网络负载;

4、可以多次重复调用存储过程,也可以随时修改,不影响客户端的调用;

5、可以完成所有数据库的操作,也可以控制数据库的信息访问权限。

三、如何创建、调用、查看、删除、修改存储过程

存储过程也是一种对象,增删改查的命令可以套用DDL的相关语句

存储过程是创建在库中的,需要先用use切换库,否则需要在创建的时候,指定库名
##创建存储过程了
delimiter 结束符 ##先自定义结束符,因为存储过程中的SQL语句用分号结尾,这时需要修改作为区分
create procedure 存储过程名称()
begin
SQL语句集合
end结束符号
delimiter ; ##将结束符修改回为分号

##查看存储过程
show create procedure [库名].存储过程名称;
show procedure status like '存储过程名称' \G; ##支持通配符

##调用存储过程
call 存储过程名称;

##删除存储过程
drop procedure 存储过程名称;
drop procedure if exists 存储过程名称; ##如果存在则删除

 

修改存储过程的方法:

存储过程内容的修改方法是通过删除原有存储过程,之后再以相同的名称创建新的存储过程。如果要修改存储过程的名称,可以先删除原存储过程,再以不同的命名创建新的存储过程。 

总结就是重新创建储存过程,没有直接删除的方法

四、存储过程的参数(输入参数,输出参数,输入输出参数)

可以在存储过程创建的时候加入参数,

创建存储过程定义的参数叫形式参数,create procedure 存储名称(形式参数)

调用的时候添加的参数叫做实际参数call 存储名称(实际参数)

第一种:输入参数 

delimiter $$
CREATE PROCEDURE proc2(in in_name VARCHAR(20))
BEGIN
INSERT INTO t3 (NAME)VALUES(in_name);
END$$
delimiter ;
CALL proc2('wwy');

 

第二种:输出参数

delimiter $$
CREATE PROCEDURE proc3(in in_id INT,OUT out_name varchar(20))
BEGIN
SELECT NAME INTO out_name FROM t3 where id=in_id;
END$$
delimiter ;
CALL proc3(2,@dest);
SELECT @dest;

##select 字段或聚合函数 into +输出参数名称 from 表名 where 条件
##输出参数的值一般是一个确定的值,多个会报错

单个案例举例,针对存储过程的输出参数,如果是2个值,可能不可以实现,

必须是只有1个特定的值

第三种:输入输出参数

输入输出参数首先需要满足出入的和输出的数据类型是一致的!! 比如都为int数字 或者都为varchar

delimiter $$
CREATE PROCEDURE proc4(INOUT i INT)
BEGIN
SELECT COUNT(name) INTO i FROM t3 where id>i;
END$$
delimiter ;
SET a=5;
CALL proc4(@a);
SELECT @a;

五、存储过程中的条件与循环语句

第一种:if条件的存储过程

delimiter $$
CREATE PROCEDURE proc5(IN in_id INT)
BEGIN
DECLARE m INT;
SET m=in_id;
IF m>=4 THEN UPDATE t3 SET grade='good';
ELSE UPDATE t3 SET grade='bad';
END if;
END$$

 

第二种:while循环的存储过程 

mysql> delimiter $$
mysql> create procedure proc6()
    -> begin
    -> declare m int;
    -> set m=1;
    -> create table t4(id int primary key auto_increment,name varchar(20));
    -> while m<10 do
    -> insert into t4(name)values(concat('student',m));
    -> set m=m+1;
    -> end while;
    -> end$$

六、如何一次性往数据库中插入上万条数据?

有两种方式 存储过程和shell脚本

第一种存储过程实现上万数据插入

一百万条数据  用时50秒

第二种shell脚本实现上万数据插入

 shell脚本需要耗时比较久,有大量的IO操作,cpu的平均负载非常高

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

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

相关文章

FPGA高端项目:基于GTH的 4K HDMI 视频收发例程,提供工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐我已有的 GT 高速接口解决方案我已有的FPGA图像处理方案 3、详细设计方案设计框图4K HDMI 输入硬件解决方案Video PHY ControllerHDMI 1.4/2.0 Receiver Subsystem4K HDMI 解码后的视频流走向4K HDMI 解码后的音频流走向HDMI 1.4/2.0 Tran…

跨境电商:让中国制造走向世界

跨境电商的崛起 跨境电商是指不同国家和地区之间的商业交易&#xff0c;通过互联网和物流等方式完成。随着全球化和互联网的普及&#xff0c;跨境电商迅速崛起&#xff0c;成为全球贸易的重要组成部分。中国作为全球最大的制造业国家&#xff0c;拥有着丰富的商品资源和供应链…

软件设计师——软件工程(三)

&#x1f4d1;前言 本文主要是【软件工程】——软件设计师——软件工程的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304…

Android APK未签名提醒

最近新建了一个项目&#xff0c;在build.gradle中配置好了签名&#xff0c;在执行打包的时候打出的包显示已签名&#xff0c;但是在上传市场的时候提示未签名。于是排查了好久&#xff0c;发现在build.gradle中配置的minsdk 24&#xff0c;会导致不使用V1签名&#xff0c;于是我…

软件工程期末复习习题

知识点总结 第一章&#xff1a;软件工程概述 1、软件的定义&#xff1a;在运行中能提供所希望的功能与性能的程序使程序能够正确运行的数据及其结构描述软件研制过程和方法所用的文档。 2、软件危机&#xff1a;软件开发的生产率远远不能满足客观需要。开发的软件产品往往不能…

关于蚁剑(AntSword)的溯源反制

中国蚁剑(AntSword) RCE漏洞 此漏洞在AntSword2.7.1版本上修复 &#xff0c;所以适用于AntSword2.7.1以下版本。 下面介绍被低版本蚁剑攻击后如何进行溯源反打 以物理机为攻击机&#xff0c;虚拟机kali模拟受害者&#xff0c;之后使用kali进行溯源反制 物理机内网ip地址&…

图文证明 牛顿-莱布尼茨公式

牛顿-莱布尼茨公式 牛顿-莱布尼茨公式是微积分中的基本定理之一&#xff0c;它描述了函数的导数和不定积分之间的关系。 该公式通常用来计算定积分。设函数f(x)在区间[a, b]上连续&#xff0c;且F(x)是f(x)在该区间上的一个原函数 即F’(x) f(x)。则牛顿-莱布尼茨公式表示为&…

trino-435: 集群部署

一、源码编译打包 现在本地使用idea工具对trino源码进行打包编译&#xff0c;并对trino服务信息进行压缩用于上传到linux服务器&#xff0c;如下所示&#xff1a; 编译打包过程中遇到的问题&#xff1a; 对core下的trino-server-rpm模块进行mavn install时候出现某jar&#x…

在Linux运行LaTeX

共有三个步骤1. 装LaTexTeX Live - TeX Users Group 下载对应版本安装包安装 文件比较大&#xff0c;这步花的时间多一点&#xff0c;不过也不会太多&#xff0c;感觉5分钟十分钟的样子吧 2. 装TexStidio 这一步是安装一个类似在windows系统下的TaTeX GUI软件 图标是这样3. 配置…

【算法与数据结构】763、LeetCode划分字母区间

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;本题要求为&#xff1a; 1.尽可能多的划分片段2.字母只能出现在一个片段中3.片段连接起来仍然是s&…

数据库开发表操作案例的详细解析

2.3.1.4 案例 需求&#xff1a;根据产品原型/需求创建表((设计合理的数据类型、长度、约束) 产品原型及需求如下&#xff1a; 步骤&#xff1a; 阅读产品原型及需求文档&#xff0c;看看里面涉及到哪些字段。 查看需求文档说明&#xff0c;确认各个字段的类型以及字段存储数据…

若依framework模块解读,Java小白入门(六)

切面编程我们单独作为一个章节进行了分析&#xff0c;这一节我们来看若依framework模块其他部分的内容&#xff0c;其中&#xff0c;关于安全的部分&#xff0c;这个章节暂时不深入&#xff0c;需要单独一个章节结合token认证等一起讨论。 配置 config 这个也不需要多展开&…

io流——转换流

1 为什么需要转换流 为啥 乱码的原理 怎么解决&#xff1f; 1 让两边编码一样 2 使用转换流 2 转换流

推荐:一个不错的介绍Apache Doris的PPT

原来Apache Doris居然是百度开源出来的&#xff0c;不错。部分节选&#xff1a;完整下载地址网盘&#xff1a; 链接: https://pan.baidu.com/s/18WR70R_f72GxCjh0lykStQ 提取码: umd3 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 --来自百度网盘超级会员v7的分…

猪目标检测数据集VOC格式600张

猪是一种常见的哺乳动物&#xff0c;通常被人们认为是肉食动物&#xff0c;但实际上猪是杂食性动物&#xff0c;以植物性食物为主&#xff0c;也有偶尔食肉的习性。猪的体型较大&#xff0c;圆胖的体型和圆润的脸庞使其显得憨态可掬。它们主要通过嗅觉来感知周围环境&#xff0…

信号与线性系统翻转课堂笔记16——离散LTI系统的各类响应

信号与线性系统翻转课堂笔记16——离散LTI系统的各类响应 The Flipped Classroom16 of Signals and Linear Systems 对应教材&#xff1a;《信号与线性系统分析&#xff08;第五版&#xff09;》高等教育出版社&#xff0c;吴大正著 一、要点 &#xff08;1&#xff0c;重点…

云原生|kubernetes|kubernetes资源备份和集群迁移神器velero的部署和使用

前言&#xff1a; kubernetes集群需要灾备吗&#xff1f;kubernetes需要迁移吗&#xff1f; 答案肯定是需要的 那么&#xff0c;如何做kubernetes灾备和迁移呢&#xff1f;当然了&#xff0c;有很多的方法&#xff0c;例如&#xff0c;自己编写shell脚本&#xff0c;或者使用…

Elasticsearch 8.X进阶搜索之“图搜图”实战

Elasticsearch 8.X “图搜图”实战 1、什么是图搜图&#xff1f; "图搜图"指的是通过图像搜索的一种方法&#xff0c;用户可以通过上传一张图片&#xff0c;搜索引擎会返回类似或者相关的图片结果。这种搜索方式不需要用户输入文字&#xff0c;而是通过比较图片的视…

goframe v2 模板引擎的用法

这里用的goframe v2框架 提醒&#xff1a;下面的import 引入的控制器和api&#xff0c;根据自己实际项目路径 main函数 import ("context""github.com/gogf/gf/v2/net/ghttp""github.com/gzdzh/dzhgo/modules/dzhCms/controller/web""gith…

【三维目标检测/自动驾驶】IA-BEV:基于结构先验和自增强学习的实例感知三维目标检测(AAAI 2024)

系列文章目录 论文&#xff1a;Instance-aware Multi-Camera 3D Object Detection with Structural Priors Mining and Self-Boosting Learning 地址&#xff1a;https://arxiv.org/pdf/2312.08004.pdf 来源&#xff1a;复旦大学 英特尔Shanghai Key Lab /美团 文章目录 系列文…