zoukankan      html  css  js  c++  java
  • 存储过程,函数,事务---随笔

    数据库随笔

    一、存储过程

    1.创建

    create proc 名称 (参数1...参数n)

    begin

    sql

    end;

    参数书写方式:[in|out|inout] 参数名 类型

    注:sql默认(;)作为结束符,可以修改为 $$,  使用关键字 delimiter ,例:delimiter $$

    2.调用

      call 名称(@参数名)

      一般参数名前默认@,算是一种规范

    二、函数

    1.与存储过程的区别:必须有返回值

    2.创建:

    create func 名称 (参数1...参数n)

    begin

    sql

    end;

    参数书写方式: 参数名 类型

    三、操作变量  

    1.声明:declare 名字 类型 默认值 例:declare aaa int default 100;

    2.赋值:set 变量 = 表达式 多个使用逗号隔开 例 :set aaa = 200;

                  也可以用到select语句中 select 字段 into 变量 from 表名 where 条件    前提是select查询结果是单行

        例: select sal into aaa from 表名 where id = 1;

    四:操作条件

    1.条件定义: declare 条件名 Condition For 值

        值有两种类型 (1)sqlstate_value (2)mysql_error_code   不明白自行百度或者翻书

    2.处理程序定义:declare 处理类型 Handler For 值

           处理类型有三种(1)continue(2)exit(3)undo

        值有(1)sqlstate_value(2)条件名 --也就是上边的条件,可以自己定义一个(3)sqlwarning

          (4)not found --遍历游标时经常使用,作为一种标记(5)sqlException(6)mysql_error_code

    五:游标 --类似指针|数组的下标

    1.声明:declare 游标名 Cusor For select语句

    2.打开:open 游标名 --打开游标指向第一条记录之前

    3.使用:fetch 游标名 into 变量名

    4.关闭: close 游标名

    5.遍历游标的三种方式:

    (1)while ... end while  例:while flag = 1 do 自定义语句 end  while  -- flag什么时候为1呢(遍历完成),就是满足你的处理程序(比如 not found)|条件

    (2)loop ... end loop

    (3)repeat ... end repeat

    六:流程控制语句

    1.条件控制语句

    (1)if

    例: if 条件 then 语句

       [elseif 条件 then 语句]

       [else 语句]

       end if;

    (2)case

    例:case 值

        when 条件 then 语句

        ...

        else 语句

      end case;

    2.循环控制语句

    (1)loop  (2)while  -> 满足条件->执行  (3)repeat -> 满足条件 -> 退出

    (1)loop 

      例: [begin_label:]loop

          语句

        end loop [end_label]

      注:begin_label 和  end_label 作为开始或者结束的标记,且必须相同,可省略

        想退出循环 使用leave关键字 例 leave flag = 1

    (2)while  

    [begin_label:] while 条件 do 语句

        end while [end_label]

    (3)repeat

    [begin_label:] repeat条件 do 语句

        end repeat [end_label]

    注: 跳出时 until 条件 例 until flag = 1

    七:事务

    1.特性

    (1)原子性 A(2)一致性 C(3)隔离性 I(4)持久性 D

    2.与事务相关的日志 :redo日志 和 undo 日志

    3.隔离级别:

    id  name

    1 zhangsan

    2 lisi

    3 wangwu

    (1)读未提交-> 脏读 例: a 开启事务将zhangsan 更新成zhangsansan b事务这时读取是zhangsansan a这时没有提交,回滚事务了,这个过程b是看到的数据并不是真实的,称为脏读

    (2)读已提交 -> 不可重复读 例: a 开启事务 select查看三条数据 ,b 开启事务把 zhangsan 更新为 zhangsansan 并提交 ,a 这是select 三条数据和上次看到的不一样,称为不可重复读

    (3)可重复读->幻读 例:a开启事务 select 三条数据 ,b 开启事务insert 一条数据并提交,a 再select依旧是三条(a再没提交之前保证读取到的一样),a提交事务,a 再select 是四条,三四不一致,称为幻读

    (4)可串行化

    ddl语句会造成事务的隐式提交

  • 相关阅读:
    用 Python 带你看各国 GDP 变迁
    Fluent Interface(流式接口)
    probing privatePath如何作用于ASP.NET MVC View
    Word插入htm文件导致文本域动态增加的一个问题
    Visual Studio 2013附加进程调试IE加载的ActiveX Control无效解决方法
    Ubuntu下Chrome运行Silverlight程序
    Windows Phone Bing lock screen doesn't change解决方法
    SPClaimsUtility.AuthenticateFormsUser的证书验证问题
    Web Service Client使用Microsoft WSE 2.0
    Visual Studio 2013安装Update 3启动crash的解决方法
  • 原文地址:https://www.cnblogs.com/zkhbalance/p/10747298.html
Copyright © 2011-2022 走看看