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 ...
随机推荐
- 新手学js的效果图1---( 淘宝等商城货物查看特效)
本人结合之前所学一起写了,多个特效,只是新手自己瞎鼓捣的,思路清晰,具体实现的货物放大镜等,替换当中的img地址就可以查看特效 <!DOCTYPE html> <html lang= ...
- 用react分页显示数据
去年年底,尝试着用react写个组件化的页面! demo地址 里面有一个list页面弄了一下数据的分页展示 展示一下主要三个组件:父组件listBox.列表组件List.按钮组件PageButton ...
- Java8中 Parallel Streams 的陷阱 [译]
译注:文本有所精简和意译 原文链接 : Java Parallel Streams Are Bad for Your Health!原作者:OLEG SHELAJEV 翻译:Hason 转载请保留相关 ...
- GridView应用随笔
1. 数据绑定 GridView可以使用数据源控件和设置控件的DataSource属性来绑定数据,这里主要讲设置DataSource属性来绑定. 1.写一个返回值为DataSet或者DataTable ...
- (@WhiteTaken)UGUI中遇到的一些细碎的知识点
最近接触Unity中UGUI的知识比较多,遇到的东西,就慢慢积累下来吧.用到就不用去网上找了. 1.Unity加载Sprite图片资源.在Unity中,我们可能会遇到,一张图片中,有多个UI,这时候导 ...
- 【2017-03-09】SQL Server 数据库基础、四种约束
一.数据库和内存的区别 数据库:一些存储在硬盘上的数据文件 内存:计算机临时存储的一些数据 二.常用数据库 .Net - SQL Server PHP - MySql Java - Oreacl 三. ...
- vue移动端框架到底哪家强
Weex 2016年4月21日,阿里巴巴在Qcon大会上宣布跨平台移动开发工具Weex开放内测邀请. Weex 是一套简单易用的跨平台开发方案,能以 web 的开发体验构建高性能.可扩展的 nativ ...
- loadrunner入门篇-Analysis 分析器
analysis简介 分析器就是对测试结果数据进行分析的组件,它是LR三大组件之一,保存着大量用来分析性能测试结果的数据图,但并不一定要对每个视图进行分析,可以根据实际情况选择相关的数据视图进行分析, ...
- Lowest Common Ancestor of a Binary Tree leetcode
Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. According ...
- 超出父视图无法点击问题hitTest
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c91b13 } p.p2 { margin: 0.0px 0. ...