一、游标
1、游标简介
SQL是一种集合操作语言,但有时候需要对单行操作怎么办呢?也就是有时候会过滤出不止一行的数据,但是想一行行的处理;---游标游标: 从集合中依次提取单条记录,直接提取完最后一条; 类似于指针的作用; 尽管游标能遍历结果中的所有行,但一次只指向一行;游标的适用场景: 存储过程 函数 触发器游标的使用步骤: 定义游标 DECLARE 游标名称 CURSOR FOR SELECT子句; 打开游标 OPEN 游标名称 使用游标 FETCH 游标名称 INTO 变量名1,变量名2,变量名3[,…] 关闭游标 CLOSE 游标名称
2、游标使用的示例
##配合存储过程使用CREATE PROCEDURE cursor_student()BEGIN DECLARE v_student_id varchar(50); DECLARE v_student_name varchar(100); DECLARE done INT DEFAULT false; DECLARE mycursor CURSOR FOR SELECT student_id,student_name FROM student WHERE score >= 90; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = true; OPEN mycursor; FETCH mycursor INTO v_student_id,v_student_name; WHILE(NOT done) DO SELECT v_student_id,v_student_name; FETCH mycursor INTO v_student_id,v_student_name; END WHILE; CLOSE mycursor;END;
3、游标的优缺点
优点: 提供了一种除集合操作外的行操作方式;缺点: 性能一般,数据量比较大的时候,还可能会造成内存不足;
二、事务
1、事务简介
事务是一种处理机制,它保证了要执行的一组操作,要么全部执行成功,要么全部执行不成功。事务用来管理INSERT、UPDATE、DELETE语句。在MySQL中,只有使用了Innodb存储引擎的数据库或表才支持事务。事务的四个特性(ACID): 原子性(Atomicity) 要执行的一组操作,要么全部执行成功,要么全部执行不成功。如果中间一个操作执行失败,则前面已经执行成功的语句也会被回退。 一致性(Consistency) 事务开始前和执行后,并没有破坏数据的完整性。 隔离性(Isolation) 多个事务之间是相互隔离的,不会相互影响。 持久性(Durability) 事务执行结束后,数据就被永久保存在了数据库中,即使数据库出错、重启,数据也不会丢失。事务控制: 开始一个新事务:BEGIN。 回滚当前事务:ROLLBACK。 提交当前事务:COMMIT。