视图是根据预定义的查询建立起来的一个表,它的定义以模式对象的方式存在。同基表一样,视图包含一系列带有名称的列和行数据,但是与持久基表不同的是,在视图中没有存储任何数据。行和列的数据来自由定义视图的查询所引用的基表,并且在应用视图时动态生成。而正是由于视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中,所以说视图是一个虚拟表。
对其中多引用的基表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其他数据库的一个或多个表,或者其他视图。也就是说,视图是数据库中某些表或其他视图中数据的特定子集。一旦定义了一个视图,就可以像使用基本表一样使用它。
1.了解视图
视图结合了基表和查询两者的特性:用户可以从一个或者多个相关的基表中提取一个数据集(查询特性);用户能运用视图去更新视图中的信息,并且永久地存储结果到磁盘(表特性)。
视图也可用作安全机制,方法是允许用户通过视图访问数据,而不授予用户直接访问基表的权限。
视图的优点主要表现在一下几点:
数据集中显示:视图使用户着重于他们感兴趣的某些特定数据和他们所负责的特定任务,可以提高数据操作效率。
简化对数据的操作:视图可以大大简化用户对数据的操作。可以经常使用连接、投影、联合查询或选择查询定义视图,这样在每次执行相同的查询时,不必重新写这些复杂的查询语句,只要一条简单的查询视图语句即可。可见视图向用户隐藏了表与表之间的复杂的连接操作。
自定义数据:视图能够让不同的用户以不同的方式看待不同或相同的数据集。即是不同水平的用户共同用一数据库时也是如此。
导出和导入数据:可以使用视图将数据导出至其他应用程序。
合并分割数据:在某些情况下,由于表中数据量太大,在表的设计过程中可能需要经常将表进行水平分割或垂直分割,然而这样表的结构的变化会对应用程序产生不良的影响。使用视图就可以重新保持原有的结构关系,从而使外模式保持不变,原有的应用程序仍可以通过视图来重载数据。
安全机制:视图可以作为一种安全机制。通过视图用户只能查看和修改他们所能看到的数据。其他数据库或表既不可见也不可以访问。如果某一用户想要访问视图的结果集,必须授予其访问权限。视图所引用表的访问权限与视图权限的设置互不影响。
2.视图操作
2.1“增”操作
创建可更新视图的基本语句:
CREATE VIEW <view_name> [(<view_column_name>)]
AS <query_expression>
[WITH CHECK OPTION]
其中,占位符<view_name>表示所创建的视图的名称,占位符<view_column_name>表示视图提供的列名,占位符<WITH CHECK OPYION >表示通过视图修改行时,确认提交修改后,仍可通过视图看到修改的数据。
例如,在数据库“销售管理系统”中创建一个名为“客户_VIEW”的视图,该视图包含列“业务员编号”和“接待顾客人数”,其执行语句如下:
CREATE VIEW 客户_VIEW(业务员编号,接待顾客人数)