怎么修改mysql的游标 mysql中游标的作用

mysql怎么使用游标和数据表实现数组功能

有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。

成都创新互联公司从2013年创立,先为恭城等服务建站,恭城等地企业,进行企业商务咨询服务。为恭城企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

1. check table 和 repair table

登陆mysql 终端:

mysql -uxxxxx -p dbname

check table tabTest;

如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:

repair table tabTest;

进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。

2. myisamchk, isamchk

其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:

myisamchk tablename.MYI

进行检测,如果需要修复的话,可以使用:

myisamchk -of tablename.MYI

关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。

MySQL 游标的定义与使用

从字面可以这么理解什么是游标,游标就像是水面上漂浮的一个标记,这个标记可以来回游动,一会游到这里一会游到那里,这里的河水可以理解为是数据的集合,这个标记就是在这些数据间来回游动。

为什么 MySQL 会有游标这个概念,由于 SQL 语言是面向集合的语句,它每次查询出来都是一堆数据的集合,没有办法对其中一条记录进行单独的处理。如果要对每条记录进行单独处理就需要游标。

游标其实就像是编程语言中的 for/foreach 循环,把一个数组(数据的集合)中每条数据一条一条地循环出来,然后你在 for/foreach 循环中使用判断语句对你感兴趣的数据进行处理。

哪里可以使用游标呢,函数,存储过程,触发器中都可以使用。

说完概念,就来看下游标的固定写法。不管概念是否理解,记住下面的固定模式也可以完成搬砖任务。

1、声明游标

SELECT 语句就是正常的查询语句,例如:SELECT id,age FROM table;

2、打开游标

在打开游标之前,游标定义的 SQL 语句是不执行的。

3、取出记录

将当前的记录数据存入变量。

当 FETCH 没有找到记录时会抛出异常,异常的定义需要下面的 HANDLER FOR 语句。

声明游标语句中的 SELECT 如果有多个字段,INTO 后面需要多个变量进行接收。

4、设置结束条件

这个语句的作用是指定一个条件,告诉程序所有数据已经循环完毕,可以结束了。由于游标是使用 WHILE 循环进行每条数据的读取,就需要给 WHILE 一个结束条件。

处理种类:可以是, EXIT 立即结束。CONTINUE 继续下面的处理。

异常的类型:一般指定为 NOT FOUND ,意思是没有找到任何数据。

异常发生时的处理:当异常发生时需要做的事情,这里一般改变一个变量的值来记录异常已经发生了,如如 SET flat = 1 详细用法查看下面的例子。

5、关闭游标

实战代码:

完毕,看懂没,如果没看懂没关系,游标处理是一套固定的格式,按照上面例子中固定的格式套入到你的程序就可以了。

mysql中游标

下面是一个 MySQL 的 游标处理的 例子代码。 你参考参考看看。

mysql DELIMITER //

mysql CREATE PROCEDURE TestCursor()

- BEGIN

-

- DECLARE v_id INT;

- DECLARE v_value VARCHAR(10);

-

- -- 游标控制的标志

- DECLARE no_more_departments INT;

-

- -- 定义游标.

- DECLARE c_test_main CURSOR

- FOR

- SELECT id, value FROM test_main;

-

- -- 当游标没有数据的时候

- -- 设置 no_more_departments = 1

- DECLARE CONTINUE HANDLER

- FOR

- NOT FOUND SET no_more_departments=1;

-

- -- 设置初始标志位,认为游标是有数据的.

- SET no_more_departments=0;

-

- -- 打开游标

- OPEN c_test_main;

-

- -- 获取游标数据

- FETCH c_test_main INTO v_id, v_value;

-

- -- 循环所有的行

- WHILE no_more_departments = 0 DO

- -- 输出调试信息

- SELECT v_id, v_value;

-

- -- 获取游标数据

- FETCH c_test_main INTO v_id, v_value;

- END WHILE;

-

- -- 关闭游标

- CLOSE c_test_main;

- END//

Query OK, 0 rows affected (0.00 sec)


标题名称:怎么修改mysql的游标 mysql中游标的作用
URL标题:http://ybzwz.com/article/ddccjdd.html