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
【励志篇】: 古之成大事掌大学问者,不惟有超世之才,亦必有坚韧不拔之志。
原文地址:https://www.cnblogs.com/tomtellyou/p/14466433.html