首页 > 数据库 >MySQL;存储过程

MySQL;存储过程

时间:2023-02-24 13:00:10浏览次数:33  
标签:存储 name -- MySQL SQL 过程 select

 【1】什么是存储过程(Stored Procedure)

通过前面章节的学习,我们已经知道SQL是一种非常便利的语言。从数据库抽取数据,或者对特定的数据集中更新时,都能通过简洁直观的代码实现。

但是这个所谓的“简洁”也是有限制,SQL基本是一个命令实现一个处理,是所谓的非程序语言。

在不能编写流程的情况下,所有的处理只能通过一个个命令来实现。当然,通过使用连接及子查询,即使使用SQL的单一命令也能实现一些高级的处理,但是,其局限性是显而易见的。例如,在SQL中就很难实现针对不同条件进行不同的处理以及循环等功能。

这个时候就出现了存储过程这个概念,简单地说,存储过程就是数据库中保存(Stored)的一系列SQL命令(Procedure)的集合。也可以将其看作相互之间有关系的SQL命令组织在一起形成的一个小程序。

【2】存储过程的优点

1) 提高执行性能。存储过程执行效率之所高,在于普通的SQL语句,每次都会对语法分析,编译,执行,而存储过程只是在第一次执行语法分析,编译,执行,以后都是对结果进行调用。

2) 可减轻网络负担。使用存储过程,复杂的数据库操作也可以在数据库服务器中完成。只需要从客户端(或应用程序)传递给数据库必要的参数就行,比起需要多次传递SQL命令本身,这大大减轻了网络负担。
3) 可将数据库的处理黑匣子化。应用程序中完全不用考虑存储过程的内部详细处理,只需要知道调用哪个存储过程就可以了

【3】图解:

 

【4】展示存储过程:

-- 定义一个没有返回值 存储过程
-- 实现:模糊查询操作:
select * from emp where ename like '%A%';
create procedure mypro01(name varchar(10))
begin
        if name is null or name = "" then
                select * from emp;
        else
    select * from emp where ename like concat('%',name,'%');
        end if;	
end;
-- 删除存储过程:
drop procedure mypro01;
-- 调用存储过程:
call mypro01(null);
call mypro01('R');
-- 定义一个  有返回值的存储过程:
-- 实现:模糊查询操作:
-- in 参数前面的in可以省略不写
-- found_rows()mysql中定义的一个函数,作用返回查询结果的条数
create procedure mypro02(in name varchar(10),out num int(3))
begin
        if name is null or name = "" then
                select * from emp;
        else
    select * from emp where ename like concat('%',name,'%');
        end if;	
        select found_rows() into num;
end;
-- -- 调用存储过程:
call mypro02(null,@num);
select @num;
call mypro02('R',@aaa);
select @aaa;

 

标签:存储,name,--,MySQL,SQL,过程,select
From: https://www.cnblogs.com/89564f/p/17151028.html

相关文章

  • centos8 安装mysql8.0.11—shell自动化脚本
    需求说明自动化安装mysql8.0.11并修改密码为指定字符并根据提供的sql文件创建以文件名为名称的数据库并执行sql文件下载压缩包下载地址流程总览:1.将压缩包上传到......
  • mysql数据类型以及各种语句的总结
    数据类型分类整数型,浮点型(float和double),定点数,字符串(char,varchar,text),日期时间类型,修饰符字符串(char,varchar,text)char(n)固定长度,最多255个字符,注意不是字......
  • 使用Alpine Linux做基础镜像备份mysql8.0+数据库
    说明本篇文章仅是基于k8scronjob备份mysql8.0+数据库,使用AlpineLinux作为基础镜像时遇到的问题做下简单的排坑,没有涉及到具体的部署细节,后面有时间再补上。镜像打包#......
  • 云原生|kubernetes|部署MySQL一主多从复制集群(基于GTID的复制)
    前言:一,MySQL的主从复制优点如下:数据更安全:做了数据冗余,不会因为单台服务器的宕机而丢失数据性能大大提升:一主多从,不同用户从不同数据库读取,性能提升扩展性更优:流量增大时,可......
  • Oracle数据库基本操作(和MySQL的类比操作)全局查询篇
                             Oracle数据库基本操作(和MySQL的类比操作)全局查询篇Oracle数据库和MySQL数据库同属关系型数......
  • 存储架构---纵向/横向扩
    存储架构        scale-up(纵向扩、单点扩)            scalce-out(横向扩、扩多点) ......
  • ubuntu安装mysql并设置忽略大小写
    更新apt包管理sudoapt-getupdate安装mysql-serversudoapt-getinstallmysql-serverc正常情况下安装完后mysql已启动,查看mysql状态systemctlstatusmysql.se......
  • mysql 的 json 类型
    创建表DROPTABLEIFEXISTS`student`;CREATETABLE`student`(`id`int(0)NOTNULLAUTO_INCREMENTCOMMENT'表的id',`name`varchar(255)CHARACTERSETut......
  • 急速安装mysql8 in windows
    安装准备下载地址:https://dev.mysql.com/downloads/mysql/解压不赘述添加环境变量不赘述初始化安装根目录配置增加my.ini文件下面配置A=安装跟目录一般只有:b......
  • MySQL增删查改
    创建数据库createdatabase数据库名;查看数据库showdatabases;切换数据库use数据库名;创建表createtable表名(字段名  类型,字段名  类型,......);插......