一、概述

游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。
游标充当指针的作用,能遍历结果中的所有行,但他一次只指向一行。类似迭代器
游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行相应的操作。
游标多是用在存储过程、触发器以及函数中来处理一些业务

二、优缺点

优点

游标对从数据库中 select 查询得到的结果集的每一行(不可以跳过任何一行数据)可以进行不同的操作,是一种分离的思想。

缺点

只能一行一行操作,性能不高
使用游标可能会产生死锁,造成内存开销大

三、基本语法

1、声明
DECLARE 游标名称 CURSOR FOR 查询语法
2、打开游标
OPEN 游标名称
3、取游标中的数据
FETCH 游标名称 INFO var_name [,var_name ].....  # 读取下一行(如果有下一行的话),并且前进游标指针。
4、关闭游标
CLOSE 游标名称;
5、删除游标
drop cursor 游标名称

四、应用示例

-- 使用游标创建一个存储过程,统计年龄大于19的记录的数量
delimiter //
create procedure p2()
begin-- 创建 用于接收游标值的变量declare id,age,total int;-- 注意 接收游标值为中文时 需要 给变量 指定 字符集为utf8declare name,sex varchar(20) character set utf8;-- 游标结束的标志declare done int default 0;-- 声明游标declare cur cursor for select stuId,stuName,stuSex,stuAge from student where stuAge > 19;-- 指定游标循环结束时的返回值 declare continue handler for not found set done =1;-- 打开游标open cur;-- 初始化 变量set total = 0;-- loop 循环xxx:loop-- 根据游标当前指向的一条数据  fetch cur into id,name,sex,age;-- 当 游标的返回值为 1 时 退出 loop循环 if done = 1 thenleave xxx;end if;set total = total + 1; -- 累计end loop;   close cur; -- 关闭游标select total; -- 输出 累计的结果
end //
delimiter ;

【详细】MySQL之游标相关推荐

  1. MySQL触发器+游标应用

    MySQL: 触发器+游标应用 1. 问题背景: 有一个订单表,一个订单详细表,一个商品表,设置一个触发器,实现当订单成功支付后,订单中的多个商品(一个订单下有一个或多个商品)在商品表中商品库存减少相 ...

  2. Mysql的游标究竟怎么用--映日荷花别样红

    Mysql的游标究竟怎么用--映日荷花别样红 Mysql从5.0开始支持存储过程和trigger,给我们喜欢用mysql的朋友们更喜欢mysql的理由了,语法 上和PL/SQL有差别,不过搞过编程的人 ...

  3. Mysql的游标究竟怎么用–映日荷花别样红

    Mysql的游标究竟怎么用–映日荷花别样红 Mysql从5.0开始支持存储过程和trigger,给我们喜欢用mysql的朋友们更喜欢mysql的理由了,语法 上和PL/SQL有差别,不过搞过编程的人都 ...

  4. (转)Mysql的游标究竟怎么用--映日荷花别样红

    Mysql的游标究竟怎么用--映日荷花别样红 Mysql从5.0开始支持存储过程和trigger,给我们喜欢用mysql的朋友们更喜欢mysql的理由了,语法 上和PL/SQL有差别,不过搞过编程的人 ...

  5. mysql数据库游标有什么特性_MySQL数据库游标的概念介绍和游标的使用讲解

    一.MySQL游标的概念 1.游标介绍 MySQL的游标(cursor)是一个重要的概念,通过查找资料与自己的理解,主要得出以下几点关于自己的理解. 有数据缓冲的思想:游标的设计是一种数据缓冲区的思想 ...

  6. MySQL存储过程 游标

    MySQL存储过程  游标 如何在存储过程中使用MySQL游标来遍历SELECT语句返回的结果集 MySQL游标简介 要处理存储过程中的结果集,请使用游标.游标允许您迭代查询返回的一组行,并相应地处理 ...

  7. mysql 联表比对,MySQL联表查询详解/超详细mysql left join,right join,inner join用法分析比较...

    超详细mysql left join,right join,inner join用法分析 下面是例子分析 表A记录如下: aID aNum 1 a20050111 2 a20050112 3 a200 ...

  8. mysql的游标处理_MySQL存储过程 游标 错误处理的示例代码

    MySQL存储过程 游标 错误处理的示例代码--set_account_data 重新生成用户编号 BEGIN DECLARE temp_id INT(8); /*用户id*/ DECLARE tem ...

  9. mysql 利用游标循环删除数据报错:No data - zero rows fetched, selected, or processed

    第一次用mysql的游标来循环处理数据,编写的存储过程如下: DROP PROCEDURE IF EXISTS delete_Menu; DELIMITER $$ CREATE PROCEDURE d ...

  10. mysql存储过程-游标

    -- 2022-05-03 星期二 1924 mysql存储过程-游标 -- 参考:https://wenku.baidu.com/view/4cc6c15b158884868762caaedd338 ...

最新文章

  1. linux基础命令练习,Linux常用命令练习
  2. C++中int id[sizeof(unsigned long)]的语句,正确吗?
  3. 深入理解JavaScript之Event Loop
  4. easyexcel将对象处理为多列,自增序列
  5. Replace Error Code with Exception(以异常取代错误码)
  6. mybatis中resultType取出数据顺序不一致解决方法
  7. 为什么Docker容器将占领世界
  8. 用Docker快速搭建一个博客网站,很简单的嘛~
  9. 你在用MapGuide/Map 3D做什么?
  10. C语言简易学生管理系统(含源码)
  11. QQ群群主及管理员管理流程图
  12. XJOI contest800
  13. 绘制奥林匹克标志——利用python turtle画奥运五环
  14. amd超频软件LINUX,cpu超频软件amd
  15. sd卡 格式化 命令 linux,在Linux命令行上格式化SD卡、USB驱动器、闪存驱动器的方法...
  16. xml和map相互转化
  17. Java容器List、Set、Map详解
  18. xxl-job(二)调度中心挂了怎么办
  19. 无线定位技术实验一 TDOA-FDOA联合定位
  20. 【从零开始玩量化14】如何获取申万行业数据

热门文章

  1. PHP数据表没有保存数据,PHP未将数据保存到数据库
  2. sublime3 ctrl+shift+p没用_电脑键盘上的Ctrl指的是啥英文?Alt,Tab又是什么?
  3. 浅谈Netty相关概念
  4. 自定义注解+AOP,优雅的打印方法接受和返回的参数内容
  5. mysql 快日志_Mysql慢查询日志记录更快的查询
  6. 考研数学 - 初数基础整理09
  7. vision安装过程中出错_我显卡驱动安装是提示3DVISION驱动安装失败是怎么回事?...
  8. Java| 编译和反编译
  9. 华为鲲鹏HCIA认证 常考题
  10. 深入理解Linux网络技术内幕学习笔记第二章:一些重要的数据结构