博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL基础-游标&事务
阅读量:5220 次
发布时间:2019-06-14

本文共 1388 字,大约阅读时间需要 4 分钟。

一、游标

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。

转载于:https://www.cnblogs.com/weiyiming007/p/11447121.html

你可能感兴趣的文章
《代码阅读方法与实现》阅读笔记一
查看>>
解决 sublime text3 运行python文件无法input的问题
查看>>
javascript面相对象编程,封装与继承
查看>>
Atlas命名空间Sys.Data下控件介绍——DataColumn,DataRow和DataTable
查看>>
Java中正则表达式的使用
查看>>
算法之搜索篇
查看>>
新的开始
查看>>
java Facade模式
查看>>
NYOJ 120校园网络(有向图的强连通分量)(Kosaraju算法)
查看>>
SpringAop与AspectJ
查看>>
Leetcode 226: Invert Binary Tree
查看>>
http站点转https站点教程
查看>>
解决miner.start() 返回null
查看>>
关于MFC中窗口的销毁
查看>>
bzoj 2007: [Noi2010]海拔【最小割+dijskstra】
查看>>
BZOJ 1001--[BeiJing2006]狼抓兔子(最短路&对偶图)
查看>>
C# Dynamic通用反序列化Json类型并遍历属性比较
查看>>
128 Longest Consecutive Sequence 一个无序整数数组中找到最长连续序列
查看>>
定制jackson的自定义序列化(null值的处理)
查看>>
auth模块
查看>>