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 ...
随机推荐
- NSInternalInconsistencyException attempt to delete row 2 from section 4 which only contains 0 rows before the update 问题原因
insertRowsAtIndexPaths 和 deleteRowsAtIndexPaths 同 numberOfRowsInSection 的关系 如果不处理好这个关系,大概所有的问题都是这样的: ...
- HAProxy实战
实验目的 测试基于haproxy的反代和负载均衡配置 测试keepalived高可用haproxy的效果 实验要点 (1) 动静分离discuzx,动静都要基于负载均衡实现: (2) 进一步测试在ha ...
- 开启AngularJS 1.X的学习之路(1)
概念(1) AngularJS 应用 AngularJS 模块(Module) 定义了 AngularJS 应用. AngularJS 控制器(Controller) 用于控制 AngularJS 应 ...
- 服务器 'XXXXXX' 上的 MSDTC 不可用。解决方法
今天在C#中操作数据库的时候突然发现这个问题:服务器 'USER-XXX' 上的 MSDTC 不可用. 解决方法: 在windows控制面板 --> 管理工具 --> 服务 --> ...
- Host文件修改后无效的解决办法
什么是hosts文件? 简单的说,hosts文件是用于本地dns服务(相关主题:什么是DNS缓存,如何清除DNS缓存?)的,采用ip 域名的格式写在一个文本文件当中,Hosts是一个没有扩展名的系统文 ...
- Android中使用findViewByMe提升组件查找效率
1.引出 安卓初学者一般在写android Activity的时候总是会在onCreate方法中加上setContentView方法来加载layout,通过findViewById来实现控件的绑定,刚 ...
- Flume-ng源码解析之Sink组件
作为启动流程中第二个启动的组件,我们今天来看看Sink的细节 1 Sink Sink在agent中扮演的角色是消费者,将event输送到特定的位置 首先依然是看代码,由代码我们可以看出Sink是一个接 ...
- WeMall的Android app商城中的wemall doraemon代码
WeMall-Android 包含SMSSDK/WeMall-Client/social_sdk_library_project三个项目以及Api目录下的client.php/update.xml接口 ...
- WeMall微信商城签到插件Sign的主要源码
WeMall微信商城源码签到插件Sign,用于商城的签到系统,分享了部分比较重要的代码,供技术员学习参考 AdminController.class.php <?php namespace Ad ...
- log4go 的 Bug Fix 及 增强
log4go 一直存在关闭时丢失记录的问题.网络上很多人怀疑是Flush.经过跟踪发现只要在 Close() 函数中增加以下语句: for i := 10; i > 0 && l ...