数据库视图与索引
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