视图和索引
视图
视图是一个虚拟表,其内容由查询定义。同真实表一样,视图包含一系列带有名称的列和行数据,但视图并不是数据库真实存储的数据表。
创建视图
使用CREATE VIEW语句来创建视图
CREATE VIEW <视图名> AS <SELECT 语句>
- <视图名>:指定视图的名称。该名称在数据库中必须是唯一的,不能与其它表或视图重名。
- /<SELECT 语句/>:指定创建视图的SELECT语句,可用于查询多个基础表或源视图。
CREATE VIEW view_student_info
AS SELECT * FROM tb_student_info;
视图一经定义,就可以如同查询数据表一样,使用SELECT语句查询视图中的数据,语法和查询基础表的数据一样。视图用于查询主要应用在以下几个方面:
- 使用视图重新格式化检索出的数据
- 使用视图简化复杂的表连接
- 使用视图过滤数据
查询视图
DESCRIBE 视图名;
修改视图数据
update view view_student set ename='张三',sal='1' where empno=7369;
删除视图数据
delete form view_student where empno=6379;
删除视图
DROP VIEW <视图名称>;
索引
什么是索引
索引就是根据表中的一列或若干列按照一定顺序建立的列值与记录行之间对应的关系表,实质上是一张描述索引列的列值与原表中记录行之间一一对应关系的有序表。
在MySql中,通常有以下两种方式访问数据库表的行数据:
- 顺序访问是在表中实行全表扫描,从头到尾逐行遍历,直到在无序的行数据中找到符合条件的目标数据。
- 索引访问是通过遍历索引来直接访问表中记录行的方式。
索引的分类
索引的类型和存储引擎有关,MYSQL中常用的索引在物理上分为:B-Tree索引,哈希索引。
根据索引的用途,可以在逻辑上分为5类:
- 普通索引是最基本的索引类型,唯一任务是加快对数据的访问速度,没有任何限制。创建普通索引时,通常使用的关键字是INDEX或KEY。
- 唯一性索引是不允许索引列具有相同索引值的索引。
- 主键是一种唯一性索引,即不允许值重复也不允许值为空,并且每个表只有一个主键。
- 空间索引主要用于地理空间数据类型GEOMETRY。
- 全文索引只能在VARCHARE或TEXT类型的类上创建,并且只能在MyISAM表中创建。
在实际应用中索引通常分为单列索引和组合索引。
- 单列索引就是索引只包含原表的一个列。
- 组合索引也称为复合索引或多列索引,相对于单列索引来说,组合索引是将原表的多个列共同组成一个索引。
创建索引
CREATE index <索引名> on 表名(字段名);
查看索引
SHOW INDEX FROM <表名> [FROM <数据库名>]
删除索引
DROP INDEX <索引名> on <表名>
索引底层原理
通过B Tree缩小扫描范围,底层索引进行了排序,分区,索引会携带数据在表中的"物理地址",最终通过索引检索到数据后,获取关联的物理地址,通过物理地址定位表中的数据,效率是最高的。