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

目录

一、什么是存储过程?

二、存储过程的作用

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

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

第一种:输入参数 

第二种:输出参数

第三种:输入输出参数

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

第一种: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.mzph.cn/news/585684.shtml

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

相关文章

利用 IntelliJ IDEA 整合 GitHub 实现项目版本控制与协作管理

目录 前言1 设置GitHub登录账号2 将项目分享到GitHub3 IntelliJ IDEA 中导入Github项目4 往GitHub推送代码4.1 Commit Change&#xff08;提交到本地库&#xff09;4.2 Git -> Repository -> Push&#xff08;推送到远程库&#xff09; 5 拉取远程库代码到本地6 克隆远程…

Android MVC 写法

前言 Model&#xff1a;负责数据逻辑 View&#xff1a;负责视图逻辑 Controller&#xff1a;负责业务逻辑 持有关系&#xff1a; 1、View 持有 Controller 2、Controller 持有 Model 3、Model 持有 View 辅助工具&#xff1a;ViewBinding 执行流程&#xff1a;View >…

Ubuntu22.04系统安装软件、显卡驱动、cuda、cudnn、pytorch

Ubuntu22.04系统安装软件、显卡驱动、cuda、cudnn、pytorch 安装 Nvidia 显卡驱动安装 CUDA安装 cuDNN安装 VSCode安装 Anaconda 并更换源在虚拟环境中安装 GPU 版本的 PyTorchReference 这篇博文主要介绍的是 Ubuntu22.04 系统中软件、显卡驱动、cuda、cudnn、pytorch 等软件和…

STM32CubeMX教程8 TIM 通用定时器 - 输出比较

目录 1、准备材料 2、实验目标 3、实验流程 3.0、前提知识 3.1、CubeMX相关配置 3.1.1、时钟树配置 3.1.2、外设参数配置 3.1.3、外设中断配置 3.2、生成代码 3.2.1、外设初始化函数调用流程 3.2.2、外设中断函数调用流程 3.2.3、添加其他必要代码 4、常用函数 5…

轮廓检测与处理

轮廓检测 先将图像转换成二值 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 灰度图 ret, thresh cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 变为二值&#xff0c;大于127置为255&#xff0c;小于100置为0.使用cv2.findContours(thresh, cv2.RETR_TREE, cv2.…

jvm实战之-常用jvm命令的使用

各命令的使用 JMAP 1、查看内存信息&#xff0c;对象实例数、对象占有大小 jmap -histo 进程号>./log.txt2、查看堆的配置信息和使用情况 jmap - heap 进程号3、将堆的快照信息dump下来&#xff0c;使用java自带的jvisualvm.exe打开分析 jmap -dump:formatb,filedump.h…

Elasticsearch:升级索引以使用 ELSER 最新的模型

在此 notebook 中&#xff0c;我们将看到有关如何使用 Reindex API 将索引升级到 ELSER 模型 .elser_model_2 的示例。 注意&#xff1a;或者&#xff0c;你也可以通过 update_by_query 来更新索引以使用 ELSER。 在本笔记本中&#xff0c;我们将看到使用 Reindex API 的示例。…

二叉树之堆的应用

目录 堆排序 思路详解 Ⅰ 建堆 Ⅱ 利用堆的删除思想来进行排序 功能接口 向上调整算法 向下调整算法 主函数 运行结果展示 TOP - K问题 思路详解 Ⅰ 用数据集合中前K个元素来建堆 Ⅱ 用剩余的N-K个元素依次与堆顶元素来比较&#xff0c;不满足则替换堆顶元素 功…

算法刷题:最大异或对(Trie树扩展)、食物链(并查集扩展)

目录 引言一、最大异或对&#xff08;Trie树扩展&#xff09;1.题目描述2.解题思路3.代码实现4.测试 二、食物链&#xff08;并查集扩展&#xff09;1.题目描述2.解题思路3.代码实现4.测试 引言 这两个扩展题能够让我们更加的熟悉Trie树和并查集的使用&#xff0c;这两道题可以…

MySQL:子查询

子查询 子查询是嵌套在较大查询中的 SQL 查询&#xff0c;也称内部查询或内部选择&#xff0c;包含子查询的语句也称为外部查询或外部选择。简单来说&#xff0c;子查询就是指将一个 select 查询&#xff08;子查询&#xff09;的结果作为另一个 SQL 语句&#xff08;主查询&a…

Leetcode的AC指南 —— 哈希法/双指针:15. 三数之和

摘要&#xff1a; Leetcode的AC指南 —— 15. 三数之和。题目介绍&#xff1a;给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且…

Android—— MIPI屏调试

一、实现步骤 1、在kernel/arch/arm/boot/dts/lcd-box.dtsi文件中打开&dsi0节点&#xff0c;关闭其他显示面板接口&#xff08;&edp_panel、&lvds_panel&#xff09; --- a/kernel/arch/arm/boot/dts/lcd-box.dtsib/kernel/arch/arm/boot/dts/lcd-box.dtsi-5,14 …

水库大坝安全监测设计与施工经验

随着我国的科技水平不断上升&#xff0c;带动了我国的水电建设向更高层次发展。目前&#xff0c;我国的水电站大坝已有上百座&#xff0c;并且大坝安全检测仪器质量与先进技术不断更新发展&#xff0c;如今水电站大坝数据信息采集与观测资料分析&#xff0c;能够有效提高水库大…

Linux系统安装MySQL

Linux系统安装MySQL 第一步&#xff1a;下载YUM wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm第二步&#xff1a;安装MySQL的YUM 仓库 rpm -ivh mysql57-community-release-el7-11.noarch.rpm第三步&#xff1a;查看MySQL版本 yum repolist …

ESP32:整合存储配网信息和MQTT笔记

文章目录 1.给LED和KEY的所用IO增加配置项1.1 增加配置文件1.2 修改相应的c源码 2. 把mqtt\tcp的工程整合到一起2.1 在何处调用 mqtt_app_start() 3. 测试MQTT4. 完整的工程源码 有一段时间没有玩ESP32&#xff0c;很多知识点都忘记了。今天测试一下MQTT&#xff0c;做个笔记。…

基于ssm的4S店预约保养系统开发+vue论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

如何成功拿下uniapp生命周期?

uniapp介绍 Uniapp作为一款跨平台应用开发框架&#xff0c;具有两个生命周期&#xff1a; 组件生命周期页面生命周期什么是页面&#xff1f; pages下面的.vue或者.nvue&#xff08;app端&#xff09;文件就是页面 什么是组件&#xff1f; 一般通常会把项目中的组件放在com…

web前端开发html/css求职简介/个人简介小白网页设计

效果图展示&#xff1a; html界面展示&#xff1a; html/css代码&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.…

驶入未来:网约车运营数据揭秘与可视化大屏展示

驶入未来&#xff1a;网约车运营数据揭秘与可视化大屏展示 引言1. 数据获取与准备1.1 数据来源1.2 数据结构 2. 数据处理模块2.1 数据清洗2.2 数据转换2.3 数据整合 3. 数据可视化大屏4. 创新性可视化展示5. 应用与决策支持 结语 引言 数字化时代下&#xff0c;网约车运营数据…

轮滑培训机构会员系统,轮滑俱乐部会员卡管理软件教程

轮滑培训机构会员系统&#xff0c;轮滑俱乐部会员卡管理软件教程 一、软件程序问答 1、轮滑会员管理&#xff0c;那么会员卡是否可以直接用手机号呢&#xff1f; 如下图&#xff0c;软件以 佳易王轮滑会员管理系统V16.2为例说明 会员在登记的时候&#xff0c;会员卡可以直…