和我一起迎接明天的太阳吧

klaus08

焦虑源于行动的匮乏

MySQL(五)

游标

游标(cursor)是一个存储在MySQL服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。

有时,需要在检索出来的行中前进或后退一行或多行。这就是使用游标的原因。

MySQL中游标只能用于存储过程。

声明游标

CREATE PROCEDURE 存储过程名()
BEGIN
	DECLARE 游标名 CURSOR
	FOR
	SELECT 列名
	FROM 表名
END;

打开游标和关闭游标

OPEN 游标名;

CLOSE 游标名;
-- 如果你不明确关闭游标,MySQL将会在到达END语句时自动关闭它。

使用游标数据

使用游标数据的前提是,已经打开了游标,然后使用FETCH语句逐行访问。

CREATE PROCEDURE processorders(oBEGIN
-- Declare local variablesDECLARE o INT;
-- Declare the cursor
DECLARE ordernumbers CURSORFOR
SELECT order_num FROM orders;
-- open the cursor
OPEN ordernumbers;
-- Get order number
FETCH ordernumbers INTO o ;
-- Close the cursor
CLOSE ordernumbers;
END;

待补

触发器

在某个表发生更改时自动处理,这确切地说就是触发器。

触发器值响应DELETE,UPDATE,INSERT这三种操作,可以选择在这三种操作之前或之后响应,也就是说每个表至多有六个触发器。

触发器名必须在每个中唯一,而不是整个数据库。

只有才支持触发器,视图不行。

创建触发器

CREATE TRIGGER 触发器名 BEFORE/AFTER
INSERT/UPDATE/DELETE ON 表名
[FOR EACH ROW] 响应动作

删除触发器

DROP TRIGGER 触发器名;

INSERT触发器

​ 在INSERT触发器内,可以引用一个名为NEW的的虚拟表访问被插入的行;

​ 在BEFOREINSERT触发器中,NEW中的值可以被改变;

DELETE触发器

​ 在DELETE触发器内,可以引用一个名为OLD的虚拟表访问被删除的行;

​ OLD中的值不可更改。

UPDATE触发器:

​ 在UPDATE触发器内,可以用OLD表访问更改前的值,使用NEW表访问更改后的值;

​ NEW中的值可以被改变;OLD中的值不可更改。

posted @ 2021-07-08 10:15  klaus08  阅读(32)  评论(0编辑  收藏  举报