一、存储过程
1. 简介
存错过程四 SQL 语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理(对数据的同一个操作仅在第一次产生编译)。以下为存储过程的优点:
- 增强 SQL 语句的宫娥能和灵活性
- 实现较快的执行速度
- 减少网络流量
2. 语法
操作 | 描述 |
---|---|
创建 | CREATE [DEFINER = {user/CURRENT_USER}] PROCEDURE sp_name ([proc_paramter[,…]]) [characteristic …] routine_body; proc_parameter(参数说明): [IN]参数需在调用时指定 [OUT]存储过程参数可被改变并返回 [INOUT]调用时指定,存储过程参数可被改变并返回 characteristic(特性): COMMENT:注释 CONTAINS SQL:包含 SQL 语句,但不包含读或写数据的语句 NO SQL:不包含 SQL 语句 EREADS SQL DATA:包含读数据的语句 MODIFIES SQL DATA:包含写数据的语句 SQL SECURITY {DEFINER/INVOKER} 指明谁有权限来执行 routine_body(过程体): Ⅰ. 合法 SQL 语句构成,包括任意增删改查,多表连接的操作语句 Ⅱ. 复合结构 BEGIN…END,包含声明/循环/控制结构 |
3. 变量
类型 | 描述 |
---|---|
局部变量 | 声明与 BEGIN…END 之间的变量 |
用户变量 | 以‘@’符号开头的变量 |
二、存储引擎
1. 简介
MySQL 可以将数据以不同的技术存储在文件(内存)中,这种技术被成为存储引擎;每一种存储引擎使用不同ing的存储机机制、索引技巧、锁定水平,最终提供广泛且不同的功能。以下为 MySQL 常用的存储引擎:
引擎 | 描述 |
---|---|
MyISAM | |
InnoDB | |
Memory | |
CSV | |
Archive |
2. 相关知识点
2.1 并发控制
当多个连接对记录进行修改时保证数据的一致性和完整性
相关提及 | 描述 |
---|---|
锁 | [共享锁] 多处读取同一个资源,且读取过程数据不会发生任何变化 [排他锁]当且仅有一个用户能写入资源,写入时将阻塞其他读写操作 |
锁颗粒/单位 | [表锁] 最小开销 [行锁] 最大开销 |
2.2 事务
事务用于保证数据库的完整性
- 原子性(Atomicity)
- 一致性(Consistency)
- 隔离性(Isolation)
- 持久性(Durability)
2.3 外键
保证数据一致性的策略
2.4 索引
对数据表中一列或多列的值进行排序的一致结构
- 普通索引
- 唯一索引
- 全文索引
- btree 索引
- hash 索引
…
3. 特点
特点 | MySISAM | InnoDB | Memory | Archive |
---|---|---|---|---|
存储限制 | 256TB | 64TB | 内存大小为上限 | 无 |
事务安全 | - | 支持 | - | - |
支持索引 | 支持 | 支持 | 支持 | |
锁颗粒 | 表锁 | 行锁 | 表锁 | 行锁 |
数据压缩 | 支持 | - | - | 支持 |
支持外键 | - | 支持 | - | - |
4. 修改设置引擎
- 配置文件实现修改
- default-storage-engine = engine
- 数据表命令实现修改
- CREATE TABLE tbl_name(…) ENGINE = engine;
- 数据表命令实现修改
- ALTER TABLE tbl_name ENGINE [=] engine_name;
MySQL启程学习回忆录1
MySQL启程学习回忆录2
MySQL启程学习回忆录3