【MySQL 第十一天 创建和存储|复合结构的存储|存储过程和函数的区别】

news2024/9/20 18:31:07

【MySQL 第十一天 创建和存储|复合结构的存储|存储过程和函数的区别】

  • 【1】mysql储存过程及语法结构
    • 【1.1】mysql过程体
  • 【2】mysql创建和使用存储过程
    • 【2.1】mysql创建无参的存储过程
    • 【2.2】mysql创建有参的输入输出存储过程
  • 【3】mysql删除存储过程
  • 【4】mysql创建复合结构的存储过程
    • 【4.1】mysql if语句 存储过程
    • 【4.2】mysql case语句 存储过程
    • 【4.3】mysql floor和rand函数
  • 【5】mysql 存储过程与函数的区别

在这里插入图片描述


开启前线学习模式,生命不止,学习不止


【1】mysql储存过程及语法结构

在这里插入图片描述

create procedure proc_name([proc_parameter])
[characteristics ...]routine_body

procedure :程序;步骤;
characteristics :特征;特性;特质;
routine_body:常规体

[IN]:输入参数
[OUT]:输出参数
[INOUT:输入输出参数]
type:数据类型
默认是IN输入参数类型

在这里插入图片描述


【1.1】mysql过程体

在这里插入图片描述
在这里插入图片描述

==调用存储过程使用 call ==

-- 创建存储过程
create procedure selectproc()
select book_id,book_name,price,store from bookinfo;

-- 调用存储过程
call selectproc();

在这里插入图片描述

参考表
在这里插入图片描述

存储过程的完整写法举例

-- 创建存储过程
delimiter //
create procedure selectproc()
begin
select book_id,book_name,price,store from bookinfo;
end//
delimiter ; -- 注意这里的分号前必须有空格

-- 调用存储过程
call selectproc();

在这里插入图片描述


【2】mysql创建和使用存储过程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


【2.1】mysql创建无参的存储过程

在这里插入图片描述

-- 创建存储过程举例 无参数  存储的数据来自两张表 使用内连接
delimiter //
create procedure pro1()
begin
select bookinfo.book_id,bookinfo.book_name,bookparent.book_id from bookinfo 
INNER join bookparent 
on bookinfo.book_copy_id = bookparent.book_id;
end//
delimiter ;

-- 调用查看存储过程
call pro1;

在这里插入图片描述


【2.2】mysql创建有参的输入输出存储过程

在这里插入图片描述
读者信息表为例
在这里插入图片描述

-- 设计一个存储过程,删除一个读者,并输出剩余读者的个数。
delimiter //
create procedure pro2(in cid char(18), out num int)
begin
delete from readerinfo WHERE card_id = cid;
select count(card_id) into num from readerinfo;-- 获取剩余的读者数
end//
delimiter ;

-- 查看读者信息表
select *from readerinfo;

-- 调用存储过程 这个用户52214685259788被删除
call pro2('52214685259788',@num); -- @num获取里面的num值

-- 查看剩余读者
select @num; -- 去@出这个值

在这里插入图片描述


在这里插入图片描述

-- 设计一个存储过程,实现交换两个数的处理。
delimiter //
create procedure pro3(inout a int ,inout b int)
begin 
declare t int default 0;
set t = a;
set a = b;
set b = t;
end//
delimiter ;

-- 设置变量值和传递参数
set @a = 100,@b = 200;
call pro3(@a,@b);

-- 查看
select @a,@b;

在这里插入图片描述


【3】mysql删除存储过程

在这里插入图片描述

-- 删除存储过程 完整写法
drop procedure if exists pro1;

-- 尝试同时删除多个
drop procedure  pro2,pro3; -- 删除失败 只能一一删除

在这里插入图片描述


【4】mysql创建复合结构的存储过程

在这里插入图片描述

【4.1】mysql if语句 存储过程

-- 使用if语句 比较两个数的大小的存储过程
drop PROCEDURE if exists pro4;

delimiter //
create PROCEDURE pro4(in num1 int ,in num2 int ,out result varchar(30))
begin
if num1 = num2 then 
	set result = 'num1等于num2';
elseif num1>num2 then 
	set result = 'num1大于num2';
else 
	set result = 'num1小于num2';
end if ;
end//
delimiter ;

-- 查看和调用
call pro4(5,5,@result);
select @result;

在这里插入图片描述

【4.2】mysql case语句 存储过程

-- 使用case语句 比较两个数的大小的存储过程
drop PROCEDURE if exists pro4;

delimiter //
create PROCEDURE pro4(in num1 int ,in num2 int ,out result varchar(30))
begin
case 
when num1 = num2 then set result = '等于';
when num1 > num2 then set result = '大于';
else set result = '小于';
end case;
end//
delimiter ;

-- 查看和调用
call pro4(5,5,@result);
select @result;

在这里插入图片描述


在这里插入图片描述

【4.3】mysql floor和rand函数

-- 获取随机数
select rand(); -- 十六位小数
select rand()*5; -- 0-5以内的十六位小数

-- floor获取指定数以内的整数 比如 5以内 0-4
select floor(rand()*5);

在这里插入图片描述

== 通过存储过程插入100条数据==

-- 通过存储过程向表中插入100条数据
delimiter //
create procedure pro12()
begin 
declare n int default 8;
while n<=107 do
	insert into book_bak values(n,concat('图书名称',n),floor(rand()*n));
	set n = n+1;
end while;
end//
delimiter ;

-- 调用
call pro12();

select *from book_bak;

在这里插入图片描述


【5】mysql 存储过程与函数的区别

在这里插入图片描述
在这里插入图片描述

存储过程与函数的区别
参数的不同:
·存储过程:存储过程的参数类型有三种,IN、OUT、INOUT。
存储函数:参数类型只有一种,类似于IN参数。调用函数时需要按照参数的类型指定值即可。

在这里插入图片描述

存储过程与函数的区别
语法结构上的不同:·
存储过程:存储过程声明时不需要指定返回类型。
·存储函数:函数声明时需要指定返回类型,且在函数体中必须包含一个有效的RETURN语句。

在这里插入图片描述
在这里插入图片描述

== 本节结束,还有三章订阅不迷路==
在这里插入图片描述

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

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

相关文章

专精特新小巨人的认定条件

奖励&#xff1a;对新认定的专精特新“小巨人”企业&#xff0c;聊城市财政最高一次性奖励50万元。其他地区各有不同。 认定条件 专精特新“小巨人”企业认定需同时满足专、精、特、新、链、品六个方面指标。 (一)专业化指标&#xff1a;坚持专业化发展道路&#xff0c;长期…

大学生体育运动网页设计模板代码 DIV布局校园运动网页作业成品 HTML学校网页制作模板 学生简单体育运动网站设计成品

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

C++知识精讲14 | 算法篇之二分查找算法

博主主页&#xff1a;Cool Kid~Yu仙笙_C领域博主&#x1f984; 目录 二分查找定义 二分查找效率 二分查找与遍历的对比 二分查找的限制性 二分查找的限制性&#xff08;总结&#xff09; 二分查找搭建 循环实现二分查找 循环二分查找基本框架&#xff1a; 循环二分查找源码&am…

【苹果家庭iMessage推送】Aupperpushslcertificate或ProductPushsCertificate证书不可以过期

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

前端实现给文字添加动态背景

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者。&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4d…

【JAVA开发】提高开发效率的工具分享

代码管理工具 仓库&#xff1a; GitHub or GitLab or 本地仓库 版本控制&#xff1a; git or svn 推荐gitLabgit 多分支敏捷开发 开发工具 IDEA 最方便开发工具了 当然如何你是全栈也可以考虑使用VS(visual studio)、HBuider、AS(android studio) 文本工具 Sublime text …

Redis数据结构之整数集合

目录 基本数据结构 例子 升级 升级之后新元素的摆放位置 好处 降级 整数集合可以理解为一个有序&#xff08;升序&#xff09;的不允许元素重复的数组。 基本数据结构 intset会根据 编码格式分配空间。 例子 升级 当新添加的元素超过了当前编码格式所能 表示的范围&…

Linux常用命令工具

1、查找特定文本中的特定字符 cat filename | grep myStr eg: cat .config | grep KCOV 2、查找特定文本中的特定字符并打印具体行数 cat filename | grep -n myStr eg:: cat .config | grep -n KCOV 3、查找一个文件夹中的特定字符 grep -r myStr filedir eg: grep -r __NR_…

Mysql注入

&#x1f4aa;&#x1f4aa;mysql注入前言1.mysql之union注入1.1.判断是否有注入&#xff1a;1.2.信息收集1.3.进行注入1.4.完整注入实列2. mysql 跨库注入&#xff1a;2.1第一步就是找到数据库2.2第二步就是注入3.自己写union注入4.其他注入操作前言 &#x1f48e;&#x1f48…

JVM笔记:垃圾回收及垃圾回收算法

垃圾是指在运行程序中没有任何指针指向的对象&#xff0c;这个对象就是需要被回收的垃圾。如果不及时对内存中的垃圾进行清理&#xff0c;那么&#xff0c;这些垃圾对象所占的内存空间会一直保留到应用程序结束&#xff0c;被保留的空间无法被其他对象使用。甚至可能导致内存溢…

【Vue项目回顾】网络模块的封装

选择什么网络模块 选择一: 传统的Ajax是基于XMLHttpRequest(XHR) 为什么不用它呢? 非常好解释, 配置和调用方式等非常混乱.编码起来看起来就非常蛋疼.所以真实开发中很少直接使用, 而是使用jQuery-Ajax 选择二: 在前面的学习中, 我们经常会使用jQuery-Ajax 相对于传统的A…

【PyTorch深度学习项目实战100例】—— 基于Pytorch的语音情感识别系统 | 第71例

前言 大家好,我是阿光。 本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmPy…

C#和Python使用C++编译的dll

C代码如下: extern "C" __declspec(dllexport) int __stdcall add(int a, int b) {return a b; } 因为是显示链接&#xff0c;所以只需要获得生成的dll即可 因为C#无法直接调用C的dll&#xff0c;所以我们使用了extern"C" 使用vs自带的工具x86_x64 Cross…

Vue中KeepAlive 原理与源码分析

概念 keep-alive是Vue的一个内置实例&#xff0c;用于缓存组件。当keep-alive包裹动态组件时&#xff0c;会缓存不活动的组件实例&#xff0c;而不是摧毁它们。keep-alive 是一个抽象组件&#xff1a;它自身不会渲染一个 DOM 元素&#xff0c;也不会出现在父组件链之中。如需要…

网课查题API接口-搜题api

网课查题API接口-搜题api 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 题库&#xff1a;题库后台&#xff08;点击跳转&#x…

小学生python游戏开发pygame--设置内容整理

游戏开发&#xff0c;相关设置内容单独放在一个文件中 如长宽&#xff0c;大小&#xff0c;颜色等起名shezhi.py&#xff0c;如下&#xff1a; # _*_ coding: UTF-8 _*_ # 开发团队&#xff1a; 信息化未来 # 开发人员&#xff1a; Administrator # 开发时间&#xff1a;2022…

微信小程序中如何实现省市区街道四级地址级联选择

大家好&#xff0c;我是雄雄。 前言 微信小程序中支持省市区地址级联吗&#xff1f;微信小程序中的地址级联最多支持到几级&#xff1f; 今天&#xff0c;我们就来看看&#xff0c;微信小程序中的地址级联的使用&#xff0c;以及一些坑…希望大家看完之后能避免踩坑啊。 省市…

JS(受人以鱼 不如受人以渔)第十七课

比你优秀的人都比你努力&#xff0c;你有什么理由不去努力。基础来自己的累秒累天累月的积累 没有一个人是从天而降的天才&#xff0c;也没有哪个人想做一个一生贫庸的人。今天我想说 受人以鱼 不如受人以渔 推荐几个官网可以自己主动去学习 JavaScript中文网-JavaScript教程…

虚拟物品(游戏)交易平台的设计与实现(Java+SSM+MySQL)

目 录 摘 要 I Abstract II 第1章 绪论 1 1.1选题背景及意义 1 1.2研究现状 1 1.3研究主要内容 2 第2章 相关技术介绍 4 1.1 SSM的技术原理 4 1.1.1 SSM语言及其特点 4 1.1.2 Java及Java Servlets概述 6 1.1.3 JavaBean简介 6 1.2 服务器配置 7 1.2.1 Tomcat安装及配置 7 1.2.2…

工业控制系统所面临的安全威胁

年新增漏洞严重程度分析 因本文收集处理的公开漏洞基本上都被 CVE 所收录&#xff0c; 所以本文在分析这些漏洞的严重 性时&#xff0c;将主要根据 CVE 的 CVSS 评估值①来判断&#xff0c;并划分为高、中、低三种情况。 根据图 2.9 的统计分析 &#xff0c;2013 年的新增漏洞…