【正确答案】视图是由从数据库的基本表中选取出来的数据组成的逻辑窗口,它不同于基本表,它是一个虚拟表,其内容由查询定义。在数据库中,存放的只是视图的定义而已,而不存放数据,这些数据仍然存放在原来的基本表结构中。只有在使用视图的时候,才会执行视图的定义,从基本表中查询数据。
同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表而言,视图的作用类似于筛选。定义视图可以来自当前或其他数据库的一个或多个表,或者其他视图。分布式查询也可用于定义使用多个异类源数据的视图。如果有几台不同的服务器分别存储不同地区的数据,那么当需要将这些服务器上相似结构的数据组合起来的时候,这种方式就非常有用。
通过视图进行查询没有任何限制,用户可以将注意力集中在其关心的数据上,而非全部数据,这样就大大提高了运行效率与用户满意度。如果数据来源于多个基本表结构,或者数据不仅来自于基本表结构,还有一部分数据来源于其他视图,并且搜索条件又比较复杂,需要编写的查询语句就会比较繁琐,此时定义视图就可以使数据的查询语句变得简单可行。定义视图可以将表与表之间的复杂的操作连接和搜索条件对用户不可见,用户只需要简单地对一个视图进行查询即可,所以,视图虽然增加了数据的安全性,但是不能提高查询的效率。
视图看上去非常像数据库的物理表,对它的操作同任何其他的表一样。当通过视图修改数据时,实际上是在改变基表(即视图定义中涉及的表)中的数据;相反地,基表数据的改变也会自动反映在由基表产生的视图中。由于逻辑上的原因,有些Oracle视图可以修改对应的基表,有些则不能(仅能查询)。
数据库视图的作用有以下几点:①隐藏了数据的复杂性,可以作为外模式,提供了一定程度的逻辑独立性。②有利于控制用户对表中某些列或某些机密数据的访问,提高了数据的安全性。③能够简化结构,执行复杂查询操作。④使用户能以多种角度、更灵活地观察和共享同一数据。
【答案解析】