MySQL概述
基础篇
通用语法及分类
DCL
DQL
DML
DDL
函数
字符串函数
数值函数
日期函数
流程函数
约束
常用约束
外键约束
多表查询
多表关系
查询
内连接查询
外连接查询
自连接查询
联合查询
子查询
事务
进阶篇
存储引擎
性能分析
查看执行频次
慢查询日志
profile
explain
索引
索引结构
索引分类
语法
使用规则
设计原则
SQL 优化
插入数据
主键优化
order by优化
group by优化
limit优化
count优化
update优化(避免行锁升级为表锁)
视图
存储过程
触发器
锁
InnoDB 引擎
事务原理
MVCC
数据类型
权限一览表
图形化界面工具
存储过程 - MySql学习文档 - 笔下光年
网站首页
存储过程
存储过程是事先经过编译并存储在数据库中的一段SQL 语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想上很简单,就是数据库SQL 语言层面的代码封装与重用。 特点 1. 封装 2. 复用 3. 可以接收参数,也可以返回数据减少网络交互,效率提升 ### 创建 ```mysql CREATE PROCEDURE 存储过程名称( [参数列表] ) BEGIN SQL 语句 END; ``` > NOTE: 在命令行中,执行创建存储过程的SQL时,需要通过关键字delimiter 指定SQL语句的结束符。默认是 分号作为结束符。 delimiter $ ,则 $ 符作为结束符。 ### 调用 ```mysql CALL 名称 ( [参数]) ``` ### 查看 查询指定数据库的存储过程及状态信息 `SELECT* FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = 'xxx' ` 存储过程名称;--查询某个存储过程的定义 `SHOW CREATE PROCEDURE` ### 删除 `DROP PROCEDURE [ IFEXISTS ] 存储过程名称` ### 游标 游标(CURSOR)是用来存储查询结果集的数据类型,在存储过程和函数中可以使用游标对结果集进行循环的处理。游标的使用包括游标的声明、OPEN、FETCH和CLOSE,其语法分别如下。 >声明游标: `DECLARE 游标名称 CURSOR FOR 查询语句` >打开游标: `OPEN 游标名称` >获取游标记录: `FETCH 游标名称INTO变量[变量]` 条件处理程序: 条件处理程序(Handler)可以用来定义在流程控制结构执行过程中遇到问题时相应的处理步骤。具体语法为: ```mysql DECLARE handler action HANDLER FOR condition value L condition value]..statement ``` `handler_action CONTINUE`:继续执行当前程序 `EXIT`:终止执行当前程序 condition_value : `SQLSTATE sqlstate_value:状态码,如02000` `SQLWARNING:所有以01开头的SQLSTATE代码的简写` `NOT FOUND:所有以02开头的SQLSTATE代码的简写` `SQLEXCEPTION:所有没有被SQLWARNING或NOT FOUND捕获的SQLSTATE代码的简写` 例子: NOTE:要先声明普通变量,再申请游标。 要求: `根据传入的参数uage,来查询用户表tb_user中,所有的用户年龄小于等于uage的用户姓名(name)和专业(profession),并将用户的姓名和专业插入到所创建的一张新表(id,name,profession)中。` ```mysql create procedure p1l(in uage int) begin declare uname varchar(100); decLare upro varchar(100); declare u_cursor cursor for select name,profession from tb_user where age <= uage; ``` 当 条件处理程序的处理的状态码为02000的时候,就会退出。 ```mysql declare exit handler for SQLSTATE '02000'close u_cursor; drop table if exists tb_user_pro; create table if not exists tb_user_pro( id int primary key auto_increment, name varchar(100), profession varchar(100) ); open u_cursor; while true do fetch u_cursor into uname,Upro; insert into tb_user_pro values(null,uname,Upro); end while; close u_cursor; end; ```
上一篇:
视图
下一篇:
触发器