游标

一、MySQL游标概念
1、游标介绍
MySQL的游标(cursor)是一个重要的概念,个人的理解如下:
有数据缓冲的思想:游标的设计是一种数据缓冲的思想,用来存放SQL语句执行的结果。
先有数据基础:游标是先从数据表中检索出数据后才能继续灵活操作的技术。
类似于指针:游标类似于指向数据结构堆栈中的指针,用来pop出所指向的数据,并只能每次取一个。
2、游标的特点
(1) 游标的优点:
因为游标是针对操作的,所以对从数据库中检索得到的每一行可以进行独立的操作,是一种分离的思想。可以满足对某个结果进行特殊的操作。游标是面向集合和面向行的设计思想之间的一种桥梁
(2) 游标的缺点
游标的缺点是针对优点而言的,也就是只能一行一行的操作,在数据量大的情况下,是不适用的,速度慢。数据库大部分是面对集合的,业务复杂时,用游标会有死锁,不可取。数据量大时,用游标会造成内存不足现象。

3、游标的使用场景
用于循环处理、存储过程、函数中使用。用来查询结果集,例如:我们需要从表中循环判断并得到想要的结果集,这时候使用游标操作速度比较快。

二、游标的使用
1、游标的使用步骤
定义游标——>打开游标——>使用游标——>关闭游标——>释放游标
(1)、定义游标
语法:
DECLARE <游标名> CURSOR FOR SELECT语句;
例子:
– 这样游标就对select语句声明了一个游标
DECLARE mycursor CURSOR FOR select * from shops_info;
(2)、打开游标
语法:
open <游标名>
例子:
open mycursor
(3)、使用游标
使用游标需要用关键字fetch取出数据,然后取出的数据需要有存放的地方,我们需要用declare声明变量存放列的数据,其语法格式为:
declare 变量1 数据类型(与列值的数据类型相同)
declare 变量2 数据类型(与列值的数据类型相同)
FETCH [NEXT | PRIOR | FIRST | LAST ] FROM <游标名> [ INFO 变量名1,变量名2,[,…]]

NEXT:取下一行的数据,游标一开始默认指向第一行之前,故让游标指向第一行,就必须第一次执行FETCH NEXT操作
INFO:将一行中每个对应的列下的数据放到与列的数据类型相同的变量中。

例子:
– 声明四个变量
declare id varchar2(20);
declare pname varchar2(20);
declare pprice varchar2(20);
declare pdescription varchar2(20);
– 定义一个游标mycursor
declare mycursor cursor for select * from shops_info;
– 打开游标
open mycursor;
– 使用游标获取列 数据放入变量中
fetch next from mycursor into id,pname,pprice,pdescription;

(4)、关闭游标
语法:
close <游标名>
例子:
close mycursor

(5)、释放游标
deallocate mycursor;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值