• MySQL(七) —— MySQL存储过程 & 存储引擎


    MySQL中输入语句的执行过程:

    如果我们可以将上面的过程简化,吧语法分析或者编译等步骤简化,则可以将整个流程简化。

    存储过程:

    • 是SQL语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理;
    • 增强SQL语句的功能和灵活性;
    • 实现较快的执行速度;
    • 减少网络流量
    • //创建存储过程
      CREATE 
      [DEFINER = {user | CURRENT_USER}]
      PROCEDURE sp_name ([proc_parameter[,...]])
      [characteristic ...] routine_body
      
      proc_parameter:
      [IN | OUT | INOUT ] param_name type
      //IN,表示该参数的值必须在调用存储过程时指定
      //OUT,表示该参数的值可以被存储过程改变,并且可以返回
      //INOUT,表示该参数的调用时指定,并且可以被改变和返回
      //调用存储过程
      CALL sp_name([parameter[,...]])
      CALL sp_name[()]
    • //For example:
      CREATE PROCEDURE sp1() SELECT VERSION();
      
      CALL sp1();
      //For example:
      DELIMITER //
      CREATE PROCEDURE removeUserById(IN p_id INT UNSIGNED)
      BEGIN
      DELETE FROM test WHERE id = p_id;
      END
      //
      
      DELIMITER ;
      CALL removeUserById(3);
    • 用@修饰的变量叫做用户变量,跟当前用户的客户端是绑定的。
    • 存储过程较常用,一般独立的来执行,而函数可以作为其他SQL语句的组成部分来出现;
    • 注意事项:
      • 创建存储过程或者自定义函数时需要通过delimiter语句修改定界符;
      • 如果函数体或过程提有多个语句,需要包含在BEGIN...END语句块中;
      • 存储过程需要使用call来调用。

     存储引擎:

    MySQL可以将数据以不同技术存储在文件(内存)中,这种技术就成为存储引擎;

    每一种存储引擎使用不同的存储机制、索引技巧、锁定水平,最终提供广泛且不同的功能。

    MySQL主要包括五种存储引擎:MyISAM, InnoDB, Memory, CSV, Archive;

    • 并发控制:当多个连接对记录进行修改时保证数据的一致性和完整性;
      • 共享锁(读锁):在同一个时间段内,多个用户可以读取同一个资源,读取过程中数据不会发生任何变化。
      • 排它锁(写锁):在任何时候只能有一个用户写入资源,当进行写锁时会阻塞其他的读锁或者写锁操作。
      • 锁颗粒:
        • 表锁,是一种开销最小的锁策略;
        • 行锁,是一种开销最大的锁策略。
    •  事务
      • 事务用于保证数据库的完整性
      • 事物的特性(ACID):原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)
    • 索引
      • 是对数据表中一列或多列的值进行排序的一种结构。

     

  • 相关阅读:
    python学习笔记Day3
    python学习笔记Day2
    IIS7.5部署除静态页面外都是404的解决方案
    CommandBehavior.CloseConnection有何作用
    没事别老待在家里
    冻结表格行列的思路
    如何构建逻辑清晰的可拖拽树的数据结构
    “仅次于20年前的最好的时间是现在“
    java的静态代理和2种动态代理(未完,待续)
    i++和++i
  • 原文地址:https://www.cnblogs.com/little-YTMM/p/5431189.html
Copyright © 2020-2023  润新知