数据库视图与索引
1.视图
1.1视图介绍
数据库中的视图是一个虚拟表。同真实地表格一样,包含一系列带有名称的行和列数据。行和列数据来自由定义视图查询所引用的表,并且在引用视图时,动态生成。 视图是一个虚拟表,是从数据库中的一个或多个表中导出来的表。它可以从已经存在的视图的基础上定义。一旦定义后便存储在数据库中,与其对应的数据并没有像表那样在数据库中再存储一份,通过视图看到的数据知识放在基本表中的数据。对视图的操作与对表的操作一样,可以查询、修改、删除。当通过视图看到的数据进行变化时,相应的基本表中的数据也要发生变化;同时,若基本表的数据发生变化,则这种变化会自动反映到视图中。
1.2优点
1.简单化 视图不仅可以简化用户对数据的理解,也可以简化 它们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必 为以后的操作每次指定全部的条件。 2.安全性 通过视图用户只能查询和修改他们所能见到的数据。数据库中的其他数 据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限 制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。通过 视图,用户可以被限制在数据的不同子集上: (1)使用权限可被限制在基表的行的子集上。 (2)使用权限可被限制在基表的列的子集上。 (3)使用权限可被限制在基表的行和列的子集上 (4)使用权限可被限制在多个基表的连接所限定的行上。 (5)使用权限可被限制在基表中的数据的统计汇总上。 (6)使用权限可被限制在另一视图的一个子集上,或是一些视图和基 表合并后的子集上。 3.逻辑数据独立性 视图可帮助用户屏蔽真实表结构变化带来的影响。
1.3对视图的操作
create view v_sanguo as select * from sanguo where id <10;
select * from v_sanguo;
create or replace view v_sanguo(Id,name,Zi,Sex)
as select id,sname,zi,sex from sanguo where id < 9;
alter view v_sanguo(hao,nm,zihao,xing)
as select id,sname,zi,sex from sanguo where id<4;
create view v_student_sc (name,sum,min,avg)
as select student.SId,sum(score),min(score),avg(score) from student,sc
where student.SId = sc.SId and student.SId = '01' group by sc.SId;
select * from v_student_sc;
drop view v_student;
show create view v_student_sc;
2.索引
2.1 索引介绍
索引是一种特殊的数据库结构,可以用来快速查询数据库表中的特定记录。索引是提高数据库性能的重要方式。MySQL中,所有的数据类型都可以被索引。MySQL的索引包括普通索引、惟一性索引、全文索引、单列索引、多列索引和空间索引等。 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。
模式(schema)中的一个数据库对象 在数据库中用来加速对表的查询 通过使用快速路径访问方法快速定位数据,减少了磁盘的I/O 与表独立存放,但不能独立存在,必须属于某个表 由数据库自动维护,表被删除时,该表上的索引自动被删除。 索引的作用类似于书的目录,几乎没有一本书没有目录,因此几乎没有一张表没有索引。
2.2索引的优缺点
优点: (1)通过创建唯一索引,可以保证数据库表中每一行数据的唯一性。 (2)可以大大加快数据的查询速度,这也是创建索引的主要原因。 (3)在实现数据的参考完整性方面,可以加速表和表之间的连接。 (4)在使用分组和排序子句进行数据查询时,也可以显著减少查询中 分组和排序的时间。 缺点: (1)创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费 的时间也会增加。 (2)索引需要占磁盘空间,除了数据表占数据空间之外,每一个索引 还要占一定的物理空间,如果有大量的索引,索引文件可能比数据文件更快 达到最大文件尺寸。 (3)当对表中的数据进行增加、删除和修改的时候,索引也要动态地 维护,这样就降低了数据的维护速度。
未完,继续补充!;
|