一、MySQL高级
1. 视图
理解
简化查询的过程,其结果是提供数据查询的安全性的虚拟表,视图中保存的仅仅是一条select语句,保存的是视图的定义,并没有保存真正的数据。所以视图称为虚拟表。
作用
1. 确保数据的安全性,防止未经允许访问到敏感数据
2. 封装了查询的过程,简化sql语句
3. 视图屏蔽了真实的表结果
使用
2. 存储过程
理解
是一种存储复杂的程序,便于外部调用的对象。类似于Java中的方法。存储过程完成特定功能的SQL语句集,用户可以通过调用传参执行存储过程
作用
1. 提高SQL语句的封装和重用
2. 存储过程是安全的
使用
3. 触发器
理解
是一个特殊的存储过程,不需要手动调用,而是被自动调用的存储过程
作用
1. 监听数据表表中数据变化的
2. 当数据发生某种变化触发触发器执行
3. 协助应用对数据操作的完整性
触发触发器时机
before insert
after insert
before delete
after delete
before update
after update
使用
4. 存储引擎
理解:
存储库 表和数据的相关结构
分类
MyISAM
表名.frm:存储表结构(列名、类型等)
表名.MYI:存储表的索引信息
表名.MYD:存储表中数据
特点:
1. 做插入 查询效率高
2. 不支持事务 外键
3. 支持全文索引 表级锁
InnoDB
表名.frm:存储表结构(列名、类型等)
ibdate1:共享表空间 存储所有数据和索引信息
特点:
1. 支持事务 外键
2. 不支持全文索引
3. 支持行级锁,在高并发的情况下效率高
5. 索引
理解
是一种特殊的文件,包含对数据的引用指针。通俗的理解 索引类似于一本书的目录。目的加快数据库的查询效率。
分类
主键索引 : 唯一不能为null 一个表一个 加快了查询
唯一索引 : 唯一但是可以为null 一个表可以多个 加快了查询
外键索引 : 关联表
普通索引 : 加快查询
组合索引 : 多条件查询 加快查询
需要创建索引
1. 主键索引 每一个表创建
2. 频繁的作为条件的字段 创建索引 提高查询效率
3. 作为排序条件的字段 创建索引 提高排序效率
4. 作为分组字段 统计字段 创建索引
5. 与其他表有关系的字段 指定外键索引
最好不创建索引
1. 表的数据比较少
2. 经常增删改的表或者字段
3. where条件中不用的字段
6. 锁机制
理解:
锁计算机协调多个进程或线程并发访问同一个资源的一种处理机制。数据也是多用户共享的资源,保证数据的一致性 有效性。
锁的分类:
1. 多数据操作类型分为:读锁 和 写锁
读锁(共享锁):针对同一份数据 多个读操作可以同时进行而且不会相互影响
写锁(排它锁):当前写操作没有完成,阻断其他的写操作
select ..... for update
2. 范围分类
表锁 对表加锁
行锁 对行数据加锁
3. 用法:
悲观锁
乐观锁
间隙锁 select .... where id >= 100 for update
死锁
二、总结
SQL语句
DDL、DML(重点)、DQL(重点)、DCL、事务(重点)
高级(了解):
视图、存储过程、触发器、存储引擎、索引、锁机制