MYSQL进阶学习知识拓展一:MySQL 存储过程之游标!

一、MySQL游标的概念

  游标介绍:

      MySQL的游标(cursor)是一个重要的概念,通过查找资料与自己的理解,主要得出以下几点关于自己的理解。

        有数据缓冲的思想:游标的设计是一种数据缓冲区的思想,用来存放SQL语句执行的结果。

        先有数据基础:游标是在先从数据表中检索出数据之后才能继续灵活操作的技术。

         类似于指针:游标类似于指向数据结构堆栈中的指针,用来pop出所指向的数据,并且只能每次取一个。

  游标优缺点:

    游标的优点:

      因为游标是针对行操作的,所以对从数据库中select查询得到的每一行可以进行分开的独立的相同或不同的操作,是一种分离的思想。可以满足对某个结果行进行特殊的操作。

     游标与基于游标位置的增删改查能力。 MySQL数据库中没有专门描述一行的表达形式,但这是需要的,所以,个人理解的话,我觉得游标是在关系数据库这种面向集合的系统中抽离出来,

    单独针对行进行表达(也可以理解成网上资料说的:游标是面向集合与面向行的设计思想之间的一种桥梁)

    游标缺点:

      游标的缺点是针对有点而言的,也就是只能一行一行操作,在数据量大的情况下,是不适用的,速度过慢。这里有个比喻就是:当你去ATM存钱是希望一次性存完呢,

    还是100一张一张的存,这里的100一张一张存就是游标针对行的操作。 数据库大部分是面对集合的,业务会比较复杂,而游标使用会有死锁,影响其他的业务操作,不可取。 当数据量大时,使用游标会造成内存不足现象。

  游标的使用场景

      针对游标的优缺点,我总结游标的使用场景,主要用在循环处理、存储过程、函数中使用,用来查询结果集,就比如:我们需要从表中循环判断并得到想要的结果集,这时候使用游标操作很方便速度也很快。

二、游标的使用

  游标的使用步骤

      游标的使用一般分为5个步骤,主要是:定义游标->打开游标->使用游标->关闭游标->释放游标。

(1).定义游标

语法为:

原文地址:https://www.cnblogs.com/darwinli/p/9052796.html

时间: 2024-10-06 22:28:37

MYSQL进阶学习知识拓展一:MySQL 存储过程之游标!的相关文章

MYSQL进阶学习笔记九:MySQL事务的应用!(视频序号:进阶_21-22)

知识点十:MySQL 事务的应用 (21-22) 为什么要引入事务: 为什么要引入事务这个技术呢?现在的很多软件都是多用户,多程序,多线程的.对同一表可能同时有很多人在用,为保持数据的一致性,所以提出了事务的概念.这样很抽象,举个例子: A给B要划钱,A的账户是-1000元,B的账户是+1000元,这两个UPDATE语句必须作为一个整体来执行,不然A扣钱了,B没有加钱这种情况很难处理. 什么存储过程类型支持事务: 1.查看数据库下面支持的事务(InnoDB支持): SHOW ENGINES; 2

MYSQL进阶学习笔记三:MySQL流程控制语句!(视频序号:进阶_7-10)

知识点四:MySQL流程控制语句(7-10) 选择语句: (IF ELSE ELSE IF CASE 分支)IFNULL函数 IF语法: 语法规则: IF search_condition THEN statmen_list ; [SLSEIF search_condition THEN statmen_list]; ELSE statmen_list; END IF; 1 --7 流程控制语句之选择语句 2 DELIMITER // 3 CREATE PROCEDURE p_test7(IN

MYSQL进阶学习笔记五:MySQL函数的创建!(视频序号:进阶_13)

知识点六:MySQL函数的创建(13) 内置函数: 自定义函数: 首先查看是否已经开启了创建函数的功能: SHOW VARIABLES LIKE '%fun%'; 如果变量的值是OFF,那么需要开启 set global log_bin_trust_function_creators=1; 创建函数的语法: CREATE FUNCTION 函数名(变量1,变量2--) RETURNS 数据类型 BEGIN --执行的程序代码 RETURN 数据; END; 1 --默认数据 2 CREATE T

【转】MYSQL入门学习之十二:存储过程的基本操作

转载地址:http://www.2cto.com/database/201212/177380.html 存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合.可将其视为批文件,虽然它们的作用不仅限于批处理.  www.2cto.com 使用存储过程需要MySQL5及以后的版本支持. 一.为什么要使用存储过程 通过把处理封闭在容易使用的单元中,简化复杂的操作: 将一系列处理步骤放到同一存储过程中,保证了数据的完整性和操作的安全性: 简化对变更的管理: 提高性能.使用存储过程比

MYSQL进阶学习笔记十六:MySQL 监控!(视频序号:进阶_35)

知识点十六:MySQL监控(35) 一.为什么使用MySQL监控 随着软件后期的不断升级,myssql的服务器数量越来越多,软硬件故障的发生概率也越来越高.这个时候就需要一套监控系统,当主机发生异常时,此时通过监控系统发现和处理. 这个监控实际上是在我们的开发完成之后,这个时候软件就开始在运行,这个运行我们就需要去关注到mysql服务器是否正常,那么我们要观察它就需要给它提供一些监控,这监控就是当它发生故障之后, 那么我们这个监控就会告诉我们到底什么地方发生了一些异常或者一些错误,这个时候我们就

MYSQL数据库学习十二 使用MySQL运算符

12.1 算术运算符 + - * /(DIV) %(MOD) 12.2 比较运算符 > < = <=> != <> >= <= BETWEEN AND 存在于指定范围 IS NULL 为空 IN 存在于指定集合 LIKE 通配符匹配 REGEXP 正则表达式匹配 所谓正则表达式,就是通过模式去匹配一类字符串. 模式字符 含义 ^ 匹配字符串的开始部分 $ 匹配字符串的结束部分 . 匹配字符串中的任意一个字符 [字符集合] 匹配字符集合中的任意一个字符 [^字

MySQL数据库学习【补充】MySQL 5.7.9版本sql_mode=only_full_group_by问题

用到GROUP BY 语句查询时com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'col_user_6.a.START_TIME' which is not functionally dependent on columns in GROUP BY c

mysql 触发器学习(可以将mysql数据同步到redis)

1. 一个简单的例子 1.1. 创建表: create table t(s1 integer); 1.2. 触发器: delimiter | create trigger t_trigger before insert on t  for each row begin set @x = "hello trigger";        set NEW.s1 = 55; end; | 1.3. 如果触发器创建错误,可能只能删除了,至少我试过不能replace drop trigger t_

MySQL数据库学习【补充】mysql老是停止运行该怎么解决

解决方法如下: 原文地址:https://www.cnblogs.com/xiaohema/p/8454940.html