MySQL学习笔记(四)—存储过程
一、概述
存储过程是数据库定义的一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句。存储过程可以避免开发人员重复的编写相同的SQL语句,而且存储过程是在MySql服务器中存储和执行的,可以减少客户端与服务器端的数据传输。
1.优点
(1)提供执行性能
通常在客户端执行SQL命令时,在数据库有解析到编译这个前期准备过程。但是,存储过程是先完成了解析、编译的处理后保存在数据库中的,执行时能减轻数据库负担,提高执行性能。
(2)可减轻网络负担
使用存储过程后,复杂的数据库操作也可以在数据库服务器中完成,只要从应用程序传递给数据库必要的参数就行,比起多次传递SQL命令,这大大减轻了网路负担。
二、基本操作
1.定义存储过程
#创建存储过程
create procedure p1()
begin
select * from t_user;
end
2.调用存储过程
#调用存储过程
call p1();
3.查看存储过程
#查看存储过程
show procedure status;
4.删除存储过程
#删除存储过程
drop procedure p1;
5.创建带参数的存储过程
#1.创建带参数的存储过程
create procedure p2(i int)
begin
select * from t_user where id > i;
end #2.调用带参数的存储过程
call p2(3);
结果:
6.创建带判断语句的存储过程
#1.创建带判断语句的存储过程
create procedure p3(i int,j char(10))
begin
if j = 'high' then
select * from t_user where id > i;
elseif j = 'low' then
select * from t_user where id < i;
end if; end #2.调用带选择结构的存储过程
call p3(3,'low');
结果:
7.使用case命令使用多重条件语句
#1.使用case命令多重条件分支
create procedure p4(i int)
begin
case i
when 1 then
select * from t_user where address='北京';
when 2 then
select * from t_user where address='上海';
else
select * from t_user where address='吉林';
end case;
end
#2.查看结果
call p4(2);
结果:
8.创建局部变量
#1.创建局部变量
create procedure p5(i int)
begin
declare temp varchar(10);
case i
when 1 then
set temp = '北京';
when 2 then
set temp = '上海';
when 3 then
set temp = '吉林';
end case;
select * from t_user where address= temp;
end #2.查看结果
call p5(3);
结果:
MySQL学习笔记(四)—存储过程的更多相关文章
- MySql学习笔记四
MySql学习笔记四 5.3.数据类型 数值型 整型 小数 定点数 浮点数 字符型 较短的文本:char, varchar 较长的文本:text, blob(较长的二进制数据) 日期型 原则:所选择类 ...
- MySql学习笔记(五) —— 存储过程
存储过程是MySql 5支持的特性,它是一组为了完成特定功能的SQL语句集,经过编译之后存储在数据库中,当需要使用该组SQL语句时用户只需要通过指定储存过程的名字并给定参数就可以调用执行它了,简而言之 ...
- mysql学习笔记:存储过程
use test; drop table if exists t8; CREATE TABLE t8(s1 INT,PRIMARY KEY(s1)); drop procedure if exists ...
- MySQL学习笔记四:字符集
1.字符集就是字符和其编码的集合,查看数据库支持的字符集 show character set 2.查看服务端启动时默认的字符集 mysql> show variables like 'char ...
- MySQL学习笔记(四):存储引擎的选择
一:几种常用存储引擎汇总表 二:如何选择 一句话:除非需要InnoDB 不具备的特性,并且没有其他办法替代,否则都应该优先考虑InnoDB:或者,不需要InnoDB的特性,并且其他的引擎更加合适当前情 ...
- mysql学习笔记四 —— AB复制
要点:ab复制 mysql集群架构流程: ABB(主从复制)-->MHA(实现mysql高可用.读写分离.脚本控制vip飘逸)-->haproxy(对slave集群实现分发,负载均衡)-- ...
- MySql学习笔记(四) —— 数据的分组
前面介绍的聚集函数只是用来计算行数,平均数,最大值,最小值而不用检索所有数据.通过count()函数,我们可以计算生产商1003提供的产品数目,但如果我要查询所有生产商提供的商品数,这就需要进行分组查 ...
- openresty 学习笔记四:连接mysql和进行相关操作
openresty 学习笔记四:连接mysql和进行相关操作 毕竟redis是作为缓存,供程序的快速读写,虽然reidis也可以做持久化保存,但还是需要一个做数据存储的数据库.比如首次查询数据在red ...
- mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记
mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...
随机推荐
- 关于NoClassDefFoundError和ClassNotFoundException异常
java.lang.NoClassDefFoundError 和 java.lang.ClassNotFoundException 都是 Java 语言定义的标准异常.从异常类的名称看似乎都跟类的定义 ...
- 利用jink的驱动软件j-flash 合并两个hex的方法,bootloader+app
由于前几天要给工厂app和bootloader的hex的文件,网上很多都是bin的合并方法,bin的方法不再赘述,相信大家都能找到,现在将hex合并的方法写下来: 第一步:先打开第一个hex文件, 第 ...
- Javascript学习十
认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 先来看看下面代码 ...
- C#基础——数组(冒泡排序)
数组 所谓数组,就是相同数据类型的元素按一定的顺序的集合,就是把有限个类型相同的变量用一个名字来命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组的各个变量称为数组的分量 ...
- MellPlayer, 基于网易云歌单的命令行播放器
MellPlayer 前言 我写代码时非常喜欢听音乐,最近在网易云歌单中听到了许多入耳惊艳的歌,觉得非常不错.但是歌单的随机播放以及快速切换是个软肋,于是开发了MellPlayer,可以按照分类随机听 ...
- redux-form的学习笔记
redux是一种常用的与react框架搭配的一种数据流架构,而伴随着redux的出现,也出现了许多基于redux开源的第三方库,而redux-form就是其中之一的开源组件库,到今天我写下这篇笔记为止 ...
- 提高C++编译速度-------pimpl 模式& 桥接模式(转)
pimpl 模式(Private Implementation),我们常常听到诸如“不要改动你的公有接口”这样的建议,所以我们一般都会修改私有接口,但是这会导致包含该头文件的所有源文件都要重新编译,这 ...
- ajax三级联动下拉菜单
ajax写三级联动,先写一个文件类吧,以后用的时候直接调用即可: 来找一张表: 实现: 中国地域的三级联动:省.市.区: 图: 说一下思路: (1)当用户选择省份的时候触发事件,把当前的省份的id通过 ...
- 1755: [Usaco2005 qua]Bank Interest
1755: [Usaco2005 qua]Bank Interest Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 187 Solved: 162[Su ...
- Codevs2018 反病毒软件
2018 反病毒软件 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 查看运行结果 题目描述 Description 其实这个“反病毒软件”(Anti ...