1.索引
文章目录
- 1.索引
- 2 视图
1.1 索引概述
索引是一种数据结构
索引分为BTree索引,Hash索引,RTree索引(空间索引),Full-text索引(全文索引)
而Mysql默认为BTree索引,Mysql默认引擎为InnoDB
Btree索引和B+树请看数据结构的详细
这里只是简单的说一下BTree数和B+Tree的区别.
B树由于叶子节点和其他节点都有数据索引存储的数据的量比不上B+树。B+树只有叶子节点放的是数据,而其他的节点放的都是键值和指针
1.2 索引的分类
- 单值索引:即一个索引只包含单个列,一个表可以有多个单列索引
- 复合索引:与上面的单值索引做对比,为几个列形成的索引
- 唯一索引:用唯一的列做的索引,比如id,telephone,身份证号
- 主键索引:一般用主键当的索引.如果一个表不指定索引的话也会有主键索引
- 聚簇索引:数据和索引放在一起的,Innodb默认支持聚簇索引
- 非聚簇索引
- 覆盖索引
1.3 索引的语法
准备环境:
1.3.1 创建索引:
1.3.2 查看索引:
1.3.3 删除索引
1.3.4 更改索引
1.4 索引创建规则
不需要建索引:
- 数据量小
- 经常增删改的表
- where条件里用不到的字段不创建索引
需要:
- where条件后字段建索引
- 频率高,数据量大
- 尽量使用唯一索引,区分度高,查询效率大
索引也是数据结构,多了占空间,经常增删改的表不适合建索引
尽可能建立短索引
2 视图
View
是一种虚拟的表,是一条select语句执行后的结果集。
视图:简单,安全,数据独立
2.1 创建视图
2.2 查看视图
2.3 删除视图
2.4 利用视图
3.存储过程与存储函数
调用存储过程和函数可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。
存储过程和函数的区别在于函数必须有返回值,而存储过程没有。
函数 : 是一个有返回值的过程 ;
过程 : 是一个没有返回值的函数 ;
3.1 创建存储过程
比如
3.2 调用存储过程
3.3 查看储存过程
3.4 删除存储过程
4. 存储函数
比如
调用
5.触发器
触发器是与表有关的数据库对象,指在 insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性 , 日志记录 , 数据校验等操作 。
使用别名 OLD 和 NEW 来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只支持行级触发,不支持语句级触发。
5.1 创建触发器
需求:
通过触发器记录 emp 表的数据变更日志 , 包含增加, 修改 , 删除 ;
创建一张日志表
创建insert触发器
创建update触发器
创建delete触发器
测试
5.2 删除触发器
5.3 查看触发器