视图、索引和数据库表之间的关系
1 表
- 数据库中的数据都存储在表中;
- 表示物理存储的,真实存在的。
2 视图
2.1 视图的定义
视图:视图本身就是一张虚拟表,其内容与真实表类似,包含一些列带有名称的列和行数据。视图并不在数据库中以存储数据值的形式存在。行和列数据来定义视图的查询所引用基本表,并且在具体引用视图时动态生成。
- 视图是基于SQL语句的结果集的可视化表;
- 包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。
- 视图是逻辑概念,并非真实存在,它不同于一张物理表,它是一个逻辑表。
- 视图是SQL集,它表示的事对一个SQL查询的结果。
2.2 视图的特点
- 视图的列可以来自于不同的表,是表的抽象在逻辑意义上建立的新关系;
- 视图是由基本表(是表)产生的表(虚表);
- 视图的建立和删除不影响基本表;
- 对视图内容的更新(添加、删除、修改)直接影响基本表;
- 当视图来自多个基本表时,不允许添加和删除数据。
2.3 创建视图的 SQL 语句
2.3.1 创建视图
create view View-name [参数列表]
as select [查询列表] from 表名;
2.3.2 查询视图
select [视图列表] from 视图名
2.3.3 创建各种视图表
1、封装实现查询常量语句的视图,即常量视图,语句如下:
create view view_test1
as select 3.2415926;
2、封装使用聚合函数(sum、min、count、max等)查询语句的视图,语句如下:
select view view_test2
as select count(name) from t_student;
3、封装了实现排序功能(order by)查询语句的视图,语句如下:
create view view_test3
as select name
from t_student
order by id desc;
2.3.4 删除视图
drop view view_name[,view_name2,view_name3];
2.3.5 修改视图
1、create or replace view 语句来修改视图:
对于已经修改好的视图,尤其是已经存在大量的数据视图,可以先删除在创建视图:
drop view view_selectproduct; //删除已创建好的视图
create view view_selectproduct
as
select name
from t_product;
或者可以使用create or replace语句俩创建视图:
create or replace view view_selectproduct
as
select name
from t_product;
2、alter 语句修改视图
alter view view_name
as select name from t_product;
视图的增删改查和表的增删改查大致相同,这里就不详细记录了。
3 索引
3.1 索引的定义
数据库索引通俗的讲就是和书本的目录一样,只要就是为了提高查询数据的效率。由于数据存储在数据库表中,所以索引是创建在数据库表对象上,有表中的一个字段或多个字段生成的键组成,由表中的一个或多个字段生成的键组成,这些键存储在数据结构(B-树或hash表)中,通过MySQL可以快速有效地查找和键值相关联的字段。根据索引的存储类型,可以将索引分为B型树索引(Btree)和哈希索引(hash)。MySQL中支持的索引有6中,分别是普通索引、唯一索引、全文索引、单列索引、多列索引和空间索引。
3.2 索引的特性
- 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。(是为了快速查询而针对某些字段建立起来的)
- 更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于缩影本身也需要更新。