mysql 存储过程求和_MySQL - 存储过程和函数

MySQL - 存储过程和函数

536eb74ef1117a04bb2a91ae7e25a758.png

创建和调用存储过程

-- 创建stu_group()存储过程,封装 分组查询总成绩,并按照总成绩升序排序的功能

-- 注意: DELIMITER 必须写在一行的最前面, 前面不能有空格####

DELIMITER $

CREATE PROCEDURE stu_group()

BEGIN

SELECT gender,SUM(score) getSum FROM student GROUP BY gender ORDER BY getSum ASC;

END$

DELIMITER ;

-- 调用stu_group()存储过程

CALL stu_group();

查看和删除存储过程

-- 查看db6数据库中所有的存储过程

SELECT * FROM mysql.proc WHERE db='db6';

-- 删除存储过程

DROP PROCEDURE IF EXISTS stu_group;

变量

-- 定义一个int类型变量,并赋默认值为10

DELIMITER $

CREATE PROCEDURE pro_test1()

BEGIN

-- 定义变量

DECLARE num INT DEFAULT 10;

-- 使用变量

SELECT num;

END$

DELIMITER ;

-- 调用pro_test1存储过程

CALL pro_test1();

-- 定义一个varchar类型变量并赋值

DELIMITER $

CREATE PROCEDURE pro_test2()

BEGIN

-- 定义变量

DECLARE NAME VARCHAR(10);

-- 为变量赋值

SET NAME = '存储过程';

-- 使用变量

SELECT NAME;

END$

DELIMITER ;

-- 调用pro_test2存储过程

CALL pro_test2();

-- 定义两个int变量,用于存储男女同学的总分数

DELIMITER $

CREATE PROCEDURE pro_test3()

BEGIN

-- 定义两个变量

DECLARE men,women INT;

-- 查询男同学的总分数,为men赋值

SELECT SUM(score) INTO men FROM student WHERE gender='男';

-- 查询女同学的总分数,为women赋值

SELECT SUM(score) INTO women FROM student WHERE gender='女';

-- 使用变量

SELECT men,women;

END$

DELIMITER ;

-- 调用pro_test3存储过程

CALL pro_test3();

-- SET方式实现

DELIMITER $

CREATE PROCEDURE pro_test3()

BEGIN

-- 定义两个变量

DECLARE men,women INT;

-- 查询男同学的总分数,为men赋值

SET men = (SELECT SUM(score) FROM student WHERE gender='男');

-- 查询女同学的总分数,为women赋值

SET women = (SELECT SUM(score) FROM student WHERE gender='女');

-- 使用变量

SELECT men,women;

END$

DELIMITER ;

-- 调用pro_test3存储过程

CALL pro_test3();

if语句

/*

if语句

IF 判断条件1 THEN 执行的sql语句1;

[ELSEIF 判断条件2 THEN 执行的sql语句2;]

...

[ELSE 执行的sql语句n;]

END IF;

*/

/*

定义一个int变量,用于存储班级总成绩

定义一个varchar变量,用于存储分数描述

根据总成绩判断:

380分及以上 学习优秀

320 ~ 380 学习不错

320以下 学习一般

*/

DELIMITER $

CREATE PROCEDURE pro_test4()

BEGIN

-- 定义变量

DECLARE total INT;

DECLARE info VARCHAR(10);

-- 查询总成绩,为total赋值

SELECT SUM(score) INTO total FROM student;

-- 对总成绩判断

IF total > 380 THEN

SET info = '学习优秀';

ELSEIF total >= 320 AND total <= 380 THEN

SET info = '学习不错';

ELSE

SET info = '学习一般';

END IF;

-- 查询总成绩和描述信息

SELECT total,info;

END$

DELIMITER ;

-- 调用pro_test4存储过程

CALL pro_test4();

参数传递

/*

参数传递

CREATE PROCEDURE 存储过程名称([IN|OUT|INOUT] 参数名 数据类型)

BEGIN

SQL 语句列表;

END$

IN:代表输入参数,需要由调用者传递实际数据(默认)

OUT:代表输出参数,该参数可以作为返回值

INOUT:代表既可以作为输入参数,也可以作为输出参数

也可以不指定输入输出类型.

*/

/*

输入总成绩变量,代表学生总成绩

输出分数描述变量,代表学生总成绩的描述信息

根据总成绩判断:

380分及以上 学习优秀

320 ~ 380 学习不错

320以下 学习一般

*/

DELIMITER $

CREATE PROCEDURE pro_test5(IN total INT,OUT info VARCHAR(10))

BEGIN

-- 对总成绩判断

IF total > 380 THEN

SET info = '学习优秀';

ELSEIF total >= 320 AND total <= 380 THEN

SET info = '学习不错';

ELSE

SET info = '学习一般';

END IF;

END$

DELIMITER ;

-- 调用pro_test5存储过程 , @将返回数据存储到会话的info变量中

CALL pro_test5(350,@info);

CALL pro_test5((SELECT SUM(score) FROM student),@info);

SELECT @info;

while循环

/*

while循环

初始化语句;

WHILE 条件判断语句 DO

循环体语句;

条件控制语句;

END WHILE;

*/

-- 计算1~100之间的偶数和

DELIMITER $

CREATE PROCEDURE pro_test6()

BEGIN

-- 定义求和变量

DECLARE result INT DEFAULT 0;

-- 定义初始化变量

DECLARE num INT DEFAULT 1;

-- while循环

WHILE num <= 100 DO

IF num % 2 = 0 THEN

SET result = result + num;

END IF;

SET num = num + 1;

END WHILE;

-- 查询求和结果

SELECT result;

END$

DELIMITER ;

-- 调用pro_test6存储过程

CALL pro_test6();

存储函数

/*

创建存储函数

CREATE FUNCTION 函数名称([参数 数据类型])

RETURNS 返回值类型

BEGIN

执行的sql语句;

RETURN 结果;

END$

*/

-- 定义存储函数,获取学生表中成绩大于95分的学生数量

DELIMITER $

CREATE FUNCTION fun_test1()

RETURNS INT

BEGIN

-- 定义变量

DECLARE s_count INT;

-- 查询成绩大于95分的数量,为s_count赋值

SELECT COUNT(*) INTO s_count FROM student WHERE score > 95;

-- 返回统计结果

RETURN s_count;

END$

DELIMITER ;

/*

调用函数

SELECT 函数名称(实际参数);

*/

-- 调用函数

SELECT fun_test1();

/*

删除函数

DROP FUNCTION 函数名称;

*/

-- 删除函数

DROP FUNCTION fun_test1;

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

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

相关文章

Shell脚本注释

文章目录单行注释多行注释/段注释一、空命令 : 和追加输入重定向 <<解决注释中有反引号的问题方法一方法二方法三方法四方法五二、空命令 : 和 if...then.. 语句三、空命令 : 和单引号 单行注释 直接在行最前端加上符号 # 即可。具体用法如下所示&#xff1a; # this i…

php云服务器买什么系统吗,php云服务器买什么系统

php云服务器买什么系统 内容精选换一换新购买的云硬盘怎么使用云硬盘是网盘吗云硬盘可以单独使用吗云硬盘购买后不使用会收费吗如何停止云硬盘收费如何查看云硬盘详细信息云硬盘的可用区可以变更吗云硬盘是否支持共享盘转非共享盘&#xff0c;普通IO转超高IO云硬盘已退订、误删…

FHS(Filesystem Hierarchy Standard 文件系统层次化标准)

文章目录一、根目录 (/) 的意义与内容二、/usr/ 的意义与内容三、/var/ 的意义与内容四、目录树(directory tree)五、绝对路径与相对路径FHS 是 File System Hierarchy Standard&#xff08;文件系统层次化标准&#xff09;的缩写&#xff0c;多数Linux 版本采用这种文件组织形…

apache.camel_在即将发布的Camel 2.21版本中改进了使用Apache Camel和ActiveMQ Artemis处理大型消息的功能...

apache.camel从历史上看&#xff0c; Apache ActiveMQ消息代理最初是在大型消息以MB为单位而不是GB的情况下创建的&#xff0c;就像您今天所做的那样。 下一代代理Apache ActiveMQ Artemis&#xff08;或仅是Artemis&#xff09;则不是这种情况&#xff0c;后者对大型消息的支…

double小数点后最多几位_用了这么多英语学习APP后,我还是最喜欢这4款

适合系统&#xff1a;安卓、iOS(后台回复「236」获取)学霸君曾经在知乎看到过一个问题&#xff1a;英语近几年会被淘汰吗&#xff1f;现在学英语还有什么用&#xff1f;底下点赞数最多的一个评论&#xff1a;不是英语即将淘汰&#xff0c;而是英语水平差到还需要艰难学英语的人…

mysql 如何凭借几个列_我如何总结MySQL中的几个列

在这种特殊情况下&#xff0c;使用WHERE会不会更容易&#xff1f;SELECT SUM(WTE) AS Band6_WTEFROM orthoptists AS oLEFT JOIN instances AS iON o.instance_FK i.idWHERE i.region 14AND band "E"对于一般情况&#xff0c;您可以使用GROUP BY&#xff0c;因为您…

log4j2自动删除_登录样式:log4j 2,上下文,自动清除…全部不附带任何字符串!...

log4j2自动删除日志记录-保持操作的时间跟踪-对于任何关键任务系统&#xff0c;无论大小&#xff0c;都至关重要。 我们的Project-X框架也是如此 &#xff0c;这就是为什么我们希望从一开始就正确地做到这一点。 基于我们在传奇的UltraESB上的登录经验&#xff0c; 上下文日志…

Shell(bash) 介绍

文章目录Shell 介绍Shell 种类命令行环境终端模拟器命令行提示符进入和退出方法Shell 脚本第一个shell脚本BashBash如何解析命令Shell 和 Bash 的历史Shell 介绍 简单点理解&#xff0c;就是系统跟计算机硬件交互时使用的中间介质&#xff0c;它只是系统的一个工具。实际上&am…

mysql 5.7数据库密码_mysql5.7数据库忘记密码的解决方法

mysql5.7数据库忘记密码的解决方法发布时间&#xff1a;2020-09-08 11:56:53来源&#xff1a;亿速云阅读&#xff1a;60作者&#xff1a;小新这篇文章主要介绍了mysql5.7数据库忘记密码的解决方法&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完…

软件项目报价明细表_BIM必学软件之REVIT

BIM与Revit是什么关系呢&#xff1f;Revit在众多BIM软件中扮演什么角色&#xff0c;有什么意义?今天我们就来说说REVIT。BIM是建筑从项目立项、规划、概算、设计、预算、建造、结算、审计、物业等全生命周期中的智能动态控制系统&#xff0c;俗称建筑智能机器人系统。 BIM的关…

tdd java_适用于Idea的面向现代TDD的Java 8 JUnit测试模板(带有Mockito和AssertJ)

tdd java使用类似于BDD的语法&#xff0c;Java 8和Mockito-AssertJ二重奏为Idea调整JUnit测试类模板。 本文涵盖的主题似乎很简单。 但是&#xff0c;根据我的培训师经验&#xff0c;我知道&#xff08;不幸的&#xff09;这不是常见的做法。 因此&#xff0c;我决定写这篇简短…

Linux 进程状态介绍

文章目录进程状态说明进程状态图进程状态说明 进程主状态&#xff1a;D&#xff1a;不可中断的睡眠状态 uninterruptible sleeping(usually IO)R&#xff1a;正在运行&#xff0c;或在队列中的 running or runnable (on run queue)S&#xff1a;处于休眠状态 interruptible sle…

petalinux 配置_澧县高压管道工厂化配置专业销售

澧县高压管道工厂化配置专业销售 公司生产设备齐全&#xff0c;热处理工艺精湛&#xff0c;检测设备&#xff0c;年生产能力上万吨&#xff0c;具备化学分析、全相检验、物理实验、无损探伤等检测能力。能生产各种标准的不锈钢、合金钢、碳钢弯头、无缝弯管、无缝三通、高压异径…

php mysql刷新表格_php读入mysql数据并以表格形式显示(表单实现无刷新提交)

在网上参考了些例子&#xff0c;于是我这个sample实现了如标题上的功能。话不多说&#xff0c;上代码&#xff1a;lishi.html搜索form#form1 {height: 93%;}p {width: 99%;height: 84%;}iframe#id_iframe {width: 99%;height: 100%;border: 0 red solid;}input{display:block;}…

flowable背压 取消_使用Flowable.generate()生成可感知背压的流– RxJava常见问题解答...

flowable背压 取消RxJava缺少创建无限自然数流的工厂。 这样的流很有用&#xff0c;例如&#xff0c;当您想通过压缩两个事件的顺序来为可能的无限事件流分配唯一的序列号时&#xff1a; Flowable<Long> naturalNumbers //???Flowable<Event> someInfiniteEve…

abstract类_【Java】类的结构 - Nemo

类与对象类中主要包括五种结构&#xff0c;下面进行对这五种结构进行详细的介绍。1. 面向对象与面向过程面向过程&#xff1a;强调的是功能行为&#xff0c;以函数为最小单位&#xff0c;考虑怎么做。面向对象&#xff1a;强调具备了功能的对象&#xff0c;以类/对象为最小单位…

二元函数可微与可导的关系_多元函数中可微与可导的直观区别是什么?

在多元的情况下&#xff0c;可微可导的关系要比在一元情况下复杂&#xff0c;但是只是要复杂一些&#xff0c;如果我们从一元开始去理解&#xff0c;你会发现并不困难。这篇文章主要阐述以下三个概念&#xff1a;偏微分偏导数全微分全导数这里暂时不讲&#xff0c;看名字好像和…

java 错误输入异常_在Java中进行输入验证期间用错误通知替换异常

java 错误输入异常在我以前的文章中&#xff0c;我写了一篇关于输入验证设计的文章 &#xff0c;该设计取代了难以维护和测试的 if-else块。 但是&#xff0c;正如某些读者指出的那样&#xff0c;它有一个缺点–如果输入数据有多个验证错误&#xff0c;则用户将不得不多次提交请…

Linux 命令之 mkdir 命令-创建目录

文章目录介绍语法格式常用选项参考示例介绍 mkdir 命令是“make directories”的缩写&#xff0c;用来创建目录。如果在目录名的前面没有加任何路径名&#xff0c;则在当前目录下创建目录&#xff1b;如果给出了一个已经存在的路径&#xff0c;将会在该目录下创建一个指定的目…

uniapp app蓝牙打印_给编程器加装蓝牙串口模块,用手机APP操作打印信息进控制台...

公众号回复【编程器】可下载蓝牙串口APP专用蓝牙串口模块购买&#xff1a;https://item.taobao.com/item.htm?id619731291566编程器加装蓝牙模块后&#xff0c;可以方便的使用手机查看打印信息&#xff0c;进入控制台执行各种串口命令。本款蓝牙串口APP具有保存打印信息、分享…