zoukankan      html  css  js  c++  java
  • Mysql存储引擎

    Mysql存储引擎

    Mysql 支持的存储引擎

    1.存储引擎

    • MyISAM
    • InnoDB
    • Memory
    • CSV
    • Archive

    MyISAM:存储限制256TB,支持索引,表级锁定,数据压缩。

    InnoDB: 存储限制64TB,支持事务和索引,索颗粒为行锁。

    2.锁的分类

    • 共享锁(读锁):在同一时间段内,多个用户可以读取同一个资源,读取过程中数据不会发生任何变化。
    • 排它锁(写锁):在任何时候只能有一个用户写入资源,当进行写锁时会阻塞其他的读锁或者写锁操作。

    3.锁颗粒

    • 表锁:是一种开销最小的锁策略。
    • 行锁:是一种开销最大的锁策略。

    4.事务

    事务:用于保证数据库的完整性。如:A用户给B用户转账200元。A用户减掉200,B用户增加200.

    事务的特性:

    • 原子性
    • 一致性
    • 隔离性
    • 持久性

    5.存储引擎的特点

    修改存储引擎:

    (1.) 修改mysql配置文件:default-storage-engine=engine

    (2.)通过创建数据表命令来实现:

    CREATE TABLE table_name (
    	...
    )ENGINE=engine;
    

    (3.) 修改数据表命令

    ALTER TABLE table_name ENGINE = engine_name;
    

    6.内置函数

    字符串函数、数值函数、日期时间函数、加密函数。

    (1.)创建自定义函数

    CREATE FUNCTION function_name
    RETURNS
    {STRING|INTERGER|REAL|DECIMAL}
    routine_body
    

    (2.)函数体

    函数体由合法的SQL语句构成,函数体可以是简单的SELECT和INSERT,如果为复合体则使用BEGIN...END语句,复合结构可以包含声明,循环,控制语句。

    CREATE FUNCTION f1() RETURNS VARCHAR(30)
    RETURN DATE_FORMAT(NOW(),'%Y年%m月%d日 %H:%i分:%s秒');
    
    SELECT f1(); -- 查看方法返回
    
    DROP f1();   -- 删除方法
    

    示例二:

    CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED)
    RETURNS FLOAT(10,2)UNSIGNED
    RETURN (num1+num2)/2;
    

    7.Mysql执行过程

    graph LR A(SQL命令) -->B(MySQL引擎) B --> C{语法正确} C --> |正确| D(可识别的指令) D --> |执行| E(执行结果) E --> |返回| F(客户端)

    8.存储过程

    (1.)存储过程的优点

    • 增强SQL语句的功能和灵活性
    • 实现较快的执行速度
    • 减少网络流量

    (2.)创建存储过程

    CREATE
    [DEFINER = {USER|CURRENT_USER}]
    PROCEDURE sp_name ([proc_parameter[,...]])
    [characteristic...]routine_body
    
    pro_parameter:
    [IN|OUT|INOUT]param_name_type
    
    COMMENT:注释
    CONTAINS SQL:包含sql语句,但不包含独活写数据的语句
    NO SQL:不包含SQL语句
    READS SQL DATA:包含读数据的语句
    MODIFIES SQL DATA:包含写数据的语句
    SQL SECURITY{DEFINEER|INVOKER}知名谁有权限执行
    

    (3.)调用存储过程

    call sp_name([parameter[...]])
    call sp_name[()]
    

    (4.) 示例

    DELIMITER //  -- 修改默认的结束符号为//,执行完后改回分号。delimiter ;
    CREATE PROCEDURE removedUserById(IN id INT UNSIGNED)
    BEGIN
    DELETE FROM USERS WHERE ID = id;
    END
    //
    
    -- 执行调用 --
    call removedUserById(3)
    

    (5.)修改、删除存储过程

    ALTER PROCEDURE ...
    DROP PROCEDURE [IF EXISTS] sp_name
    
    【励志篇】: 古之成大事掌大学问者,不惟有超世之才,亦必有坚韧不拔之志。
  • 相关阅读:
    165. Compare Version Numbers
    164. Maximum Gap
    3、桶排序
    162. Find Peak Element
    160. Intersection of Two Linked Lists
    155. Min Stack
    154. Find Minimum in Rotated Sorted Array II
    153. Find Minimum in Rotated Sorted Array
    Linux/Unix系统编程手册 第二章:基本概念
    Linux/Unix系统编程手册 第一章:历史和标准
  • 原文地址:https://www.cnblogs.com/tomtellyou/p/14466433.html
Copyright © 2011-2022 走看看