一位爱好技术的橘右京的哥哥橘左京

前言:什么是存储过程?存储过程就像是一个接口,可以直接去调用,不需要重复的编写。

1.1 存储过程和函数概述存储过程和函数是事先经过编译并存储在数据库的一段SQL语句的集合,调用存储过程和函数可以简化开发人员的很多工作,减少数据和应用服务器之间的传输,对于提高数据处理的效率是有好处的。

存储过程和函数的区别在于函数必须有返回值,而存储过程没有。

1.2 创建存储过程

语句:delimiter $

create procedure 存储过程名称()

begin

SQL语句;

end$

释义:delimiter的中文解释为‘分隔符’,表示将“$”代替“;”设置为分隔符,因为在begin后的SQL语句中需要以";"结尾,所以就要设置一个与";"区分开的分隔符。

1.3 调用存储过程语法:call 存储过程名称;

执行创建存储过程完成后,使用调用方法调用存储过程。

1.4 查看存储过程

查询数据库中的存储过程select name from mysql.proc where db = 'test'

查询存储过程的状态信息show procedure status;

1.5 变量· DECLARE

通过DECLARE可以定义一个变量,该变量的作用范围用于BEGIN...END之间

1.5.1 声明变量示例:

案例:声明一个年龄变量并查询值delimiter $

create procedure 存储过程名称()

begin

declare age int default 0;

select concat('num的值是',age);

end $

1.5.2 SET赋值示例:

案例:声明一个年龄变量并通过SET赋值后查询值delimiter $

create procedure 存储过程名称()

begin

declare num int default 0;

set num = num + 10;

select concat('num的值是',num);

end $

1.5.3 select ...into...赋值示例:

案例:声明一个年龄变量并通过SELECT INTO 赋值后查询值delimiter $

create procedure 存储过程名称()

begin

declare num int;

select count(1) into num from bsx_user;

select num;

end $

1.6 IF语法判断

案例:当年龄段为12岁以下输出青年,当年龄在12-17输出青少年,18-29岁输出青年delimiter $

create procedure test01()

begin

declare age int default 15;

declare words varchar(20) default 10;

if age <=11 then

set words = '儿童';

elseif age >= 12 and age <= 17 then

set words = '青少年';

elseif age >=18 and age <= 29 then

set words = '青年';

end if;

select concat('年龄:',age,'属于:',words);

end $

1.7 输入/输出 参数

1.7.1 案例:输入参数 传参

-- 当年龄段为12岁以下输出儿童,当年龄在12-17输出青少年,18-29岁输出青年语法:create procedure test01([in/out/inout] 参数名 参数类型)

IN: 默认为该方法 调用方传入值作为输入参数

OUT: 该参数作为输出,也就是参数可以作为返回值

OUTIN: 既可以作为输入参数,也可以作为输出参数

创建可传入参数的存储过程:>delimiter $

create procedure test01(in age int)

begin

declare age int default 15;

declare words varchar(20) default 10;

if age <=11 then

set words = '儿童';

elseif age >= 12 and age <= 17 then

set words = '青少年';

elseif age >=18 and age <= 29 then

set words = '青年';

end if;

select concat('年龄:',age,'属于:',words);

end $

调用存储过程:call test01(15)

1.7.2 案例:输出参数 传参

-- 当年龄段为12岁以下返回儿童,当年龄在12-17返回青少年,18-29岁返回青年

根据传入的年龄大小返回对应的年龄区间名称:delimiter $

create procedure test01(in age int,out words varchar(20))

begin

if age <=11 then

set words = '儿童';

elseif age >= 12 and age <= 17 then

set words = '青少年';

elseif age >=18 and age <= 29 then

set words = '青年';

end if;

end $

调用存储过程:call test01(15)

查询返回的结果:select @words ; (words是声明的变量名)小知识:

@words:像这种前面带着@符号的变量称为会话变量,在整个会话过程起作用,类似于全局变量。

@@words:带有两个@@符号的被称为系统变量。

1.8 CASE语法结构

1.8.1 方式一(基本的CASE语法结构)

语法:case XXX

when 1 then

赋值;

when 2 then

赋值;

else

赋值;

end case;

创建存储过程:

(输入1返回1岁 输入2返回2岁,输入其他文本输出"其他")delimiter $

create procedure test01(age int,out words varchar(20))

begin

case age

when 1 then

set words = '一岁';

when 2 then

set words = '二岁';

else

set words = '其他';

end case;

end $;

调用存储过程:call test01(1,@words)

查询返回的结果:select @words;

1.8.2 方式二(带有表达式的CASE语法结构)

语法:case

when 表达式 then

赋值;

else

赋值;

end case;

创建存储过程:

(输入0-12 返回儿童,输入13-17返回青少年,输入18-29返回青年,输入其他值返回“老年”)delimiter $

create procedure test01(age int)

begin

declare words varchar(20);

case

when age >=0 and age <= 12 then

set words = '儿童';

when age >=13 and age <= 17 then

set words = '青少年';

when age >=18 and age <= 29 then

set words = '青年';

else

set words = '老年';

end case;

select words;

end $;

调用存储过程查询返回的结果:call test01(15);

1.9 While循环

特征:满足条件继续循环

语法:while a<=10 do

....

end while;

创建存储过程:

(输入一个数,累加超过这个数字时候停止循环并显示数字)delimiter $

create procedure test01(n int)

begin

declare total int default 0;

declare num int default 1;

while total <= n do

set total = total + num;

set num = num + 1;

end while;

select total;

end $

调用存储过程:call test01(2)

1.10 repeat循环

特征:满足条件退出循环

语法:repeat

循环语句...

until 条件语句

end repeat;

创建存储过程:(计算 1+到n的值)

delimiter $

create procedure test01(n int)

BEGIN

declare num int default 0;

repeat

set num = num + n;

set n = n-1;

until n = 0

end repeat;

select num;

end $

调用存储过程:call test01(5)

1.11 loop循环

特征:满足条件退出循环

语法:XX:loop (XX代表别名)

循环语句...

if XX<=0 then (因为loop不带有停止循环的判断语句 所以用IF)

leave c;

end if;

end loop c;

创建存储过程:

(计算 1+到n的值)delimiter $

create procedure test01(n int)

BEGIN

declare num int default 0;

c:loop

set num = num + n;

set n = n - 1;

if n <= 0 then

leave c;

end if;

end loop c;

select num;

end $

调用存储过程:call test01(5)

觉得有帮助可以收藏文章

mysql存储过程default的意思,针对新手的MYSQL存储过程详解相关推荐

  1. mysql存储过程按区间_针对新手的MYSQL存储过程详解_CSDN_ChenF的博客-CSDN博客

    原文作者:橘左京i 原文标题:针对新手的MYSQL存储过程详解 发布时间:2021-02-22 10:03:18 一位爱好技术的橘右京的哥哥橘左京 前言:什么是存储过程?存储过程就像是一个接口,可以直 ...

  2. mysql5.7.11 linux_CentOS 7 中以命令行方式安装 MySQL 5.7.11 for Linux Generic 二进制版本教程详解...

    MySQL 目前的最新版本是 5.7.11,在 Linux 下提供特定发行版安装包(如 .rpm)以及二进制通用版安装包(.tar.gz).一般情况下,很多项目都倾向于采用二进制通用安装包形式来进行安 ...

  3. 倩女手游经验计算机,倩女幽魂手游怎么快速升级 新手升级攻略详解

    倩女幽魂手游的公测已经开启啦!相信大家上了游戏第一件事就是快速的冲级,那么在倩女幽魂手游中要怎样升级呢?就让4399熊猫来为你带来倩女幽魂手游新手升级攻略详解~ 在倩女幽魂手游中获得经验的方法大致可以 ...

  4. mysql游标 原理解说_mysql存储过程之游标(DECLARE)原理与用法详解

    本文实例讲述了mysql存储过程之游标(DECLARE)原理与用法.分享给大家供大家参考,具体如下: 我们在处理存储过程中的结果集时,可以使用游标,因为游标允许我们迭代查询返回的一组行,并相应地处理每 ...

  5. 【mysql的设计与优化专题(5)】慢查询详解

    查询mysql的操作信息 show status -- 显示全部mysql操作信息show status like "com_insert%"; -- 获得mysql的插入次数;s ...

  6. MySQL调优(八):查缺补漏(mysql的锁机制,读写分离,执行计划详解,主从复制原理)

    mysql的锁机制 1.MySQL锁的基本介绍 ​ 锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的 计算资源(如CPU.RAM.I/O等)的争用以外,数据也是一种供许多用户共 ...

  7. MySQL运维(二)MySQL分库分表概念及实战、读取分离详解

    MySQL运维(二)MySQL分库分表详解.读取分离详解 1.MySQL分库分表相关概念 1.1 分库分表概念 1.1.1 分库的原因 分库:就是一个数据库分成多个数据库,部署到不同机器. 如果业务量 ...

  8. mysql映射mapper_这下够清楚了吧!详解Mybatis的Mapper映射文件

    前言 上节我们介绍了 < Mybatis系列全解(四):全网最全!Mybatis配置文件 XML 全貌详解 >,内容很详细( 也很枯燥),由于篇幅实在过于冗长,我预计大家想看完得花上两段上 ...

  9. MySQL攻略 - JDBC程序SQL注入,PreparedStatement接口详解与案例练习,JDBC相关API小结

    文章目录 SQL注入 Statement详解 基本介绍 Navicat演示SQL注入 JDBC演示SQL注入 PreparedStatement详解 基本介绍 预处理好处 预处理案例(selete语句 ...

最新文章

  1. Node.js in IIS — Hello World
  2. 【Flutter】Flutter 页面生命周期 ( 初始化期 | createState | initState | 更新期 | build | 销毁期 | dispose)
  3. SQL进阶教程 | 史上最易懂SQL教程 5小时零基础成长SQL大师
  4. sqlserver表分区
  5. 计算机类警察限制身高吗,招警考试对身高有要求吗?男生170cm以下能否报考公安警察?...
  6. 2021年春季学期期末统一考试 高级财务会计 试题
  7. system.argumentnullexception值不能为null_MySQL NULL 值如何处理?
  8. 《DirectX 9.0 3D游戏开发编程基础》 第一章 初始化Direct3D 读书笔记
  9. windows安装各版本python解释器和anaconda
  10. Entity Framework 延伸系列目录
  11. 2022·09·漏洞众测平台·企业应急响应中心SRC·大集合·不定时更新
  12. 计算机硬件故障视频,电脑提示“没有视频硬件”怎么办
  13. 俄勒冈之旅_我在俄勒冈州SAO软件协会上通过A hrefhttpdbsaoorgcalendarofeventseventdescription进行介绍...
  14. Windows 11 已修复 AMD CPU 性能问题
  15. scanner——04scaner进阶
  16. 高效清除电脑中的灰尘。。。。社会工程学真的很管用
  17. 高通QSPR读写NV
  18. 2020央视元宵晚会 | 《你的样子》朗诵词
  19. 微信小程序wx.downloadFile()使用体验
  20. jCore中文本地化工作札记 - 2

热门文章

  1. 十二种卫星地图的快速比较和选择方法
  2. Redis 连接命令介绍
  3. 图片分类网络ViT、MobileViT、Swin-Transformer、MobileNetV3、ConvNeXt、EfficientNetV2
  4. N点标定-坐标系变换
  5. 计算机病毒手动查杀,电脑中毒了怎么办 如何手动彻底查杀病毒【解决方法】...
  6. java实现立方和等式
  7. 给视频加字幕HTML代码,给Html5视频播放器添加字幕
  8. Adobe国际认证的脱颖而出,让摸鱼、秃头小宝贝不再是宿命?
  9. Rdata数据导成txt,csv,spss,stata等格式
  10. 手机端也能免费转换CAD图纸啦!