目录
例子1:声明打开并关闭一个游标,对检索出的数据不做 任何处理
例子2:从游标中检索出单个行(第一行),对检索出的数据不做 任何处理
例子3:从游标中循环检索数据,从第一行到最后一行,对检索出的数据不做 任何处理
例子4:从游标中循环检索数据,从第一行到最后一行,然后把检索出的数据写到表里
一、什么是游标
虽然我们也可以通过筛选条件 WHERE 和 HAVING,或者是限定返回记录的关键字 LIMIT 返回一条记录,但是,却无法在结果集中像指针一样,向前定位一条记录、向后定位一条记录,或者是 随意定位到某一 条记录 ,并对记录的数据进行处理。 这个时候,就可以用到游标。
游标其实就像是指针的东西 在你查询结果集的时候 游标是在第一条结果的前面 这样当你拨动游标的时候 他会向下移动一个位置 指向第二条记录 这样就会 读取出结果集中说有数据 比如 在C#中的read()方法 和java中的 next() 都是拨动游标的方法。游标,提供了一种灵活的操作方式,让我们能够对结果集中的每一条记录进行定位,并对指向的记录中的数据进行操作的数据结构。游标让 SQL 这种面向集合的语言有了面向过程开发的能力。
在 SQL 中,游标是一种临时的数据库对象,可以指向存储在数据库表中的数据行指针。这里游标充当了指针的作用 ,我们可以通过操作游标来对数据行进行操作。
MySQL中游标可以在存储过程和函数中使用。
二、游标用在哪里
游标可以在存储过程和自定义函数中使用。
放在在存储过程的过程体中(即begin和end之间)、自定义函数的begin和end之间
三、游标的特点
(1)游标是只读的,应避免在已经打开游标的表上更新数据
(2)游标是不能滚动的,也就是只能在一个方向上进行遍历,不能在记录之间随意进退,不能跳过某些记录
(3)缺点:使用游标的过程中,会对数据行进行 加锁 ,这样在业务并发量大的时候,不仅会影响业务之间的效率,还会 消耗系统资源 ,造成内存不足
四、游标的分类
静态游标(分为:显式游标、隐式游标)、动态游标(分为:强类型、弱类型)
注意:没有特别指明的情况,我们通常所说的游标是指显式游标