zoukankan      html  css  js  c++  java
  • SQL基础-游标&事务

    一、游标

    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
  • 相关阅读:
    20165329 《Java程序设计》第九周学习总结
    20165329 四则运算2
    20165329 第八周补做
    20165329 《Java程序设计》第八周学习总结
    2017-2018-2 学号20165329 实验二《Java面向对象程序设计》实验报告
    20165329 结对编程项目-四则运算
    20165329 第七周学习总结
    20165329 第六周学习总结
    20165329 实验一 java环境的熟悉
    20165329 第五周学习总结
  • 原文地址:https://www.cnblogs.com/weiyiming007/p/11447121.html
Copyright © 2011-2022 走看看