游标(cursor)是可以从数据库检索结果集中每次提取一行记录的机制,游标的作用就是对结果集进行遍历,方便对记录进行操作。
特性
三种特性:
- 只读
不能更新它
- 非滚动
根据SQL语句确定顺序,不能向后获取记录和跳过记录
- 敏感/不敏感
敏感游标指向的是数据表,不敏感游标指向的则是临时数据表。(Mysql使用的是敏感游标)
声明游标
游标使用的变量必须在声明游标之前声明
1 | // Mysql |
原理
游标有着类似指针的作用,它是遍历容器的一套接口(迭代器),简单实现(golang):
1 | package main |
简单的说:游标返回一个数据集合迭代器,当你取一行记录同时游标指向下一个元素。
举例使用游标的DB库,以下:
https://github.com/PyMySQL/PyMySQL/blob/46d17402af/pymysql/cursors.py#L278
https://github.com/golang/go/blob/master/src/database/sql/sql.go#L2983