视图是由存储在数据库中的查询定义的虚拟表(Virtual Table)。视图所对应的查询称为视图定义,它规定了如何从一个或几个基本表(Base Table)中导出视图。在数据库中只存放视图的定义,不存放视图对应的数据,数据仍存放在导出视图的基本表中。修改基本表中的数据,相应视图中的数据也随之改变。视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据。
在SQL 中,定义视图是设计数据库外模式的基本手段。视图能够为数据库系统提供以下优势。
1.数据的逻辑独立性
当数据库的模式结构发生变化时,只需调整外模式到模式的映射关系,而无须改变外模式的定义。这样做的目的是保证用户的应用程序不必重新编写。视图作为虚拟表,其定义实际上就是外模式到模式的映射。有了视图,就可以在不改变基本表结构的前提下,仅通过修改视图的定义就能够更新这种映射关系,从而实现数据的逻辑独立性。
2.用户操作的简化
在实际的数据库系统中,全部基本表的结构和联系往往很复杂。通常不同部门的用户只对数据库中的一部分数据感兴趣。视图机制正好适应了用户的这种需要。为不同的用户定义各自的视图,使用户可以将注意力集中在所关心的数据上,用户所做的只是对虚拟表的查询,而这个虚拟表是怎样得到的,用户无须了解。
3.数据的安全保护
视图机制还能够为数据提供一定的安全保护功能,只给用户访问视图的权限,对用户保密的基本表不为其定义视图。这样用户只能透过视图访问到其所需的那部分数据,而不会影响到其他数据。