【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的平均负载非常高

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

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

相关文章

车牌识别技术,如何用python识别车牌号

目录 一.前言 二.运行环境 三.代码 四.识别效果 五.参考 一.前言 车牌识别技术&#xff08;License Plate Recognition, LPR&#xff09;在交通计算机视觉&#xff08;Computer Vision, CV&#xff09;领域具有非常重要的研究意义。以下是该技术的一些扩展说明&#xff1…

如何解决msvcp110.dll丢失问题,多种解决方法分享

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcp110.dll丢失”&#xff0c;msvcp110.dll是Microsoft Visual C 2012 Redistributable的一个组件&#xff0c;它提供了许多用于运行程序的函数和类库。当这个文件丢失或损坏时&#xff…

oracle-存储结构

文件包括 控制文件.ctl、数据文件.dbf、日志文件.log这三类放在存储上。 参数文件&#xff1a;空间的划分&#xff0c;进程的选用&#xff08;.ora&#xff09; oracle启动的时候需要读一下&#xff0c;数据库启动后&#xff0c;参数文件并不关闭&#xff0c;但即使文件丢了&a…

域用户信息查询

域环境基本知识 本地账户 本地账户 命令行查询本地账户 net user来宾账户默认来宾组&#xff1a; net localgroup Guests 查询guest账号SID wmic group get name,sid | findstr Guestspowershell 查询本地用户和 SID Get-WmiObject -Class Win32_UserAccount -Filter &q…

visual studio + intel Fortran 错误解决

版本&#xff1a;VS2022 intel Fortran 2024.0.2 Package ID: w_oneAPI_2024.0.2.49896 共遇到三个问题。 1.rc.exe not found 2.kernel32.lib 无法打开 3.winres.h 无法打开 我安装时参考的教程&#xff1a;visual studio和intel oneAPI安装与编写fortran程序_visual st…

私有部署ELK,搭建自己的日志中心(六)-- 引入kafka对采集日志进行削峰填谷

一、背景 首先&#xff0c;要说明一点&#xff0c;elk日志中心&#xff0c;是可以缺少kafka组件的。 其次&#xff0c;如果是研发环境下&#xff0c;机器资源紧张的情况下&#xff0c;也是可不部署kafka。 最后&#xff0c;因为kafka的部署是可以独立的&#xff0c;所以本文将…

IP地理位置定位技术基本原理

IP地理位置定位技术的基本原理是基于IP地址的特性。每个IP地址在网络中都有一个与之对应的地理位置信息&#xff0c;这是通过IP地址数据库来确定的。这个数据库由ISP&#xff08;Internet Service Provider&#xff09;或其它一些机构维护&#xff0c;其中包含了每个IP地址的地…

凸包算法--物体表面积/体积计算--python版

文章目录 环境&#xff1a;1.1 凸包法介绍&#xff1a;2.1 python代码3.1 可视化4.1 体积/表面积Calculation 环境&#xff1a; Open3D 1.1 凸包法介绍&#xff1a; 用于找到包围给定点集的最小凸多边形或凸多面体 常用的凸包算法&#xff1a; Grabam扫描法&#xff08;适用…

iptables 防火墙(二)

目录 1. SNAT 策略及应用 1.1 SNAT策略概述 1. 只开启路由转发&#xff0c;未设置地址转换的情况 2. 开启路由转发&#xff0c;并设置SNAT转换的情况 1.2 SNAT策略的应用 1. 2.1 共享固定IP上网 &#xff08;1&#xff09;打开网关的路由转发 &#xff08;2&#xff09;…

LLaVA-v1.5-7B:实现先进多模态学习的开源AI

引言 LLaVA-v1.5-7B是一个开源大型多模态模型&#xff08;LMM&#xff09;&#xff0c;它通过结合视觉指令调整&#xff08;Visual Instruction Tuning&#xff09;技术&#xff0c;展示了在多模态理解和生成任务上的卓越性能。该模型特别注重简洁性和数据效率&#xff0c;利用…

MySQL:索引

MySQL官方对索引的定义为: 索引 (Index) 是帮助MySQL高效获取数据的数据结构。 提取句子主干&#xff0c;就可以得到索引的本质:索引是数据结构。 1. 什么是索引&#xff0c;索引的作用 索引是一种用于快速查询和检索数据的数据结构&#xff0c;帮助mysql提高查询效率的数据…

在Linux运行LaTeX

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

安装hadoop

前置需要安装java rz tar -zxvf jdk-8u381-linux-x64.tar.gz -C / ln -s /jdk1.8.0_381/ /jdk # rm jdk-8u381-linux-x64.tar.gzexport JAVA_HOME/jdk export PATH$PATH:$JAVA_HOME/binhadoop可以选择清华源或者官网下载官网 rz # 上传hadoop包到机器 tar -zxvf hadoop-3.3.6…

精致旅游公司Treker网页设计 html模板

一、需求分析 旅游网站通常具有多种功能&#xff0c;以下是一些常见的旅游网站功能&#xff1a; 酒店预订&#xff1a;旅游网站可以提供酒店预订服务&#xff0c;让用户搜索并预订符合其需求和预算的酒店房间。 机票预订&#xff1a;用户可以通过旅游网站搜索、比较和预订机票…

【数据结构】链式家族的成员——循环链表与静态链表

循环链表与静态链表 导言一、循环链表1.1 循环单链表1.2 循环双链表 二、静态链表2.1 静态链表的创建2.2 静态链表的初始化2.3 小结 结语 导言 大家好&#xff01;很高兴又和大家见面啦&#xff01;&#xff01;&#xff01; 经过前面的介绍&#xff0c;相信大家对链式家族的…

企业如何做好内容?媒介盒子分享

在个性化算法的支持下&#xff0c;企业通过创作优质内容使消费者主动选择企业的时代已经来临&#xff0c;对于中小企业来说&#xff0c;这是能够低成本进行营销的好机会。但是有许多企业对内容的理解依旧是片面的&#xff0c;今天媒介盒子就来和大家聊聊&#xff1a;企业如何做…

【MYSQL】-函数

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

《微信小程序开发从入门到实战》学习六十七

6.6 网络API 部分小程序服务端不是用云开发技术实现&#xff0c;而是由开发人员使用后端开发语言实现。 在小程序用网络API与&#xff08;开发人员使后端开发语言建设的&#xff09;服务端进行交互&#xff0c;可与服务端交换数据、上传或下载文件。 6.6.1 服务器域名配置 …

zookeeper之集群搭建

1. 集群角色 zookeeper集群下&#xff0c;有3种角色&#xff0c;分别是领导者(Leader)、跟随着(Follower)、观察者(Observer)。接下来我们分别看一下这三种角色的作用。 领导者(Leader)&#xff1a; 事务请求&#xff08;写操作&#xff09;的唯一调度者和处理者&#xff0c;保…

LTSpice仿真场效应管(FET)的方法

刚开始用LTSpice学习电子电路&#xff0c;发现添加 JFET 和 MOSFET 的方法与添加普通原件不一样&#xff0c;需要分两步完成。 第一步&#xff1a;选择元件 njf、pjf、nmos、pmos&#xff0c;分别对应 N Channel 的 JFET 和 P Channel 的 JFET&#xff1b;N Channel 的 MOSFET…