博客
关于我
Mysql_存储过程
阅读量:110 次
发布时间:2019-02-26

本文共 1679 字,大约阅读时间需要 5 分钟。

存储过程

一.概述

有些数据库操作可能会非常复杂, 可能会需要多条sql语句一起去处理完成, 可以使用存储过程

二.简介

是一组为了完成特定功能的sql语句的集合 从5.0版本才开始支持它可以加快数据库的处理速度,增强数据库在应用 中的灵活性
  • 存储过程是为了完成特定功能的sql集合

  • 在使用过程中,是将常用或者复杂的工作预先使用sql语句写好,并用一个指定的名称存储起来。

  • 这个过程经编译和优化后存储在数据库服务器中,当需要使用该存储过程时,调用即可

  • 在执行时,需要先编译再执行

三.优点

1.存储过程优点:

  • 1):提高执行效率,执行一次后,会将生成的二进制码驻留缓冲区
  • 2):灵活性高,sql语句加上控制语句的集合
  • 3):在服务器段存储,客户端调用时,降低网络负载
  • 4):可多次重复被调用,可随时更改,不影响客户端调用
  • 5):完成所有库操作,可控制数据库的信息访问权限

四.示例

1)创建存储过程(不带参数)

格式:DELIMITER $$							#将语句的结束符号从分号;临时改为两个$$(可以是自定义)CREATE PROCEDURE xxx()					#创建存储过程,过程名为xxx,不带参数 BEGIN                                  #过程体以关键字 BEGIN 开始   sql语句;                             #过程体语句 END $$								    #过程体以关键字 END 结束DELIMITER ;                             #将语句的结束符号恢复为分号例: delimiter $$create procedure cc() begincreate table mk (id int(10),name char(10),score int(10));insert into mk values(1,'wang',13);select * from mk;end $$delimiter ;call cc();

在这里插入图片描述

2)带参数存储过程

参数分为:  1.存储过程的主体部分,称为过程体  2.以begin开始,end结束,若只有一条sql语句,可以省略begin-end  3.以delimiter开始和结束

带参数存储过程:

  • 输入参数:IN表示调用者向过程传入值
  • 输出参数:out表示过程向调用者传出值
  • 输入/输出参数:inout
  • 表示调用者向过程传入值,又表示过程向调用者传出值
delimiter $$create procedure getrole(in inname varchar(16)) begin select a_id,a_name,a_level from test1 where a_name=inname;end $$delimiter ;call getrole('aaaa');

在这里插入图片描述

3)查看存储过程

SHOW CREATE PROCEDURE [数据库.]存储过程名;		#查看某个存储过程的具体信息例:show create procedure cc\G;

在这里插入图片描述

4)修改存储过程

alter procedure 
<过程名>
<特征>
show create procedure getrole\G;alter procedure getrole modifies sql data sql security invoker;show create procedure getrole\G;

在这里插入图片描述

5)删除存储过程

drop procedure if exists getrole;

在这里插入图片描述

总结:

存储过程:数据库操作复杂,可使用多条sql语句一起完成为了完成特定功能的sql集合就是将复杂的工作预先写好,指定存储起来执行时进行调用
  • 优点:①执行效率高
  • ②:灵活
  • ③可重复调用
  • ④:完成所有库操作,可控制数据库信息访问

存储过程:

  • 带参数

    输入参数,IN:调用者向过程传入
    输出参数:OUT,过程向调用者传出值

  • 不带参数

转载地址:http://opeu.baihongyu.com/

你可能感兴趣的文章
mysql 中的all,5分钟了解MySQL5.7中union all用法的黑科技
查看>>
MySQL 中的外键检查设置:SET FOREIGN_KEY_CHECKS = 1
查看>>
Mysql 中的日期时间字符串查询
查看>>
mysql 中索引的问题
查看>>
MySQL 中锁的面试题总结
查看>>
MySQL 中随机抽样:order by rand limit 的替代方案
查看>>
MySQL 为什么需要两阶段提交?
查看>>
mysql 为某个字段的值加前缀、去掉前缀
查看>>
mysql 主从
查看>>
mysql 主从 lock_mysql 主从同步权限mysql 行锁的实现
查看>>
mysql 主从互备份_mysql互为主从实战设置详解及自动化备份(Centos7.2)
查看>>
mysql 主从关系切换
查看>>
MYSQL 主从同步文档的大坑
查看>>
mysql 主键重复则覆盖_数据库主键不能重复
查看>>
Mysql 事务知识点与优化建议
查看>>
Mysql 优化 or
查看>>
mysql 优化器 key_mysql – 选择*和查询优化器
查看>>
MySQL 优化:Explain 执行计划详解
查看>>
Mysql 会导致锁表的语法
查看>>
mysql 使用sql文件恢复数据库
查看>>