外观
视图概述
视图是一个虚拟表,是从数据库中的一个或多个表中导出来的表,其内容由查询语句定义。同真实的表一样,视图包含一系列的行列数据。但是,数据库中只存放了视图的定义,而没有存放视图中的数据。这些数据还存在原来的表中。使用视图查询数据时,数据库系统会在原来的表中取出对应的数据。因此,视图的数据是依赖于原来的表中的数据的。一旦表中的数据发生改变,显示在视图中的数据也会发生改变。
视图是保存在数据库中的查询SQL语句,它的存在主要出于两个原因:首先是安全原因,视图可以隐藏一些数据,例如,它可以用视图显示员工信息表中的姓名、工龄、地址而不显示社会保险号和工资等;另一个原因是它可使复杂的查询易于理解和使用。
对所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其他数据库的一个或多个表,或者其他视图。通过视图进行查询没有任何限制,通过视图修改数据时的限制也很少,视图的作用可以总结为以下几点:
1. 简单性
看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。可以将经常使用的查询定义为视图,这样用户就不必为以后的操作每次都指定全部的条件。
2. 安全性
视图的安全性可以防止未授权用户查看特定的行或列,使有权限的用户只能看到表中特定行的方法如下:
(1) 在表中增加一个标志用户名的列。
(2) 建立视图,使用户只能看到标有自己用户名的行。
(3) 把视图授权给其他用户。
3. 逻辑数据安全性
视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,程序一定是建立在表上的。有了视图之后,程序可以建立在试图之上,从而使程序与数据库表被视图分割开来。视图可以在以下几个方面与数据独立。
(1) 如果应用建立在数据库表上,当数据库表发生变化时,可以在表上建立视图,通过视图屏蔽表的变化,从而使应用程序不动。
(2) 如果应用建立在数据库表上,当应用发生变化时,可以在表上创建视图,通过视图屏蔽应用的变化,从而使数据库表不动。
(3) 如果应用建立在视图上,当数据库表发生变化时,可以在表上修改视图,通过视图屏蔽表的变化,从而使应用程序不动。
(4) 如果应用建立在视图上,当数据库表发生变化时,可以在表上修改视图,通过视图屏蔽表的变化,从而使应用程序不动。